跳转到主内容

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) - 负责以各种格式发布最终报告。

工作原理

总的来说,该过程基于以下几个阶段

  1. 规划阶段
  2. 数据收集与分析
  3. 审阅与修订
  4. 撰写与提交
  5. 发布

架构


步骤

更具体地说(如架构图所示),流程如下

  • 浏览器(gpt-researcher) - 根据给定的研究任务,在互联网上浏览以进行初步研究。
  • 编辑 - 根据初步研究规划报告大纲和结构。
  • 针对每个大纲主题(并行进行)
    • 研究员(gpt-researcher) - 对子主题进行深入研究并撰写草稿。
    • 审阅员 - 根据一组标准验证草稿的正确性并提供反馈。
    • 修订员 - 根据审阅员的反馈修订草稿,直到满意为止。
  • 撰写员 - 根据给定的研究发现,汇编和撰写最终报告,包括引言、结论和参考文献部分。
  • 发布员 - 将最终报告发布为多种格式,如 PDF、Docx、Markdown 等。

如何运行

  1. 安装所需软件包
    pip install -r requirements.txt
  2. 更新环境变量
    export OPENAI_API_KEY={Your OpenAI API Key here}
    export TAVILY_API_KEY={Your Tavily API Key here}
  3. 运行应用程序
    python main.py

使用

要更改研究查询和自定义报告,请编辑主目录中的 task.json 文件。

Task.json 包含以下字段:

  • query - 研究查询或任务。
  • model - 用于智能体的 OpenAI LLM。
  • max_sections - 报告中的最大章节数。每个章节是研究查询的一个子主题。
  • include_human_feedback - 如果为 true,用户可以向智能体提供反馈。如果为 false,智能体将自主工作。
  • publish_formats - 发布报告的格式。报告将写入 output 目录。
  • source - 进行研究的位置。选项:weblocal。对于本地,请添加 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