Beispiel #1
0
        public virtual GenerateAnswerResponse GenerateAnswer(Guid knowledgeBaseId, GenerateAnswerRequest request)
        {
            try {
                var result = QnAMakerRepository.GenerateAnswer(knowledgeBaseId, request);

                return(result);
            } catch (Exception ex) {
                Logger.Error("QnAMakerService.GenerateAnswer failed", this, ex);
            }

            return(null);
        }
Beispiel #2
0
 public virtual GenerateAnswerResponse GenerateAnswer(Guid knowledgeBaseId, GenerateAnswerRequest request)
 {
     return(PolicyService.ExecuteRetryAndCapture400Errors(
                "QnAMakerService.GenerateAnswer",
                ApiKeys.QnARetryInSeconds,
                () =>
     {
         var result = QnAMakerRepository.GenerateAnswer(knowledgeBaseId, request);
         return result;
     },
                null));
 }
        public async Task <PartialViewResult> SearchResults(string searchedKeyword, string kbId)
        {
            this.ValidateAuthorizationHeader();

            List <SelectedSearchResult> selectedSearchResults = new List <SelectedSearchResult>();

            if (!string.IsNullOrWhiteSpace(searchedKeyword))
            {
                searchedKeyword = searchedKeyword.Trim();

                var kbInfo = await this.kbInfoHelper.GetKBInfo(kbId);

                this.Session["SharePointUrl"] = kbInfo.SharePointUrl;

                var generateAnswerRequest = new GenerateAnswerRequest
                {
                    Question       = searchedKeyword,
                    Top            = this.topResultsToBeFetched,
                    ScoreThreshold = this.minimumConfidenceScore,
                    RankerType     = kbInfo.RankerType ?? RankerTypes.QuestionOnly, // Default to QuestionOnly for older KBs
                };
                var generateAnswerResponse = await this.qnaMakerService.GenerateAnswerAsync(kbId, generateAnswerRequest);

                var results = generateAnswerResponse?.Answers?.Where(a => a.Score > 0);
                if (results != null)
                {
                    foreach (QnAAnswer item in results)
                    {
                        List <ColumnInfo>         answerFields = JsonConvert.DeserializeObject <List <ColumnInfo> >(kbInfo.AnswerFields);
                        JObject                   answerObj    = JsonConvert.DeserializeObject <JObject>(item.Answer);
                        List <DeserializedAnswer> answers      = this.DeserializeAnswers(answerObj, answerFields);

                        selectedSearchResults.Add(new SelectedSearchResult()
                        {
                            KBId       = kbId,
                            Question   = item.Questions[0],
                            Answers    = answers,
                            ListItemId = answerObj["id"].ToString(),
                        });
                    }
                }
            }

            return(this.PartialView(selectedSearchResults));
        }
        /// <inheritdoc/>
        public async Task <GenerateAnswerResponse> GenerateAnswerAsync(string kbId, GenerateAnswerRequest request)
        {
            if (string.IsNullOrEmpty(this.qnaMakerHostEndpointUrl))
            {
                throw new InvalidOperationException($"{nameof(this.GenerateAnswerAsync)} was called on an instance of {nameof(QnAMakerService)} with no host url provided");
            }

            await this.EnsureQnAMakerEndpointKeyAsync();

            string uri = $"{this.qnaMakerHostEndpointUrl}/qnamaker/{MethodKB}/{kbId}/generateAnswer";

            using (var httpRequest = new HttpRequestMessage(HttpMethod.Post, uri))
            {
                httpRequest.Content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
                httpRequest.Headers.Add("Authorization", "EndpointKey " + this.endpointKey);

                var response = await this.httpClient.SendAsync(httpRequest);

                response.EnsureSuccessStatusCode();

                return(JsonConvert.DeserializeObject <GenerateAnswerResponse>(await response.Content.ReadAsStringAsync()));
            }
        }
Beispiel #5
0
 /// <summary>
 ///     Returns the list of answers for the given question sorted in descending order of ranking score.
 /// </summary>
 /// <exception cref="QnaMakerError" />
 /// <returns>
 ///     <see cref="GenerateAnswerResponse" />
 /// </returns>
 public async Task <GenerateAnswerResponse> GenerateAnswer(GenerateAnswerRequest req)
 {
     return(await Send <GenerateAnswerResponse>(HttpMethod.Post, $"{req.KnowledgeBaseId}/generateAnswer", req));
 }
        public virtual async Task <GenerateAnswerResponse> GenerateAnswerAsync(Guid knowledgeBaseId, GenerateAnswerRequest request)
        {
            var response = await RepositoryClient.SendJsonPostAsync(ApiKeys.QnA, $"{ApiKeys.QnAEndpoint}{knowledgeBaseId}/generateAnswer", JsonConvert.SerializeObject(request));

            return(JsonConvert.DeserializeObject <GenerateAnswerResponse>(response));
        }