Add relevant knowledge to Summary Plan

This commit is contained in:
Joanna Ren 2024-10-18 12:02:16 -05:00
parent 556ad27b6d
commit 0dd943bedd
6 changed files with 21 additions and 18 deletions

View file

@ -1 +1,2 @@
Please call handle_excel_request if user wants to load the data from a excel/csv file.
Please call handle_excel_request if user wants to load the data from a excel/csv file.
handle_excel_request can NOT generate excel/csv.

View file

@ -38,6 +38,8 @@ public class PrimaryStagePlanFn : IFunctionCallback
}
}
knowledges = knowledges.Distinct().ToList();
var knowledgeState = String.Join("\r\n", knowledges);
state.SetState("relevant_knowledges", knowledgeState);
// Get first stage planning prompt
var currentAgent = await agentService.LoadAgent(message.CurrentAgentId);
@ -67,11 +69,7 @@ public class PrimaryStagePlanFn : IFunctionCallback
var agent = await agentService.GetAgent(BuiltInAgentId.Planner);
var template = agent.Templates.FirstOrDefault(x => x.Name == "two_stage.1st.plan")?.Content ?? string.Empty;
var responseFormat = JsonSerializer.Serialize(new FirstStagePlan
{
Parameters = [ JsonDocument.Parse("{}") ],
Results = [ string.Empty ]
});
var responseFormat = JsonSerializer.Serialize(new FirstStagePlan{});
// Get global knowledges
var globalKnowledges = new List<string>();

View file

@ -40,9 +40,12 @@ public class SecondaryStagePlanFn : IFunctionCallback
knowledges.AddRange(k);
}
knowledges = knowledges.Distinct().ToList();
var knowledgeResults = string.Join("\r\n\r\n=====\r\n", knowledges);
var knowledgeState = states.GetState("relevant_knowledges");
knowledgeState += String.Join("\r\n", knowledges);
states.SetState("relevant_knowledges", knowledgeState);
// Get second stage planning prompt
var currentAgent = await agentService.LoadAgent(message.CurrentAgentId);
var prompt = await GetSecondStagePlanPrompt(taskSecondary.TaskDescription, planResult, knowledgeResults, message);

View file

@ -35,7 +35,8 @@ public class SummaryPlanFn : IFunctionCallback
var steps = states.GetState("planning_result").JsonArrayContent<SecondStagePlan>();
var allTables = new List<string>();
var ddlStatements = string.Empty;
var planResult = states.GetState("planning_result");
var relevantKnowledge = states.GetState("planning_result");
relevantKnowledge += "\r\n" + states.GetState("relevant_knowledges");
var dictionaryItems = states.GetState("dictionary_items");
var excelImportResult = states.GetState("excel_import_result");
@ -54,7 +55,7 @@ public class SummaryPlanFn : IFunctionCallback
ddlStatements += "\r\n" + msgCopy.Content;
// Summarize and generate query
var prompt = await GetSummaryPlanPrompt(msgCopy, taskRequirement, planResult, dictionaryItems, ddlStatements, excelImportResult);
var prompt = await GetSummaryPlanPrompt(msgCopy, taskRequirement, relevantKnowledge, dictionaryItems, ddlStatements, excelImportResult);
_logger.LogInformation($"Summary plan prompt:\r\n{prompt}");
var plannerAgent = new Agent

View file

@ -5,8 +5,8 @@ public class FirstStagePlan
[JsonPropertyName("task_detail")]
public string Task { get; set; } = "";
[JsonPropertyName("reason")]
public string Reason { get; set; } = "";
//[JsonPropertyName("reason")]
//public string Reason { get; set; } = "";
[JsonPropertyName("step")]
public int Step { get; set; } = -1;
@ -20,14 +20,14 @@ public class FirstStagePlan
[JsonPropertyName("related_tables")]
public string[] Tables { get; set; } = [];
[JsonPropertyName("related_urls")]
public string[] Urls { get; set; } = [];
//[JsonPropertyName("related_urls")]
//public string[] Urls { get; set; } = [];
[JsonPropertyName("input_args")]
public JsonDocument[] Parameters { get; set; } = [];
//[JsonPropertyName("input_args")]
//public JsonDocument[] Parameters { get; set; } = [];
[JsonPropertyName("output_results")]
public string[] Results { get; set; } = [];
//[JsonPropertyName("output_results")]
//public string[] Results { get; set; } = [];
public override string ToString()
{

View file

@ -1,5 +1,5 @@
Output in human readable format. If there is large amount of rows, shape it in tabular, otherwise, output in plain text.
Put user task description in the first line in the same language, for example, user is using Chinese, you have to output the result in Chinese.
Put user task description in the first line in the same language, for example, if user is using Chinese, you have to output the result in Chinese.
User Task Description:
{{ requirement_detail }}