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); }
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())); } }
/// <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)); }