LangGraph
LangGraph 是一个用于构建带状态的多角色(multi-actor)LLM 应用程序的库。本示例使用 LangGraph 自动对任何给定主题进行深入研究。
用例
通过使用 LangGraph,可以利用具有专门技能的多个智能体显著提高研究的深度和质量。受近期 STORM 论文的启发,本示例展示了一组 AI 智能体如何协同工作,对给定主题进行从规划到发表的全面研究。
一次普通运行会生成一份 5-6 页的研究报告,支持多种格式,如 PDF、Docx 和 Markdown。
请注意:为获得最佳性能,本示例仅使用 OpenAI API。
多智能体团队
研究团队由 7 个 AI 智能体组成
- 人类(Human) - 参与流程、监督过程并向智能体提供反馈的人。
- 主编(Chief Editor) - 监督研究过程并管理团队。这是使用 LangGraph 协调其他智能体的“主”智能体。
- 研究员(Researcher) (gpt-researcher) - 一个专门的自主智能体,对给定主题进行深入研究。
- 编辑(Editor) - 负责规划研究大纲和结构。
- 审阅员(Reviewer) - 根据一组标准验证研究结果的正确性。
- 修订员(Revisor) - 根据审阅员的反馈修订研究结果。
- 撰写员(Writer) - 负责汇编和撰写最终报告。
- 发布员(Publisher) - 负责以各种格式发布最终报告。
工作原理
总的来说,该过程基于以下几个阶段
- 规划阶段
- 数据收集与分析
- 审阅与修订
- 撰写与提交
- 发布
架构

步骤
更具体地说(如架构图所示),流程如下
- 浏览器(gpt-researcher) - 根据给定的研究任务,在互联网上浏览以进行初步研究。
- 编辑 - 根据初步研究规划报告大纲和结构。
- 针对每个大纲主题(并行进行)
- 研究员(gpt-researcher) - 对子主题进行深入研究并撰写草稿。
- 审阅员 - 根据一组标准验证草稿的正确性并提供反馈。
- 修订员 - 根据审阅员的反馈修订草稿,直到满意为止。
- 撰写员 - 根据给定的研究发现,汇编和撰写最终报告,包括引言、结论和参考文献部分。
- 发布员 - 将最终报告发布为多种格式,如 PDF、Docx、Markdown 等。
如何运行
- 安装所需软件包
pip install -r requirements.txt - 更新环境变量
export OPENAI_API_KEY={Your OpenAI API Key here}
export TAVILY_API_KEY={Your Tavily API Key here} - 运行应用程序
python main.py
使用
要更改研究查询和自定义报告,请编辑主目录中的 task.json 文件。
Task.json 包含以下字段:
query- 研究查询或任务。model- 用于智能体的 OpenAI LLM。max_sections- 报告中的最大章节数。每个章节是研究查询的一个子主题。include_human_feedback- 如果为 true,用户可以向智能体提供反馈。如果为 false,智能体将自主工作。publish_formats- 发布报告的格式。报告将写入output目录。source- 进行研究的位置。选项:web或local。对于本地,请添加DOC_PATH环境变量。follow_guidelines- 如果为 true,研究报告将遵循以下指南。这将花费更长时间完成。如果为 false,报告生成速度会更快,但可能不遵循指南。guidelines- 报告必须遵循的指南列表。verbose- 如果为 true,应用程序将在控制台打印详细日志。
例如:
{
"query": "Is AI in a hype cycle?",
"model": "gpt-4o",
"max_sections": 3,
"publish_formats": {
"markdown": true,
"pdf": true,
"docx": true
},
"include_human_feedback": false,
"source": "web",
"follow_guidelines": true,
"guidelines": [
"The report MUST fully answer the original question",
"The report MUST be written in apa format",
"The report MUST be written in english"
],
"verbose": true
}
如何部署
pip install langgraph-cli
langgraph up
然后,请参阅此处的文档,了解如何使用流式和异步端点以及 playground。
NextJS 前端应用
React 应用(位于 frontend 目录)是我们的前端 2.0,我们希望它能使我们在前端同样展示出后端的稳健性。
它附带了许多新增功能,例如:
- 一个拖放用户界面,用于上传和删除文件,以供 GPTResearcher 用作本地文档。
- 一个用于设置 GPTR 环境变量的图形用户界面(GUI)。
- 能够通过后端模块或 Langgraph Cloud Host(目前处于封闭测试阶段)触发 multi_agents 流程。
- 稳定性修复
- 以及更多即将推出的功能!
使用 Docker 运行 NextJS React 应用
第 1 步 - 安装 Docker
第 2 步 - 克隆 ‘.env.example’ 文件,将您的 API 密钥添加到克隆的文件中,并将其保存为 ‘.env’
第 3 步 - 在 docker-compose 文件中,注释掉您不想用 Docker 运行的服务。
$ docker-compose up --build
第四步 - 默认情况下,如果您没有取消注释 docker-compose 文件中的任何内容,此流程将启动 2 个进程
- 运行在 localhost:8000 上的 Python 服务器
- 运行在 localhost:3000 上的 React 应用
在任何浏览器中访问 localhost:3000,享受研究的乐趣!
使用 NPM 运行 NextJS React 应用
cd frontend/nextjs
nvm install 18.17.0
nvm use v18.17.0
npm install --legacy-peer-deps
npm run dev