Share via


GenerateAnswer API를 사용하여 답변 가져오기

사용자의 질문에 대한 예측 답변을 가져오려면 GenerateAnswer API를 사용합니다. 기술 자료를 게시할 때 게시 페이지에서 이 API를 사용하는 방법에 대한 정보를 볼 수 있습니다. 메타데이터 태그를 기준으로 답변을 필터링하도록 API를 구성하고 테스트 쿼리 문자열 매개 변수를 사용하여 엔드포인트에서 기술 자료를 테스트할 수도 있습니다.

참고 항목

QnA Maker 서비스가 2025년 3월 31일부로 종료됩니다. 이제 최신 버전의 질문 및 답변 기능이 Azure AI 언어의 일부로 사용할 수 있습니다. 언어 서비스 내의 질문 답변 기능은 질문 답변을 참조하세요. 2022년 10월 1일부터 새로운 QnA Maker 리소스를 만들 수 없습니다. 기존 QnA Maker 기술 자료를 질문 답변으로 마이그레이션하는 방법에 대한 정보는 마이그레이션 가이드를 참조하세요.

GenerateAnswer API를 사용하여 답변 예측 가져오기

봇 또는 애플리케이션에서 GenerateAnswer API를 사용하여 사용자 질문으로 기술 자료를 쿼리하면 질문 및 답변 쌍에서 최적의 일치 항목을 가져올 수 있습니다.

참고 항목

이 설명서는 최신 릴리스에는 적용되지 않습니다. 최신 질문 답변 API 사용에 대해 알아보려면 질문 답변 빠른 시작 가이드를 참조하세요.

게시하여 GenerateAnswer 엔드포인트 가져오기

기술 자료를 게시한 후에는 QnA Maker 포털에서 또는 API를 사용하여 GenerateAnswer 엔드포인트 세부 정보를 가져올 수 있습니다.

엔드포인트 세부 정보를 가져오려면 다음을 수행합니다.

  1. https://www.qnamaker.ai에 로그인합니다.

  2. 내 기술 자료에서 기술 자료에 대한 코드 보기를 선택합니다. Screenshot of My knowledge bases

  3. GenerateAnswer 엔드포인트 세부 정보를 가져옵니다.

    Screenshot of endpoint details

기술 자료의 설정 탭에서 엔드포인트 세부 정보를 가져올 수도 있습니다.

GenerateAnswer 요청 구성

HTTP POST 요청을 사용하여 GenerateAnswer를 호출합니다. GenerateAnswer를 호출하는 방법을 보여주는 샘플 코드는 빠른 시작을 참조하세요.

POST 요청은 다음을 사용합니다.

GenerateAnswer URL의 형식은 다음과 같습니다.

https://{QnA-Maker-endpoint}/knowledgebases/{knowledge-base-ID}/generateAnswer

Authorization의 HTTP 헤더 속성은 후행 공백이 있는 EndpointKey 문자열 값으로 설정한 다음, 설정 페이지에 있는 엔드포인트 키로 설정해야 합니다.

JSON 본문 예는 다음과 같습니다.

{
    "question": "qna maker and luis",
    "top": 6,
    "isTest": true,
    "scoreThreshold": 30,
    "rankerType": "" // values: QuestionOnly
    "strictFilters": [
    {
        "name": "category",
        "value": "api"
    }],
    "userId": "sd53lsY="
}

rankerType에 대해 자세히 알아보세요.

이전 JSON은 임계값 점수보다 30% 이상인 답변만 요청했습니다.

GenerateAnswer 응답 속성

응답은 답변과 다음 차례의 대화(사용 가능한 경우)를 표시하는 데 필요한 모든 정보를 포함하는 JSON 개체입니다.

{
    "answers": [
        {
            "score": 38.54820341616869,
            "Id": 20,
            "answer": "There is no direct integration of LUIS with QnA Maker. But, in your bot code, you can use LUIS and QnA Maker together. [View a sample bot](https://github.com/Microsoft/BotBuilder-CognitiveServices/tree/master/Node/samples/QnAMaker/QnAWithLUIS)",
            "source": "Custom Editorial",
            "questions": [
                "How can I integrate LUIS with QnA Maker?"
            ],
            "metadata": [
                {
                    "name": "category",
                    "value": "api"
                }
            ]
        }
    ]
}

이전 JSON은 점수가 38.5%인 답변으로 응답했습니다.

텍스트를 기준으로 질문과 대답 찾기

기본적으로 QnA Maker는 질문과 답변을 검색합니다. 질문에 대해서만 검색하려는 경우 답변을 생성하려면 GenerateAnswer 요청의 POST 본문에 RankerType=QuestionOnly를 사용합니다.

isTest=false를 사용하는 게시된 kb를 통해 또는 isTest=true를 사용하는 테스트 kb에서 검색할 수 있습니다.

{
  "question": "Hi",
  "top": 30,
  "isTest": true,
  "RankerType":"QuestionOnly"
}

C#의 봇과 함께 QnA Maker 사용

Bot Framework는 getAnswer API를 사용하여 QnA Maker의 속성에 대한 액세스 권한을 제공합니다.

using Microsoft.Bot.Builder.AI.QnA;
var metadata = new Microsoft.Bot.Builder.AI.QnA.Metadata();
var qnaOptions = new QnAMakerOptions();

metadata.Name = Constants.MetadataName.Intent;
metadata.Value = topIntent;
qnaOptions.StrictFilters = new Microsoft.Bot.Builder.AI.QnA.Metadata[] { metadata };
qnaOptions.Top = Constants.DefaultTop;
qnaOptions.ScoreThreshold = 0.3F;
var response = await _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext, qnaOptions);

이전 JSON은 임계값 점수보다 30% 이상인 답변만 요청했습니다.

Node.js의 봇과 함께 QnA Maker 사용

Bot Framework는 getAnswer API를 사용하여 QnA Maker의 속성에 대한 액세스 권한을 제공합니다.

const { QnAMaker } = require('botbuilder-ai');
this.qnaMaker = new QnAMaker(endpoint);

// Default QnAMakerOptions
var qnaMakerOptions = {
    ScoreThreshold: 0.30,
    Top: 3
};
var qnaResults = await this.qnaMaker.getAnswers(stepContext.context, qnaMakerOptions);

이전 JSON은 임계값 점수보다 30% 이상인 답변만 요청했습니다.

GenerateAnswer API를 사용하여 정확한 답변 받기

QnA Maker 관리형 버전에서만 정확한 답변 기능을 제공합니다.

일반 HTTP 오류

코드 설명
2xx Success
400 요청 매개 변수가 잘못되었습니다. 필수 매개 변수가 누락되었거나, 형식이 잘못되었거나, 너무 큽니다.
400 요청 본문이 잘못되었습니다. JSON이 누락되었거나, 형식이 잘못되었거나, 너무 큽니다.
401 잘못된 키
403 사용 권한 없음 - 올바른 사용 권한이 없음
404 기술 자료가 존재하지 않음
410 이 API는 더 이상 사용되지 않으며, 더 이상 사용할 수 없습니다.

다음 단계

게시 페이지에서는 Postman 또는 cURL과 함께 답변을 생성하기 위한 정보도 제공합니다.