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

📅 2026/8/5 7:53:04
AI Agents in LangGraph-5 构建一个自带“思考与复盘”的 AI 论文写作系统
目录构建一个自带“思考与复盘”的 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):queriesmodel.with_structured_output(Queries).invoke([SystemMessage(contentRESEARCH_PLAN_PROMPT),HumanMessage(contentstate[task])])contentstate[content]or[]forqinqueries.queries:responsetavily.search(queryq,max_results2)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. 初始化图状态builderStateGraph(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]:returnENDreturnreflect# 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. 结合内存持久化编译图memorySqliteSaver.from_conn_string(:memory:)graphbuilder.compile(checkpointermemory)代码分析结构化循环使用should_continue函数来判断是否需要继续优化草稿。如果达到了max_revision流程终止流向END否则进入reflect进一步提意见。状态持久化与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节点之后允许用户手动进行干预输入人工意见之后再继续生成。