feat(agent): Minor tweaks

This commit is contained in:
Willie Zutz 2025-06-10 00:12:45 -06:00
parent db6003ac5e
commit e707bc630f
2 changed files with 29 additions and 1 deletions

View file

@ -179,6 +179,7 @@ export const webSearchRetrieverAgentPrompt = `
- Only add additional information or change the meaning of the question if it is necessary for clarity or relevance to the conversation such as adding a date or time for current events, or using historical content to augment the question with relevant context - Only add additional information or change the meaning of the question if it is necessary for clarity or relevance to the conversation such as adding a date or time for current events, or using historical content to augment the question with relevant context
- Do not make up any new information like links or URLs - Do not make up any new information like links or URLs
- Condense the question to its essence and remove any unnecessary details - Condense the question to its essence and remove any unnecessary details
- Search queries should be short and to the point, focusing on the main topic or question
- Ensure the question is grammatically correct and free of spelling errors - Ensure the question is grammatically correct and free of spelling errors
- If it is a simple writing task or a greeting (unless the greeting contains a question after it) like Hi, Hello, How are you, etc. instead of a question then you need to return \`not_needed\` as the response in the <answer> XML block - If it is a simple writing task or a greeting (unless the greeting contains a question after it) like Hi, Hello, How are you, etc. instead of a question then you need to return \`not_needed\` as the response in the <answer> XML block
- If you are a thinking or reasoning AI, do not use <answer> and </answer> or <links> and </links> tags in your thinking. Those tags should only be used in the final output - If you are a thinking or reasoning AI, do not use <answer> and </answer> or <links> and </links> tags in your thinking. Those tags should only be used in the final output
@ -202,11 +203,29 @@ export const webSearchRetrieverAgentPrompt = `
There are several examples attached for your reference inside the below examples XML block There are several examples attached for your reference inside the below examples XML block
<examples> <examples>
<example>
<input>
<question>
What are the best ways to run Windows games on macOS with Apple Silicon? Get results from at least 3 sources.
</question>
<supervisor>
What are the top methods for running Windows games on macOS with Apple Silicon, and what are three reliable sources that detail these methods?
</supervisor>
</input>
<output>
<answer>
Run Windows games on macOS with Apple Silicon
</answer>
</output>
</example>
<example> <example>
<input> <input>
<question> <question>
What were the highlights of the race? What were the highlights of the race?
</question> </question>
<supervisor>
Find the highlights of the F1 Monaco Grand Prix.
</supervisor>
</input> </input>
<output> <output>
<answer> <answer>

View file

@ -208,6 +208,7 @@ export class AgentSearch {
- The content should completely address the query, providing detailed explanations, relevant facts, and necessary context - The content should completely address the query, providing detailed explanations, relevant facts, and necessary context
- Use the content provided in the \`context\` tag, as well as the historical context of the conversation, to make your determination - Use the content provided in the \`context\` tag, as well as the historical context of the conversation, to make your determination
- If the context provides conflicting information, explain the discrepancies and what additional information is needed to resolve them - If the context provides conflicting information, explain the discrepancies and what additional information is needed to resolve them
- If the user is asking for a specific number of sources, ensure that we have enough sources to meet that requirement
- Today's date is ${formatDateForLLM(new Date())} - Today's date is ${formatDateForLLM(new Date())}
# Output Format # Output Format
@ -223,6 +224,7 @@ export class AgentSearch {
- Avoid giving the same guidance more than once, and avoid repeating the same question multiple times - Avoid giving the same guidance more than once, and avoid repeating the same question multiple times
- Respond with your answer in a <answer> XML tag - Respond with your answer in a <answer> XML tag
- If you need more information, provide a detailed question in a <question> XML tag - If you need more information, provide a detailed question in a <question> XML tag
- If you need more information, provide a detailed one line reason why the content is not sufficient in a <reason> XML tag
# Refinement History # Refinement History
- The following questions have been asked to refine the search - The following questions have been asked to refine the search
@ -238,6 +240,7 @@ ${state.searchInstructionHistory.map((question) => ` - ${question}`).join('\n')
- If the content is not sufficient: - If the content is not sufficient:
<answer>need_more_info</answer> <answer>need_more_info</answer>
<question>A question that would help gather more specific information to answer the query?</question> <question>A question that would help gather more specific information to answer the query?</question>
<reason>A one line reason why the content is not sufficient</reason>
# Context # Context
<context> <context>
@ -262,15 +265,21 @@ ${state.searchInstructionHistory.map((question) => ` - ${question}`).join('\n')
// Parse the response to extract the analysis result // Parse the response to extract the analysis result
const analysisOutputParser = new LineOutputParser({ key: 'answer' }); const analysisOutputParser = new LineOutputParser({ key: 'answer' });
const moreInfoOutputParser = new LineOutputParser({ key: 'question' }); const moreInfoOutputParser = new LineOutputParser({ key: 'question' });
const reasonOutputParser = new LineOutputParser({ key: 'reason' });
const analysisResult = await analysisOutputParser.parse( const analysisResult = await analysisOutputParser.parse(
response.content as string, response.content as string,
); );
const moreInfoQuestion = await moreInfoOutputParser.parse( const moreInfoQuestion = await moreInfoOutputParser.parse(
response.content as string, response.content as string,
); );
const reason = await reasonOutputParser.parse(
response.content as string,
);
console.log('Analysis result:', analysisResult); console.log('Analysis result:', analysisResult);
console.log('More info question:', moreInfoQuestion); console.log('More info question:', moreInfoQuestion);
console.log('Reason for insufficiency:', reason);
if (analysisResult.startsWith('need_more_info')) { if (analysisResult.startsWith('need_more_info')) {
return new Command({ return new Command({
@ -487,7 +496,7 @@ ${doc.metadata?.url.toLowerCase().includes('file') ? '' : '\n<url>' + doc.metada
const result = await workflow.invoke(initialState, { const result = await workflow.invoke(initialState, {
configurable: { thread_id: `agent_search_${Date.now()}` }, configurable: { thread_id: `agent_search_${Date.now()}` },
recursionLimit: 15, recursionLimit: 20,
}); });
return result; return result;