AI Agents in LangGraph-5 构建一个自带“思考与复盘”的 AI 论文写作系统
2026/8/5 7:52:55 网站建设 项目流程

目录

  • 构建一个自带“思考与复盘”的 AI 论文写作系统
  • 1. 系统架构设计
  • 2.核心组件与代码实现解析
    • 2.1 状态定义
    • 2.2 节点功能拆解
      • 2.21 大纲生成与首轮检索
      • 2.22 拟稿与自我反思
      • 2.23 针对性补充检索
    • 3. 图结构构建与条件路由
    • 4.运行与体验
    • 5.总结与展望

构建一个自带“思考与复盘”的 AI 论文写作系统

在使用大模型模型(LLM)写长文章或者论文的时候,单次Prompt往往存在着模型幻觉、结构混乱和内容深度不够的问题。单凭一次性的文章生成,模型很难同时做好大纲规划,资料搜集、长文撰写和自我审核校验。
为了解决这一个问题,我们可以借助LangGraph 将单个 LLM 拆解为多个具有专业分工的 Agent(规划者、研究员、撰写者、审查者),并通过图结构构建一个可以进行自动迭代、自行审稿和的修订的工作流。

1. 系统架构设计

该系统的核心在于反思和修订循环(Reflection & Revision Loop)。整体架构可以分成下面几个步骤:


从该流程图可以看出:系统不是一次性写完文章,而是进入生成->审查->重新检索资料->迭代修改的闭环,直到达到最大修改的次数。

2.核心组件与代码实现解析

2.1 状态定义

classAgentState(TypedDict):task:str# 用户的写作任务/主题plan:str# 生成的大纲draft:str# 当前文章草稿critique:str# 教师 Agent 给出的审查/修改意见content:List[str]# 搜索引擎检索到的外部资料列表revision_number:int# 当前迭代轮次max_revisions:int# 最大迭代轮次限制

2.2 节点功能拆解

每个节点都会负责工作流中的一个特定任务,封装了LLM调用或者外部API接口。

2.21 大纲生成与首轮检索

  • plan_node:根据用户的任务目标,生成包含章节的高级大纲。
  • research_plan_node: 使用结构化输出(with_structured_output(Queries))提取最多3个搜索关键词,通过Travily API抓取实时网页内容作为写作素材。
defresearch_plan_node(state:AgentState):queries=model.with_structured_output(Queries).invoke([SystemMessage(content=RESEARCH_PLAN_PROMPT),HumanMessage(content=state['task'])])content=state['content']or[]forqinqueries.queries:response=tavily.search(query=q,max_results=2)forrinresponse['results']:content.append(r['content'])return{"content":content}

2.22 拟稿与自我反思

  • generation_node: 结合大纲、检索到的外部资料以及用户的task,撰写或修改文章草稿,并将修改次数revision_number自增。
  • reflection_node : 模拟“教师“的角色,对生成的草稿进行审查,从逻辑、深度、篇幅和语言风格等方面提出批评与改进意见。

2.23 针对性补充检索

  • research_critique_node: 当审查节点提出具体意见时,该节点对审查意见生成新的搜索词,补充检索更多的针对性资料。

3. 图结构构建与条件路由

定义完成状态和节点之后,我们使用StateGraph将他们连接在一起,并且通过条件边控制逻辑跳转:

# 1. 初始化图状态builder=StateGraph(AgentState)# 2. 注册节点builder.add_node("planner",plan_node)builder.add_node("generate",generation_node)builder.add_node("reflect",reflection_node)builder.add_node("research_plan",research_plan_node)builder.add_node("research_critique",research_critique_node)# 3. 设置入口点与固定边builder.set_entry_point("planner")builder.add_edge("planner","research_plan")builder.add_edge("research_plan","generate")# 4. 路由控制逻辑defshould_continue(state):ifstate["revision_number"]>state["max_revisions"]:returnENDreturn"reflect"# 5. 添加条件边builder.add_conditional_edges("generate",should_continue,{END:END,"reflect":"reflect"})# 6. 反思闭环边builder.add_edge("reflect","research_critique")builder.add_edge("research_critique","generate")# 7. 结合内存持久化编译图memory=SqliteSaver.from_conn_string(":memory:")graph=builder.compile(checkpointer=memory)

代码分析:

  1. 结构化循环:使用should_continue函数来判断是否需要继续优化草稿。如果达到了max_revision,流程终止流向END;否则进入reflect进一步提意见。
  2. 状态持久化与Memory:使用SqliteSaver保存线程的执行状态,支持长对话的断点恢复和历史追踪。

4.运行与体验

调用编写好的graph时,只需要传入初始参数即可以流的形式实时查看各个节点的产出;

thread={"configurable":{"thread_id":"1"}}forsingraph.stream({'task':"what is the difference between langchain and langsmith","max_revisions":2,"revision_number":1,},thread):print(s)

在前端配合 Gradio 等 UI 框架,可以实现将内部节点的执行进度、搜集到的文献、每次修稿的差异直接可视化呈现给终极用户。

5.总结与展望

这套基于 LangGraph 的多 Agent 方案展示了现代 LLM 应用的核心哲学:用结构化的工作流补充单模型能力的不足。

  • 优点:引入联网搜索(Tavily)消除了模型时效性差的问题;引入“反思-修稿”闭环大大提升了文章的完备度与专业度。
  • 可扩展的点:(1)接入知识库(RAG):将 Tavily 搜索替换或叠加为本地向量数据库。 (2)人机协作:在自我审查(reflect)节点之后允许用户手动进行干预,输入人工意见之后,再继续生成。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询