public void Chat() { QuestionAnsweringClient client = Client; KnowledgeBaseAnswer previousAnswer = QuestionAnsweringModelFactory.KnowledgeBaseAnswer(id: 27); #region Snippet:QuestionAnsweringClient_Chat string projectName = "FAQ"; string deploymentName = "prod"; #if SNIPPET // Answers are ordered by their ConfidenceScore so assume the user choose the first answer below: KnowledgeBaseAnswer previousAnswer = answers.Answers.First(); #else projectName = TestEnvironment.ProjectName; deploymentName = TestEnvironment.DeploymentName; #endif QueryKnowledgeBaseOptions options = new QueryKnowledgeBaseOptions(projectName, deploymentName, "How long should charging take?") { Context = new KnowledgeBaseAnswerRequestContext(previousAnswer.Id.Value) }; Response <KnowledgeBaseAnswers> response = client.QueryKnowledgeBase(options); foreach (KnowledgeBaseAnswer answer in response.Value.Answers) { Console.WriteLine($"({answer.ConfidenceScore:P2}) {answer.Answer}"); Console.WriteLine($"Source: {answer.Source}"); Console.WriteLine(); } #endregion Assert.That(response.GetRawResponse().Status, Is.EqualTo(200)); }
public async Task ChatAsync() { QuestionAnsweringClient client = Client; KnowledgeBaseAnswer previousAnswer = QuestionAnsweringModelFactory.KnowledgeBaseAnswer(qnaId: 27); #region Snippet:QuestionAnsweringClient_ChatAsync string projectName = "{ProjectName}"; string deploymentName = "{DeploymentName}"; #if SNIPPET // Answers are ordered by their ConfidenceScore so assume the user choose the first answer below: KnowledgeBaseAnswer previousAnswer = answers.Answers.First(); #else projectName = TestEnvironment.ProjectName; deploymentName = TestEnvironment.DeploymentName; #endif QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName); AnswersOptions options = new AnswersOptions { AnswerContext = new KnowledgeBaseAnswerContext(previousAnswer.QnaId.Value) }; Response <AnswersResult> response = await client.GetAnswersAsync("How long should charging take?", project, options); foreach (KnowledgeBaseAnswer answer in response.Value.Answers) { Console.WriteLine($"({answer.Confidence:P2}) {answer.Answer}"); Console.WriteLine($"Source: {answer.Source}"); Console.WriteLine(); } #endregion Assert.That(response.GetRawResponse().Status, Is.EqualTo(200)); }
private QueryResult GetQueryResultFromKBAnswer(KnowledgeBaseAnswer kbAnswer) { return(new QueryResult { Answer = kbAnswer.Answer, AnswerSpan = kbAnswer.AnswerSpan != null ? new AnswerSpanResponse { Score = (float)kbAnswer.AnswerSpan.ConfidenceScore, Text = kbAnswer.AnswerSpan?.Text, StartIndex = kbAnswer.AnswerSpan?.Offset ?? 0, EndIndex = kbAnswer.AnswerSpan?.Length != null ? (kbAnswer.AnswerSpan?.Offset + kbAnswer.AnswerSpan?.Length - 1).Value : 0 } : null, Context = kbAnswer.Dialog != null ? new QnAResponseContext { Prompts = kbAnswer.Dialog?.Prompts?.Select(p => new QnaMakerPrompt { DisplayOrder = p.DisplayOrder, DisplayText = p.DisplayText, Qna = null, QnaId = p.QnaId }).ToArray() } : null, Id = kbAnswer.Id, Metadata = kbAnswer.Metadata?.ToList().Select(nv => new Metadata { Name = nv.Key, Value = nv.Value }).ToArray(), Questions = kbAnswer.Questions?.ToArray(), Score = (float)kbAnswer.ConfidenceScore, Source = kbAnswer.Source }); }