Azure AI 언어 서비스의 질문 응답 기능을 사용하면 사용자가 자연어를 사용하여 질문하고 적절한 답변을 받는 애플리케이션을 만들어보는 과정이다. 미리 자료를 주어서 학습시켜서 그거에 대한 질문과 응답을 만들어주는 것도 할 수 있다.
Azure 포털에서 "Azure AI Services"를 검색해서 언어 서비스를 선택한 뒤에 리소스를 만들어줬다.
이 때 사용자 지정 질문 답변은 선택해준다.
그러고 나서 Azure Language Studio에 접속해서 Create new를 선택해준다.
여기서 3번째 것 선택해줬고, 만들어지면 새 프로젝트를 만드는 곳에 가서
언어는 한국어로 하고 프로젝트 이름과 설명, 답 없을 때 메시지를 설정했다.
학습에 사용할 소스를 입력해줬는데, 랩에서는
https://docs.microsoft.com/en-us/learn/support/faq
를 입력하라고 했으나, 나는 한국어로 진행할 것이기에
https://docs.microsoft.com/ko-kr/learn/support/faq
를 넣어줬다.
Chit chat은 Friendly로 하라고 했는데 어떤 차이가 있는지는 연구해봐야겠다.
Edit knowledge base 페이지에서는 질문과 답변을 추가할 수 있따.
Add alternate question에서는 비슷한 질문을 추가할 수 있고,
Follow up prompts에서는 더 알아보려면 클릭 같은 메시지를 추가할 수 있다.
이 작업이 끝나면 저장을 하고 테스트를 할 수 있다.
Deploy Knowledge base 페이지로 가서 배포해주면 끝난다.
gitclone으로 mslearn-ai-language의 레포지토리를 복사해준다.
그리고 다음 모듈이 필요하다.
pip install azure-ai-language-questionanswering
Labfiles/02-qna/Python/qna-app 안의 .env 파일에는 앞서 만든 리소스의 엔드포인트와 키를 입력해주고, SQ_PROJECT_NAME에는 Language Studio에서 만든 프로젝트의 이름을, QA_DEPLOYMENT_NAME은 production 그대로 두면 된다.
qna-app.py 파일을 열어서
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
두 모듈을 가져와주고,
# Create client using endpoint and key
credential = AzureKeyCredential(ai_key)
ai_client = QuestionAnsweringClient(endpoint=ai_endpoint, credential=credential)
코드를 추가해줌으로써 리소스에 접근할 수 있게 해준다.
# Submit a question and display the answer
user_question = ''
while user_question.lower() != 'quit':
user_question = input('\nQuestion:\n')
response = ai_client.get_answers(question=user_question,
project_name=ai_project_name,
deployment_name=ai_deployment_name)
for candidate in response.answers:
print(candidate.answer)
print("Confidence: {}".format(candidate.confidence))
print("Source: {}".format(candidate.source))
마지막에 이 코드를 추가해주고
python qna-app.py
를 해주면
다음과 같은 질문과 답을 받을 수 있다.