基于 LangGraph 与 GPT-Researcher 构建多智能体 AI 研究助理
引言
在当前的 AI 应用开发中,单一的大语言模型(LLM)往往难以独立胜任复杂的长文本生成任务。大模型存在训练数据过时、容易产生幻觉、受限于上下文窗口以及网络搜索资源不足等问题。为了解决这些痛点,本文介绍一种基于 LangGraph 框架结合开源项目 GPT-Researcher 的多智能体(Multi-Agent)架构方案。该方案通过模拟人类团队协作模式,实现从主题细分、资料搜集、报告撰写到自我反思的自动化流程,能够输出高质量的综合研究报告。
业务场景与需求分析
当需要针对特定主题(如'生成式人工智能中的伦理偏见与公平性')进行深入研究时,传统方式需要人工在多个网站间切换检索、聚合信息并整理成文。借助大模型虽然能加速这一过程,但面临以下挑战:
- 信息时效性与准确性:大模型训练数据截止较早,且容易产生事实性幻觉。
- 篇幅限制:受限于上下文长度,直接输出长篇研究报告效果不佳。
- 深度不足:简单的 RAG(检索增强生成)更适合问答,而非系统性报告编写。
- 缺乏审核机制:单次生成难以保证逻辑严密性和内容全面性。
因此,我们需要一个设计合理的 AI 智能体系统,具备以下能力:
- 任务分解:将输入的研究主题细分为可执行的子课题。
- 自主研究:对子课题进行网络或本地资源的深度检索。
- 协作修订:通过审阅和修订角色对内容进行迭代优化。
- 人机协同:在关键节点引入人类反馈,确保方向正确。
系统架构设计
多智能体系统优势
多智能体系统(Multi-Agent System)通过多个相互独立但协作的智能体来完成复杂任务。相比单智能体,其优势在于:
- 分工明确:每个智能体拥有不同的视角或能力,更全面地处理问题。
- 并行处理:任务可分解分配,提升整体效率。
- 动态调整:可根据任务需求动态调整角色职责。
角色定义
本项目设计的多智能体研究助理包含以下核心角色:
- Researcher(研究员):负责针对研究主题采集网络资源,执行自主研究任务。
- Editor(编辑):负责初期规划研究大纲和整体结构。
- Reviewer(审阅者):根据设定的标准对研究结果进行检查验证。
- Revisor(修订者):根据审阅结果对研究结果进行修订。
- Writer(撰写者):根据研究输出撰写最终报告内容。
- Publisher(发布器):负责用不同的格式发布最终研究报告。
- Human(人类):支持人类角色参与流程,在适当时机给出反馈或审核指令。
工作流程
基本工作流如下:
- 根据给定的研究主题,参考互联网资源进行初步研究。
- 根据初步研究结果制定报告提纲(子课题)。
- 对每个子课题做深入研究、审阅与修改,直到满意为止。
- 汇总子课题的研究结果撰写最终报告,并输出多格式文档。
基于 LangGraph 的实现细节
LangGraph 是 LangChain 的扩展包,它通过将 Agent 系统的工作流用图(Graph)结构来设计与表示,支持循环流和复杂的状态管理,非常适合构建此类多智能体应用。
State 状态设计
在 LangGraph 中,State 对象用于保存在各个节点之间传递的必需信息。本项目定义了 ResearchState 类,包含研究任务相关数据和输出报告相关数据两部分:
class ResearchState(TypedDict):
task: dict
initial_research: str
sections: List[str]
research_data: List[dict]
human_feedback: str
title: str
headers: dict
date: str
table_of_contents: str
introduction: str
conclusion: str
sources: List[str]
report: str
这种设计确保了所有 Agent 都能访问统一的数据上下文,实现了信息共享。
主流程 Workflow 构建
创建主工作流的步骤包括声明 Agent、创建 StateGraph、添加节点、添加边以及设定入口和出口。
workflow = StateGraph(ResearchState)
workflow.add_node("browser", research_agent.run_initial_research)
workflow.add_node("planner", editor_agent.plan_research)
workflow.add_node("researcher", editor_agent.run_parallel_research)
workflow.add_node("writer", writer_agent.run)
workflow.add_node("publisher", publisher_agent.run)
workflow.add_node("human", human_agent.review_plan)
workflow.add_edge('browser', 'planner')
workflow.add_edge('planner', 'human')
workflow.add_edge('researcher', 'writer')
workflow.add_edge('writer', 'publisher')
workflow.set_entry_point("browser")
workflow.add_edge('publisher', END)
workflow.add_conditional_edges(
'human',
(lambda review: "accept" if review['human_feedback'] is None else "revise"),
{"accept": "researcher", "revise": "planner"}
)
这里的关键在于 条件边(conditional_edge),它允许系统根据人类反馈动态决定下一步动作(继续研究还是重新规划),体现了人机回环(Human-in-the-loop)的设计思想。
并行子流程设计
为了提升效率,在规划完任务研究提纲后,需要对提纲中的每个子课题进行并行深入研究。这需要设计独立的子 Workflow,使用独立的 DraftState 对象以避免状态冲突。
async def run_parallel_research(self, research_state: dict):
research_agent = ResearchAgent(...)
reviewer_agent = ReviewerAgent(...)
reviser_agent = ReviserAgent(...)
workflow = StateGraph(DraftState)
workflow.add_node("researcher", research_agent.run_depth_research)
workflow.add_node("reviewer", reviewer_agent.run)
workflow.add_node("reviser", reviser_agent.run)
workflow.set_entry_point("researcher")
workflow.add_edge('researcher', 'reviewer')
workflow.add_edge('reviser', 'reviewer')
workflow.add_conditional_edges(
'reviewer',
(lambda draft: "accept" if draft['review'] is None else "revise"),
{"accept": END, "revise": "reviser"}
)
chain = workflow.compile()
return chain
Agent 提示词工程
单个 Agent 的功能相对简单,主要依赖大模型提示词(Prompt)来引导行为。以 Planner(编辑)为例,其系统提示词定义了角色目标和输出格式约束:
prompt = [{
"role": "system",
"content": "你是一名研究编辑。你的目标是监督研究项目从开始到完成。\n"
}, {
"role": "user",
"content": f"今天的日期是 {datetime.now().strftime('%d/%m/%Y')}\n"
f"研究总结报告:'{initial_research}'\n"
f"你的任务是根据上述研究总结报告生成研究项目的章节标题大纲。\n"
f"你必须仅返回一个包含以下字段的 JSON..."
}]
对于人类角色,则通过简单的交互获取反馈信息并更新 State。
运行与部署
在完成 Agent 与 Workflow 的创建后,即可启动应用。以下是运行主流程的核心代码:
research_team = init_research_team()
chain = research_team.compile()
result = await chain.ainvoke({"task": "研究任务"})
用户只需提供研究主题,系统即可自主运行,中间涉及人类确认的环节会暂停等待反馈。最终系统将输出完整的研究报告。
总结与展望
本方案展示了一个基于 LangGraph 与 GPT-Researcher 构建的多智能体 AI 研究助理。通过角色分工、状态管理和条件边控制,有效解决了单一大模型在处理复杂研究任务时的局限性。该架构不仅适用于学术研究,也可扩展至市场分析、竞品调研等商业场景。未来可进一步优化成本控制和响应速度,例如通过缓存机制减少重复搜索,或引入更精细的权限控制以适配企业级应用。
环境准备建议
在实际部署前,请确保满足以下基础环境要求:
- Python 版本:建议使用 Python 3.9 或更高版本。
- 依赖库:安装
langgraph, langchain, gpt-researcher 等相关包。
- API 密钥:配置好所需的大模型 API Key(如 OpenAI 或其他兼容接口)。
- 网络环境:确保服务器能够访问外部互联网以进行资源检索。
通过合理配置上述环境,开发者可以快速搭建起自己的智能研究助手原型。