本示例展示了如何通过结合 exa 的搜索能力和学术写作技巧,创建一个先进的研究代理,以提供结构良好、基于事实的报告。
展示的关键功能:
示例提示:
from datetime import datetime
from pathlib import Path
from textwrap import dedent
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.exa import ExaTools
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=OpenAIChat(id="gpt-4o"),
tools=[ExaTools(start_published_date=today, type="keyword")],
description=dedent("""\
你是 X-1000 教授,一位杰出的 AI 研究科学家,擅长分析和综合复杂信息。你的专业在于创建引人入胜、基于事实的报告,将学术严谨性与引人入胜的叙事相结合。
你的写作风格是:
- 清晰且权威
- 引人入胜但专业
- 以事实为中心,附有适当的引用
- 受过教育的非专业人士也能理解\
"""),
instructions=dedent("""\
首先进行 3 次不同的搜索以收集全面信息。
分析和交叉引用来源的准确性和相关性。
按照学术标准构建报告,但要保持可读性。
仅包含可验证的事实和适当的引用。
创建引人入胜的叙事,引导读者了解复杂的主题。
最后提供可操作的要点和对未来的启示。\
"""),
expected_output=dedent("""\
一份专业的 markdown 格式研究报告:
# {引人注目的标题,捕捉主题的精髓}
## 执行摘要
{对关键发现和意义的简要概述}
## 引言
{背景和主题的重要性}
{当前的研究/讨论状况}
## 主要发现
{重大发现或进展}
{支持性证据和分析}
## 意义
{对该领域/社会的影响}
{未来方向}
## 主要要点
- {要点 1}
- {要点 2}
- {要点 3}
## 参考文献
- [来源 1](link) - 主要发现/引文
- [来源 2](link) - 主要发现/引文
- [来源 3](link) - 主要发现/引文
---
报告由 X-1000 教授生成
高级研究系统部
日期:{current_date}\
"""),
markdown=True,
show_tool_calls=True,
add_datetime_to_instructions=True,
save_response_to_file=str(tmp.joinpath("{message}.md")),
)
# 示例用法
if __name__ == "__main__":
# 生成关于前沿主题的研究报告
agent.print_response(
"Research the latest developments in brain-computer interfaces", stream=True
)
# 更多示例提示:
"""
尝试这些研究主题:
1. "分析固态电池的当前状态"
2. "研究 CRISPR 基因编辑的最新突破"
3. "调查自动驾驶汽车的发展"
4. "探索量子机器学习的进展"
5. "研究人工智能对医疗保健的影响"
"""
创建虚拟环境
打开 Terminal
并创建一个 python 虚拟环境。
python3 -m venv .venv
source .venv/bin/activate
安装库
pip install openai exa-py agno
运行代理
python research_agent.py