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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
 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
     });
 }