| from pydantic import BaseModel, Field | |
| from agents import Agent | |
| from agents import OpenAIChatCompletionsModel | |
| from openai import AsyncOpenAI | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv(override=True) | |
| model = "gemini-2.0-flash" | |
| GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/" | |
| GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") | |
| client = AsyncOpenAI(base_url=GEMINI_BASE_URL,api_key=GEMINI_API_KEY) | |
| custom_model = OpenAIChatCompletionsModel(model=model,openai_client=client) | |
| INSTRUCTIONS = ( | |
| "You are a senior researcher tasked with writing a cohesive report for a research query. " | |
| "You will be provided with the original query, and some initial research done by a research assistant.\n" | |
| "You should first come up with an outline for the report that describes the structure and " | |
| "flow of the report. Then, generate the report and return that as your final output.\n" | |
| "The final output should be in markdown format, and it should be lengthy and detailed. Aim " | |
| "for 5-10 pages of content, at least 1000 words." | |
| ) | |
| class ReportData(BaseModel): | |
| short_summary: str = Field(description="A short 2-3 sentence summary of the findings.") | |
| markdown_report: str = Field(description="The final report") | |
| follow_up_questions: list[str] = Field(description="Suggested topics to research further") | |
| writer_agent = Agent( | |
| name="WriterAgent", | |
| instructions=INSTRUCTIONS, | |
| model=custom_model, | |
| output_type=ReportData, | |
| ) |