Tweaks to research multi-agent

This commit is contained in:
Yiorgis Gozadinos 2025-09-16 15:59:12 +03:00
parent 70544b5112
commit 670e4e2254
No known key found for this signature in database
3 changed files with 11 additions and 9 deletions

View file

@ -1,7 +1,7 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from typing import Any, Generic, TypeVar from typing import Any, Generic, TypeVar
from pydantic import BaseModel from pydantic import BaseModel, Field
from pydantic_ai import Agent from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.ollama import OllamaProvider from pydantic_ai.providers.ollama import OllamaProvider
@ -86,7 +86,7 @@ class SearchResult(BaseModel):
content: str content: str
score: float score: float
document_uri: str document_uri: str
metadata: dict[str, Any] = {} metadata: dict[str, Any] = Field(default_factory=dict)
class ResearchOutput(BaseModel): class ResearchOutput(BaseModel):

View file

@ -56,16 +56,12 @@ class ResearchOrchestrator(BaseResearchAgent[ResearchPlan]):
def _format_context_for_prompt(self, context: ResearchContext) -> str: def _format_context_for_prompt(self, context: ResearchContext) -> str:
"""Format the research context as XML for inclusion in prompts.""" """Format the research context as XML for inclusion in prompts."""
context_data = { context_data = {
"original_question": context.original_question, "original_question": context.original_question,
"unanswered_questions": context.sub_questions, "unanswered_questions": context.sub_questions,
"qa_responses": [ "qa_responses": [
{ {"question": qa["question"], "answer": qa["answer"]}
"question": qa["question"],
"answer": qa["answer"][:500] + "..."
if len(qa["answer"]) > 500
else qa["answer"],
}
for qa in context.qa_responses for qa in context.qa_responses
], ],
"insights": context.insights, "insights": context.insights,
@ -201,7 +197,7 @@ Evaluate the research progress for the original question and identify any remain
output = evaluation_result.output output = evaluation_result.output
if output.key_insights: if output.key_insights:
console.print(" [bold]Key insights:[/bold]") console.print(" [bold]Key insights:[/bold]")
for insight in output.key_insights[:3]: for insight in output.key_insights:
console.print(f"{insight}") console.print(f"{insight}")
console.print( console.print(
f" Confidence: [yellow]{output.confidence_score:.1%}[/yellow]" f" Confidence: [yellow]{output.confidence_score:.1%}[/yellow]"

View file

@ -22,6 +22,12 @@ Your role is to:
4. Base your answer strictly on the information found 4. Base your answer strictly on the information found
Use the search_and_answer tool to retrieve relevant documents and formulate your response. Use the search_and_answer tool to retrieve relevant documents and formulate your response.
Important:
- Always call the search_and_answer tool before drafting any answer.
- Never answer without first using the tool at least once.
- If no relevant information is found, state that clearly and avoid speculation.
Be thorough and specific in your answers, citing relevant information from the sources.""" Be thorough and specific in your answers, citing relevant information from the sources."""
EVALUATION_AGENT_PROMPT = """You are an analysis and evaluation specialist for research workflows. EVALUATION_AGENT_PROMPT = """You are an analysis and evaluation specialist for research workflows.