deep-research-agent
四智能体协作的深度调研系统,LangGraph驱动,支持本地Ollama/云端Gemini,自动生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
四智能体协作的深度调研系统,LangGraph驱动,支持本地Ollama/云端Gemini,自动生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:你的老板下周要做一个关于"AI Agent在金融风控中的应用"的市场报告,给了你三天时间。你打开搜索引擎,输入关键词,弹出几十万条结果。你开始逐条浏览,每读一篇还要分辨内容质量、记录来源。两天后,你精疲力竭地发现:信息过载、来源可信度参差不齐、引用格式不统一,最终的报告东拼西凑,自己都不满意。
这不是个例。传统调研模式的三大困境几乎困扰着每一个知识工作者:信息来源分散且质量不一、可信度评估全凭主观、引用格式化耗费大量时间。而 tarun7r/deep-research-agent 试图用一套多智能体协作系统,将这个过程自动化。
这个开源项目在 GitHub 上已获得 173 颗星,虽然规模不大,但它的设计思路和技术实现,代表了当前 AI 深度调研工具的一条主流路径:由多个专业代理(Agent)各司其职,协同完成从规划到输出的全流程。
图1:Deep Research Agent 多智能体协作流程图

Deep Research Agent 由开发者 tarun7r 创建,定位为生产级别的多智能体自主调研系统,基于 LangGraph 0.2.57+ 和 LangChain 构建。其核心理念是:让四个专业代理各司其职——有人负责规划研究策略,有人负责搜索抓取网页,有人负责综合分析,有人负责撰写报告——最终输出一份带可信度评分和引用标注的完整调研文档。
项目支持两种模型接入模式:本地模型(通过 Ollama 或 llama.cpp 运行,如 Qwen2.5-7B)和云端 API(Google Gemini、OpenAI GPT 系列)。这种灵活性让用户可以根据隐私需求和预算选择最适合自己的方案。对于关心数据隐私的企业,本地部署意味着敏感调研内容不会流经第三方服务器。
ResearchPlanner 是整个系统的"总指挥"。当你输入一个调研主题后,它首先分析主题的核心维度,生成 3-5 个 SMART 原则下的具体研究目标(Specific, Measurable, Achievable, Relevant, Time-bound)。接着,它设计针对性的搜索查询词组合,覆盖主题的不同侧面,并规划报告的大纲结构(最多 8 个章节)。Planner 使用结构化 JSON 输出以保证可靠性,避免 LLM 幻觉导致的输出格式不稳定。
这个设计的精妙之处在于:搜索策略的质量直接决定最终报告的上限。一个好的 Planner 会考虑关键词的多义性、近义词替换、时效性限定(如"2024"或"最新")等因素,让后续的搜索代理不会在低质量信源上浪费时间。
ResearchSearcher 是整个流程中最"聪明"的部分。与传统搜索引擎不同,它是一个LangChain 驱动的自主代理(Autonomous Agent),能够根据搜索结果动态决定下一步动作:是否需要进一步细化查询词、是否要对某个页面进行深度内容提取、是否已达到信息饱和需要停止搜索。
它内置了两个搜索后端:DuckDuckGo(默认,免费无需 API Key)和 Tavily(可选,需要 API Key)。所有搜索结果都会经过可信度评分,低于默认阈值 40 分的来源会被过滤掉。可信度评分系统基于域名权威性、站点类型、引用数等多个维度计算,这是整个系统区别于简单"搜索+总结"工具的关键差异点。
此外,Searcher 还实现了熔断器(Circuit Breaker)机制:当外部服务(DuckDuckGo/Tavily)连续失败超过阈值时,系统自动停止调用并降级,防止资源浪费和错误累积。
Searcher 返回的搜索结果经过 ResearchSynthesizer 的综合分析。这个代理有两个核心能力:可信度感知排序和矛盾检测。在综合多篇来源时,高可信度(≥70分)的来源会被优先采纳;当不同来源给出矛盾信息时,Synthesizer 会根据来源可信度建立层级,优先采信权威来源,并在输出中标注"存在争议"的结论。
同时,Synthesizer 内置了渐进式截断机制,应对 LLM 的 token 上限问题。当信息量超过单次处理的容量时,它会智能判断哪些信息是核心的、哪些可以舍弃,确保不因上下文溢出丢失关键发现。
最后一个环节是 ReportWriter,负责将综合分析结果转化为结构化报告。它支持四种引用格式:APA、MLA、Chicago 和 IEEE,用户可以根据学术或商业场景自由选择。报告的每个章节都会经过质量验证——如果 LLM 生成的章节未达到预设的质量标准,系统会自动重试(最多 3 次),采用指数退避策略避免 API 过载。
最终报告支持三种导出格式:Markdown(纯文本,适合直接存档)、HTML(可发布到网站)和纯文本。
项目使用 LangGraph 的 StateGraph 作为核心编排引擎。StateGraph 的核心概念是状态(State)——一个包含所有代理共享数据的结构化对象,在图中的每个节点(Agent)之间流转。每个节点读取当前状态、执行业务逻辑、返回更新后的状态片段。这种设计比传统的函数调用链更灵活,支持条件分支、循环、状态回溯等复杂流程控制。
在 deep-research-agent 中,工作流图包含以下关键节点:
plan_node:调用 ResearchPlannersearch_node:调用 ResearchSearcher(可能循环多次)synthesize_node:调用 ResearchSynthesizerwrite_node:调用 ReportWriterLangGraph 的Checkpointing(检查点)机制也深度集成,项目使用 langgraph-checkpoint-sqlite 将工作流状态持久化到 SQLite 数据库。这意味着即研究中途中断(如网络故障或程序崩溃),也可以从最近的检查点恢复,而不必从头开始。
从 requirements.txt 和 pyproject.toml 可以看出,这是一个认真对待生产环境的项目:
| 特性 | 实现方式 | 价值 |
|---|---|---|
| 异步优先 | httpx[http2] + aiohttp | HTTP/2 连接复用,高并发搜索 |
| 结构化日志 | structlog | 可观测性,便于排查问题 |
| 配置验证 | Pydantic | 启动时校验环境变量合法性 |
| 依赖注入 | 可注入 LLM 的测试架构 | 便于单元测试和替换模型 |
| 缓存 | MD5 哈希 + 7天 TTL 文件缓存 | 避免重复搜索浪费 API 调用 |
项目提供了基于 Chainlit 的交互界面(app.py),这是一个类 ChatGPT 的 Web 界面,支持实时进度显示、多格式报告导出和研究历史管理。进度条用 emoji 和颜色区分研究阶段(规划中→搜索中→提取中→综合中→撰写中→完成),用户体验细节打磨得不错。
不过需要注意的是,Chainlit 界面需要额外的依赖安装(chainlit>=1.0.0),且默认通过公网可访问的方式运行,生产部署建议自行配置认证中间件。
如果只是想快速体验功能,使用云端 API 是最简单的方式:
git clone https://github.com/tarun7r/deep-research-agent.git
cd deep-research-agent
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 配置 API Key
echo "MODEL_PROVIDER=google" >> .env
echo "GOOGLE_API_KEY=your_key_here" >> .env
# 运行(CLI 模式)
python main.py "AI Agent在金融风控中的应用"
整个过程约 15-20 分钟,主要是依赖安装。只要有网络和 API Key,Gemini/ChatGPT 模型即可正常调用,不需要 GPU。
如果追求完全本地化(隐私优先),需要额外安装 Ollama 并下载模型:
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 下载 7B 模型(约 4.4GB)
ollama pull qwen2.5:7b
# 配置
echo "MODEL_PROVIDER=ollama" >> .env
echo "MODEL_NAME=qwen2.5:7b" >> .env
# 运行
python main.py "AI Agent在金融风控中的应用"
本地部署对硬件有一定要求:Qwen2.5-7B 至少需要 8GB VRAM(或 16GB 系统内存通过量化运行),纯 CPU 推理速度较慢。这个配置对于没有 NVIDIA GPU 的用户来说体验一般,但 Ollama 的安装已经相当傻瓜化,比手动配置 llama.cpp 简单很多。
项目没有提供 Dockerfile 和 docker-compose,这对希望一键部署的用户来说是个遗憾。不过由于依赖清晰(纯 Python),有 Docker 经验的用户可以自行编写 Dockerfile 基于 Python 3.11 镜像构建。考虑到 Chainlit Web UI 和 Ollama 的组合需求,compose 文件需要同时管理应用容器和 Ollama 服务两个组件,比单容器更复杂。
当前架构中,ResearchSynthesizer 的渐进式截断机制虽然能应对 token 限制,但长篇深度报告(50+ 页)的生成质量仍有下降风险。当来源数量超过 20 篇时,综合分析代理需要在大量信息中做优先级判断,信息密度损失难以避免。对于真正需要长篇报告的场景,可能需要引入分层处理(先按子主题分组,分别处理后再汇总)。
DuckDuckGo 作为默认搜索后端虽然免费,但搜索频率限制和反爬机制是潜在风险。在高频调用场景下可能遭遇 IP 限制或验证码拦截。Tavily 作为付费替代方案提供了更稳定的体验,但需要额外成本。理想情况下,系统应支持同时使用多个搜索源并做结果去重融合。
可信度评分算法(src/utils/credibility.py)基于域名权威性等公开指标,但并非所有权威网站的内容都是高质量的,反之一些专业博客或技术文档可能更有价值但域名可信度评分较低。这套评分机制适合作为初筛,但不建议完全依赖它做最终的信源取舍判断。
项目默认未启用认证,如果直接在公网暴露 Chainlit 服务,任何人都可以调用调研功能。建议通过反向代理(如 Nginx + Basic Auth)或使用 Chainlit 的内置认证功能进行保护。
Deep Research Agent 代表的不是一项颠覆性创新,而是LangChain/LangGraph 生态在垂直场景的成熟应用。从 LangChain Academy 专门开设"Deep Research with LangGraph"课程、到 Google 开源官方的 Deep Research Agent 实现、再到 LangChain 官方推出 Open Deep Research,"深度调研"已经成为 LLM 应用的一个标志性场景。
这类工具的共同趋势是:从单 Agent 到多 Agent 协作、从简单 RAG 到自主决策搜索策略、从信息罗列到带质量评估的结构化输出。deep-research-agent 的四智能体设计虽然相对简化,但它清晰地展示了这一技术路线的可行性门槛:核心难点不在于架构设计,而在于各代理的质量稳定性和整个流程的可观测性。
对于 AI 爱好者:这个项目是理解 LangGraph 多智能体工作流的优秀学习案例,代码结构清晰(35KB 的 agents.py 包含了所有四个代理的核心逻辑),注释详尽,改造成本低。
对于 AI 开发者:如果需要快速搭建企业内部调研工具,这个项目的模块化设计允许替换搜索后端、调整可信度阈值、定制报告模板,是二次开发的良好起点。