Research Agent Exa
Research a topic with Exa search on Groq and save the markdown report to a file.
"""Run `uv pip install groq exa-py` to install dependencies."""
from datetime import datetime
from pathlib import Path
from textwrap import dedent
from agno.agent import Agent
from agno.models.groq import Groq
from agno.tools.exa import ExaTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
cwd = Path(__file__).parent.resolve()
tmp = cwd.joinpath("tmp")
if not tmp.exists():
tmp.mkdir(exist_ok=True, parents=True)
today = datetime.now().strftime("%Y-%m-%d")
agent = Agent(
model=Groq(id="openai/gpt-oss-120b"),
tools=[ExaTools(start_published_date=today, type="keyword")],
description="You are an advanced AI researcher writing a report on a topic.",
instructions=[
"For the provided topic, run 3 different searches.",
"Read the results carefully and prepare a NYT worthy report.",
"Focus on facts and make sure to provide references.",
],
expected_output=dedent("""\
An engaging, informative, and well-structured report in markdown format:
## Engaging Report Title
### Overview
{give a brief introduction of the report and why the user should read this report}
{make this section engaging and create a hook for the reader}
### Section 1
{break the report into sections}
{provide details/facts/processes in this section}
... more sections as necessary...
### Takeaways
{provide key takeaways from the article}
### References
- [Reference 1](link)
- [Reference 2](link)
- [Reference 3](link)
### About the Author
{write a made up for yourself, give yourself a cyberpunk name and a title}
- published on {date} in dd/mm/yyyy
"""),
markdown=True,
add_datetime_to_context=True,
save_response_to_file=str(tmp.joinpath("{message}.md")),
)
agent.print_response("Llama 3.3 running on Groq", stream=True)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
passRun the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno exa-py groqExport your API keys
export EXA_API_KEY="your_exa_api_key_here"
export GROQ_API_KEY="your_groq_api_key_here"Select the current Exa search mode
Save the source as research_agent_exa.py and replace type="keyword" with type="auto" in ExaTools(...). Keep the date filter. The current Exa search contract documents auto; the source uses an older mode name.
Run the example
Save the code above as research_agent_exa.py, then run:
python research_agent_exa.pyFull source: cookbook/90_models/groq/research_agent_exa.py