一个基于 LangGraph 构建的自动化研究代理,能够执行多轮网络搜索、分析信息并生成带引用的高质量研究报告。(借鉴https://github.com/google-gemini/gemini-fullstack-langgraph-quickstart)
- 🔍 多轮搜索:自动执行初始搜索和后续追问搜索
- 🤖 智能分析:使用 OpenAI 兼容的 LLM 分析搜索结果
- 📝 引用追踪:自动标注信息来源
- 🔄 反思机制:识别知识空白并生成后续查询
- 🛠️ CLI 工具:命令行界面,易于使用
- Python 3.12+
- LangGraph - 构建有状态的多轮对话图
- LangChain - LLM 应用开发框架
- OpenAI API - 支持 OpenRouter 等第三方服务
- DuckDuckGo Search - 免费网络搜索工具
- Python 3.12 或更高版本
- uv 包管理器(推荐)
# 使用 uv 安装依赖
uv sync复制 .env 文件并配置以下变量:
# .env
OPENAI_API_KEY=your_api_key_here
OPENAI_BASE_URL=https://openrouter.ai/api/v1 # 可选,第三方服务
# 如使用 Tavily 搜索(可选)
TAVILY_API_KEY=tvly-...# 基本用法
uv run python cli_research.py "你的研究问题"
# 自定义初始查询数量
uv run python cli_research.py "你的研究问题" --initial-queries 5
# 自定义最大研究循环次数
uv run python cli_research.py "你的研究问题" --max-loops 3
# 指定推理模型
uv run python cli_research.py "你的研究问题" --reasoning-model gpt-4o| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
question |
位置参数 | - | 研究问题 |
--initial-queries |
int | 3 | 初始搜索查询数量 |
--max-loops |
int | 2 | 最大研究循环次数 |
--reasoning-model |
str | - | 用于最终答案的模型 |
研究结果会:
- 在终端显示每一步的执行过程
- 生成
debug.md文件,包含完整的研究步骤和最终答案
ds2/
├── cli_research.py # 命令行入口
├── pyproject.toml # 项目配置和依赖
├── .env # 环境变量配置
└── agent/
├── __init__.py
├── graph.py # LangGraph 图定义
├── state.py # 状态定义
├── tools_and_schemas.py # 工具和数据模式
├── prompts.py # 提示词模板
├── configuration.py # 配置管理
├── utils.py # 工具函数
└── run.py # 运行脚本
graph TD
A[开始] --> B[生成搜索查询]
B --> C[并行执行网络搜索]
C --> D[反思分析]
D --> E{信息充足?}
E -->|否 | F[生成后续查询]
F --> C
E -->|是 | G[生成最终答案]
G --> H[结束]
# 研究 AI 最新进展
uv run python cli_research.py "2025 年 AI 领域的最新突破有哪些?"
# 研究科技新闻
uv run python cli_research.py "特斯拉最新发布的机器人技术细节" --initial-queries 5 --max-loops 3uv add package_name(待添加)
MIT
本项目基于 LangGraph 研究代理模板构建。