LangGraph大法好:工作流编排框架,特别适合构建复杂的多步骤、有状态或协作式 AI 应用

为什么不选择Coze / Dify ?

因为太复杂太难以控制,还是利用底层代码和AI框架更合适。我给你展示利用dify做deep research是多么复杂:
要求:

image1432×427 18.9 KB

dify实现:

![image](https://oss.xyyzone.com/jishuzhan/article/1948691789950529538/d33e35cb985eb9a2db6b1d26ec1207bd.webp)

github.com

GitHub - AdamPlatin123/Open-Deep-Research-workflow-on-Dify

通过在 GitHub 上创建帐户来为 AdamPlatin123/Open-Deep-Research-workflow-on-Dify 开发做出贡献。

以上就是dify的deep research:

而且这还是最基本的deep research,运行起来各种报错和不稳定,只能当成测试使用而已,不能真正运转。如果我们需要真正可用的,高可用的,高可控的,高性能的复杂agent,还是优先选择LangGraph。这是经过很长时间综合考虑得到的经验,分享给你:

我推荐LangGraph:

LangGraph 是一个基于语言模型(如 OpenAI、Deepseek等)的工作流编排框架,特别适合构建复杂的多步骤、有状态或协作式 AI 应用。

LangGraph实现deep research:

以下是一个基于 LangGraph 的简化版 Deep Research 智能体实现示例,包含核心工作流程和关键代码。该示例模拟了自动研究"气候变化对农业的影响"的过程,重点展示 ​状态管理并行搜索 ​ 和 ​反思循环​ 三大核心机制



核心代码实现(简化版)

1. ​定义状态容器

管理研究过程中的动态数据,使用 TypedDict 结构化存储:

python 复制代码
from typing import TypedDict, Annotated, List
from langchain_core.messages import HumanMessage
from operator import add

class ResearchState(TypedDict):
    user_query: str  # 用户原始问题
    search_queries: Annotated[List[str], add]  # 搜索查询列表(可追加)
    search_results: Annotated[List[str], add]  # 搜索结果(可追加)
    citations: Annotated[List[str], add]  # 引用来源
    is_sufficient: bool  # 信息是否充足

2. ​关键节点函数

每个节点对应研究流程中的一个环节:

  • 查询生成节点(多样化生成搜索关键词)
python 复制代码
def generate_queries(state: ResearchState):
    user_topic = state["user_query"]
    # 模拟 Gemini 生成多样化查询(实际需调用 LLM)
    queries = [
        f"{user_topic} 对粮食产量的影响",
        f"{user_topic} 的农业适应技术",
        f"{user_topic} 经济成本报告 2025"
    ]
    return {"search_queries": queries}
  • 并行搜索节点(模拟多线程搜索)
python 复制代码
def web_research(state: ResearchState, query: str):
    # 模拟 Google Search API 调用(返回标题+摘要)
    results = {
        "气候变化对粮食产量的影响": "研究显示... [来源: IPCC 报告]",
        "农业抗旱技术进展": "基因编辑作物可提升... [来源: Nature]"
    }
    return {
        "search_results": [results[query]], 
        "citations": [f"Source_{hash(query)}"]
    }
  • 反思分析节点(判断信息完整性)
python 复制代码
def reflection(state: ResearchState):
    # 模拟反思逻辑:若结果少于3条则判定信息不足
    is_sufficient = len(state["search_results"]) >= 3
    return {"is_sufficient": is_sufficient}

3. ​构建状态图与工作流

用 LangGraph 编排节点逻辑:

python 复制代码
from langgraph.graph import StateGraph

# 初始化状态图
builder = StateGraph(ResearchState)

# 添加节点
builder.add_node("generate_queries", generate_queries)
builder.add_node("reflection", reflection)
builder.add_node("web_research", web_research)  # 实际需并行化处理

# 设置边关系
builder.set_entry_point("generate_queries")
builder.add_edge("generate_queries", "web_research")
builder.add_conditional_edges(
    "reflection",
    lambda state: END if state["is_sufficient"] else "web_research"
)

# 编译可执行图
research_agent = builder.compile()

4. ​执行研究任务

bash 复制代码
# 启动研究流程
result = research_agent.invoke({
    "user_query": "气候变化对农业的影响"
})

# 输出结果
print("最终报告摘要:", result["search_results"])
print("引用来源:", result["citations"])

执行输出示例

less 复制代码
最终报告摘要: [  "研究显示全球变暖导致小麦减产5-10% [来源: IPCC 报告]",  "基因编辑作物可提升抗旱性 [来源: Nature]",  "2024年亚洲农业损失达$120亿 [来源: FAO]"]
引用来源: ["Source_123", "Source_456", "Source_789"]

小结 : 本质上你可以说,这和dify的逻辑没有区别,但是程序员会觉得代码形式更靠谱和简单,可控和高效。同时复杂性可以进一步大幅提高,基于工作流的 LangGraph 实现简洁且可维护。

使用 LangGraph 构建多代理系统提供了以下优势:

结构化工作流 :LangGraph 为定义代理交互提供清晰的结构,使复杂系统更易于设计和维护。

状态管理 :框架处理多次 LLM 调用之间的状态管理,确保信息在代理之间正确流动。

条件路由 :LangGraph 允许动态决定下一个代理,创建更适应和响应的系统。

检查点 :内置检查点功能便于调试和恢复长时间运行的进程。

可扩展性 :基于图的方法便于添加新代理或修改现有工作流,随着系统的发展。

参考:《How to build a Multi-Agentic Systems for RAG using LangGraph - Full project》nicoladisabato/MultiAgenticRAG | DeepWiki


以下我介绍更多 LangGraph 实现的详细项目示例:



0. 对话与问答系统

  1. 多轮对话机器人
  • 功能:记忆上下文、动态跳转话题、处理模糊查询(如用户连续追问"怎么设置闹钟?"→"音量能调吗?")。
  • LangGraph 价值 :通过状态管理(MessagesState)追踪对话历史,结合条件分支实现意图识别(如转人工客服或调用知识库)。
  • 案例:医疗科普机器人,根据用户病史动态调整回答深度,并在高风险回答前插入人工审核节点。
  1. 智能问答系统(RAG 增强)​
  • 功能:检索文档→多轮总结→验证准确性→循环优化答案。
  • LangGraph 价值:动态控制检索流程(例:未找到答案时引导用户重新提问),支持多轮迭代优化回答质量。
  • 案例:法律文书助手,解析合同 PDF 后,通过循环判断逻辑处理模糊条款查询。

参考:《 LangChain+LangGraph+RAGAS=可靠的 RAG 系统》,介绍怎样利用langgraph打造工业级的RAG, mp.weixin.qq.com/s/NWo5jJmmw...


1. 自动化工作流与业务流程

  • 智能客服系统

    • 多轮对话管理:处理用户查询 → 数据库检索 → 生成回答 → 满意度评估 → 转人工(如果需要)。
    • 自动工单分类:用户输入 → 意图识别 → 路由到对应部门 → 生成响应模板。
  • 审批流程自动化

    • 结合规则引擎和 LLM:员工提交申请 → 经理审核(自动生成审核意见) → 财务部门处理。
  • 电商订单处理

    • 订单确认 → 库存检查 → 支付验证 → 物流分配 → 客户通知(邮件/SMS)。

参考:《Customer Support Email Automation with AI Agents and RAG》 GitHub - kaymen99/langgraph-email-automation: Multi AI agents for customer support email automation built with Langchain & Langgraph

《human-in-the-loop 邮件自动化处理》 GitHub - langchain-ai/agents-from-scratch: Build an email assistant with human-in-the-loop and memory

介绍基于langgraph处理邮件/客服等自动化工作,还有human-in-the-loop的配合使用。

同时,推荐我喜欢的hitl工具:GitHub - ptonlix/gohumanloop: 💯 Perfecting AI workflows with human intelligence


2. 复杂决策与动态规划

  • 旅行规划助手

    • 用户输入偏好 → 调用多个 API(航班、酒店、景点)→ 生成个性化行程 → 动态调整(如天气变化)。参考:《 用 AI 打造你的专属旅行计划:多智能体旅行规划工具(实战篇)》mp.weixin.qq.com/s/WszVU5N31...
  • 投资建议引擎

    • 用户风险测评 → 市场数据获取 → 投资组合生成 → 定期复盘调整。
  • 医疗诊断辅助

    • 症状输入 → 分诊建议 → 推荐检查项目 → 生成通俗易懂的解释(需结合专业数据库)。

参考:《 Gemini 开源了全栈 LangGraph 快速启动项目:开发者的新利器》,deep reseach例子,mp.weixin.qq.com/s/wLYIr1AQy...

《多渠道信息调研和多react_agent》介绍怎样利用多个langgraph节点''react_agent''来进行多渠道信息收集处理,复杂的决策和动态规划, GitHub - kaymen99/personal-ai-assistant: Your personal AI assistant powered by multiple AI agents. Connects to WhatsApp, Slack, or Telegram to manage your emails, schedule, to-dos, messages, and daily research.

objectivec 复制代码
//介绍怎样利用多个react_agent来进行复杂的决策和动态规划

llm = get_llm_by_provider(self.model, self.temperature)
        self.agent = create_react_agent(
            llm, 
            tools=self.tools, 
            state_modifier=self.system_prompt,
            **({"checkpointer": self.memory} if self.memory else {"checkpointer": False}) # set to False to avoid "MULTIPLE_SUBGRAPHS" error
        )

3. 多智能体协作系统

  • 虚拟团队协作

    • 分配角色(项目经理、工程师、设计师)→ 模拟会议讨论 → 生成任务清单。
  • 游戏 NPC 交互

    • NPC 根据玩家行为动态响应,记忆历史互动并影响后续剧情。
  • 辩论模拟器

    • 多个 AI 角色持不同观点,按规则辩论并生成总结报告。

参考:《 使用 LangGraph 打造 Multi-Agent 系统》 mp.weixin.qq.com/s/OmJdNh8zF...

多代理系统是一组相互交互的独立"代理"。可以将每个代理想象成一个能够独立思考和行动的个体,类似于人类。这些代理一起工作或竞争以实现特定目标或完成任务。

简单来说,想象一群机器人清理你的房子。每个机器人是一个代理。一个可能负责吸尘地板,另一个可能负责擦拭家具,还有一个可能负责倒垃圾。它们各自独立工作,但通过沟通和协调确保整个房子被高效清洁。这就是多代理系统的本质:多个实体以协调的方式一起工作,以执行复杂任务或解决问题。

  • Researcher :研究员。针对研究主题采集网络资源,做自主研究
  • Editor :编辑。负责初期规划研究大纲和整体结构
  • Reviewer :审阅。根据设定的标准对研究结果进行检查验证
  • Revisor :修订。根据审阅结果对研究结果进行修订
  • Writer :撰写。根据研究输出撰写最终报告内容
  • Publisher :发布。负责用不同的格式发布最终研究报告

参考:
《 学习使用LangGraph x GPT-Researcher构建一个多智能体架构的AI自主研究助理》 mp.weixin.qq.com/s/PlpsIT5bj...
《TradingAgents:多代理 LLM 金融交易框架》 :部署由LLM驱动的专业智能体------从基本面分析师、情绪分析师、技术分析师,到交易员、风险管理团队------平台能够协同评估市场状况并制定交易决策。 GitHub - TauricResearch/TradingAgents: TradingAgents: Multi-Agents LLM Financial Trading Framework


4. 数据处理与分析流水线

  • 自动化报告生成

    • 数据库查询 → 数据清洗 → 可视化生成 → 自然语言总结。
  • 实时舆情监控

    • 爬取社交媒体 → 情感分析 → 关键事件提取 → 生成日报。
  • 科研文献综述

    • 检索论文 → 提取关键结论 → 对比分析 → 生成综述草稿。

参考: 《自动化潜在客户线索研究》GitHub - kaymen99/sales-outreach-automation-langgraph: Automate lead research, qualification, and outreach with AI agents and Langgraph, creating personalized messaging and connecting with your CRMs (HubSpot, Airtable, Google Sheets)

复制代码
《自动化潜在客户线索研究》
 
1 LinkedIn Profile Scraping:自动从 LinkedIn 收集有关潜在客户及其公司的基本信息,以创建全面的个人资料。
 
2 公司数字存在分析 :评估公司的网站和博客内容,以深入了解其产品和服务。此外,评估他们在 Facebook、Twitter、YouTube 等平台上的社交媒体活动。
 
3 最近的公司新闻分析 :跟踪与公司相关的最新新闻和公告,以深入了解他们当前的举措和挑战。
 
4 痛点识别 :识别公司面临的潜在挑战或差距,并就贵机构的产品和服务如何解决这些问题提供量身定制的建议。
 
5 报告生成 :为每个分析生成详细的报告,这些报告既保存在本地,也保存在 Google Analytics 中。创建一份综合的全球研究报告,结合来自领导档案,公司档案和数字存在的见解。 

《Langgraph故事写作》:langchain-ai/story-writing | DeepWiki

它使用户能够在人工智能的帮助下协作编写故事,具有编辑现有章节、沿着不同路径继续叙述以及维护故事章节之间复杂关系的能力。




所以,为何选择 LangGraph?​

  • 复杂控制流:突破传统链式结构的限制,支持循环、分支、人工干预等非线性逻辑。
  • 状态持久化:自动管理多轮交互状态,降低开发复杂度。
  • 多 Agent 原生支持:直接建模 Agent 协作,无需手动调度线程。
  • 企业级扩展:内置检查点(Checkpoint)机制,支持高可靠生产部署。
相关推荐
编写美好前程几秒前
springboot项目如何写出优雅的service?
java·spring boot·后端
Aurora_NeAr15 分钟前
大数据之路:阿里巴巴大数据实践——实时技术与数据服务
大数据·后端
过客随尘23 分钟前
Mysql RR事务隔离级别引发的生产Bug,你中招了吗?
后端·mysql
知其然亦知其所以然24 分钟前
社招 MySQL 面试官问我:InnoDB 的 4 大特性?我靠这 4 个故事一战封神!
后端·mysql·面试
追逐时光者29 分钟前
推荐 6 款基于 .NET 开源的串口调试工具,调试效率提升利器!
后端·.net
前端老鹰31 分钟前
Node.js 日志处理利器:pino 模块全面解析
后端·node.js
没有bug.的程序员1 小时前
《 Spring Boot整合多数据源:分库业务的标准做法》
java·spring boot·后端·数据源·分库
中东大鹅1 小时前
如何理解SpringBoot starters的自动装配
java·spring boot·后端
Victor3561 小时前
MySQL(160)如何理解MySQL的存储引擎架构?
后端
Victor3561 小时前
MySQL(159)MySQL的逻辑架构是什么?
后端