File size: 1,478 Bytes
c049b12
 
fb1de84
ac640bc
 
c049b12
 
 
 
fb1de84
ac640bc
c049b12
 
ac640bc
c049b12
ac640bc
 
 
 
c049b12
ac640bc
c049b12
ac640bc
 
c049b12
ac640bc
 
fb1de84
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from agents import Runner, gen_trace_id, trace

from clarifier import ClarifyingQuestions, clarifier_agent
from report_generator import ReportData
from research_agent import research_agent


class ResearchManager:

    async def run(self, query: str, clarifications: str | None = None):
        """Run the deep-research pipeline using `research_agent`."""
        trace_id = gen_trace_id()
        with trace("Research trace", trace_id=trace_id):
            print("Starting research with ResearchAgent…")

            combined_query = (
                f"Original query: {query}\n\nUser clarifications:\n{clarifications}"
                if clarifications
                else query
            )
            yield "Research in progress…"

            result = await Runner.run(research_agent, combined_query)
            report: ReportData = result.final_output_as(ReportData)

            yield "Report generated. Rendering markdown…"
            yield report.markdown_report

    async def get_clarifying_questions(self, query: str) -> list[str]:
        """Generate clarifying questions for a given query."""
        print("Generating clarifying questions...")
        result = await Runner.run(clarifier_agent, f"Query: {query}")
        questions_model: ClarifyingQuestions = result.final_output_as(
            ClarifyingQuestions
        )
        print(f"Generated {len(questions_model.questions)} clarifying questions")
        return questions_model.questions