现在位置: 首页 > AI Agent 教程 > 正文

AI Workflow(AI 工作流)

AI Workflow(AI 工作流)是将多个 AI 模型调用、工具使用、数据处理步骤有序组合成一条自动化流水线的系统。

单独调用一次 LLM 能回答问题,但现实任务往往需要:查网页 → 提取信息 → 分析 → 写报告 → 发送邮件。AI Workflow 就是把这些步骤串起来,让 AI 自动完成完整任务,而不只是回答一句话。

一个直观的类比

想象一个装配流水线:

模式类比说明
单次 LLM 调用像一个工匠给他一块铁,他还给你一把剑
AI Workflow像整条流水线原料进去,自动经过冶炼 → 锻造 → 淬火 → 打磨 → 包装,成品出来

每个步骤可以是 AI 模型、代码函数、外部 API,或者人工审核节点。

从问答到做事的进化

AI 能力的三个层次 第一层:单次问答 Q & A 用户输入 → LLM → 输出 示例: "帮我写一首诗" 局限:只能单步 无法完成复杂任务 第二层:Chain 链式调用 Chain 步骤A → 步骤B → 步骤C 示例: 翻译 → 摘要 → 润色 局限:流程固定 无法动态决策 第三层:AI Workflow 含 Agent Agent 感知 → 规划 → 工具调用 → 反思 → 循环迭代 示例:研究竞品并生成报告 动态决策,可完成开放性任务 AI Workflow 是当前 AI 应用落地的主要范式,也是 AI Agent 的实现基础

为什么需要 AI Workflow

单次调用的局限

一次 LLM 调用能完成的事情非常有限:

  • 上下文窗口有限:无法一次读完一本书
  • 无法访问实时信息:训练数据有截止日期
  • 无法执行操作:不能真正发邮件、写代码并运行
  • 无法自我校验:生成错误后无法意识到并修正
  • 复杂任务容易出错:一步做太多事情导致质量下降

AI Workflow 解决的五大核心问题

AI Workflow 解决的五大核心问题 任务分解 将复杂任务拆解 为多个小步骤 每步专注一件事 写报告 → 调研+ 大纲+撰写+审校 提升准确率 降低单步压力 工具集成 调用搜索、数据库 代码执行器、API 等外部能力 搜索引擎、计算器 数据库、邮件服务 突破知识边界 连接真实世界 迭代反思 AI 可以检验自身 输出,发现问题后 重新尝试修正 生成代码 → 运行 → 报错 → 修复 自动纠错 质量更有保障 并行处理 多个子任务同时 执行,不必排队 等待前一步完成 同时分析财务 技术、市场三维度 大幅提升效率 节省运行时间 可观测性 每一步的输入输出 都可以被记录 监控和调试 日志、追踪 错误定位 生产级别可靠 便于排查问题

核心组成要素

一个完整的 AI Workflow 由以下核心要素构成。

AI Workflow 核心架构组成 AI Workflow 编排引擎 LLM/模型 GPT-4、Claude Gemini、本地模型 Workflow 的大脑 工具/Tools 搜索、代码执行 数据库、外部 API 与外部交互 记忆/Memory 短期:对话历史 长期:向量数据库 跨会话持久化 状态/State 任务进度、中间 结果、上下文传递 如同接力棒 人工介入 审核、反馈 纠正、授权 高风险操作暂停 路由/条件 根据条件决定 走哪条执行路径 分支、循环、跳转 输入/输出 文本、图像、文件 结构化数据 各组件由编排引擎(LangChain / LlamaIndex / Dify 等)统一调度协作

各要素详解

LLM(大语言模型) - Workflow 的"大脑",负责推理、生成、决策。常用:GPT-4o、Claude 3.5、Gemini 1.5、本地 Llama 3。

工具(Tools) - 让 AI 能与外部世界交互的接口,包括:搜索引擎(Tavily、Serper、Bing)、代码执行器(Python REPL、沙箱环境)、数据库查询(SQL、向量 DB)、外部 API(天气、股票、邮件、日历)、文件操作(读写、解析 PDF/Excel)。

记忆(Memory) - 短期记忆存储当前会话对话历史(存在 prompt 里),长期记忆通过向量数据库 + RAG 实现跨会话持久存储,工作记忆维护任务执行中的中间状态。

状态(State) - 任务在各步骤之间传递的信息载体,如同接力棒,每一步都能读取前步结果并写入新结果。

路由/条件(Router) - 根据前一步输出动态决定下一步走向,实现分支、循环、跳转等复杂流程控制。

人工介入(Human in the Loop) - 在关键节点暂停等待人工确认,适用于高风险操作(如删除数据、发送邮件、财务操作)。


六大常见 Workflow 模式

以下是 AI Workflow 中最常用的六种设计模式,从简单到复杂,适用于不同场景。

模式一:顺序链(Sequential Chain)

最基础的模式,步骤 A → B → C 线性执行,上一步输出是下一步输入。

模式一:顺序链(Sequential Chain) 输入 用户原始 英文文章 Step 1 翻译 英文→中文 GPT-4o Step 2 摘要 提炼核心观点 100字以内 Step 3 润色 优化表达 添加标题 输出 精炼中文摘要 含标题与要点 每步输出自动成为下一步的输入,线性流转,逻辑清晰
维度说明
适用场景文档处理流水线、内容生成、数据转换
优点简单、可预测
缺点僵硬,无法根据内容动态调整

模式二:条件路由(Conditional Routing)

根据某一步的输出内容,动态选择不同的后续路径。

模式二:条件路由(Conditional Routing) 用户问题 "怎么用 Python 排序列表?" 意图分类 Router 代码问题 → 代码生成 Agent 运行代码验证 返回结果+解释 知识问题 → RAG 知识库检索 召回相关文档 基于文档生成答案 实时问题 → 联网搜索 搜索最新信息 整合成答案 路由节点根据问题类型,将任务派发给最合适的处理分支
维度说明
适用场景智能客服、多功能助手、问题分类处理
优点灵活,资源利用率高
缺点路由逻辑需要精心设计,分类错误影响全流程

模式三:并行执行(Parallel Execution)

多个子任务同时运行,最后汇总结果。

维度说明
适用场景多维度分析、批量处理、独立子任务
优点速度大幅提升
缺点需要处理并发控制和结果合并逻辑

模式四:ReAct 循环(Reason + Act)

AI 先推理决定做什么,再行动调用工具,根据结果继续推理,循环直到任务完成。这是 AI Agent 的核心模式。

模式四:ReAct 循环(Reason → Act → Observe → Repeat) 任务 查询北京今天 天气并推荐穿搭 Thought 思考 我需要先获取 北京实时天气 应调用天气 API Action 行动 调用天气工具 get_weather( city="北京") Observation 观察 返回:晴天,气温 18°C,微风 (工具执行结果) 循环继续推理 Thought (第2轮) 天气已知,现在可以 直接给出穿搭建议 Final Answer 最终答案 北京今天晴,18°C,建议穿轻薄外套 长裤+运动鞋,可带一件薄外套备用。 (任务完成,退出循环) 每轮"思考→行动→观察"不断积累信息,直到 LLM 认为已可作出最终回答
维度说明
适用场景AI Agent、复杂任务执行、开放式问题求解
优点动态灵活,可处理未知情况
缺点循环次数不可控,需要设定最大步数防止死循环

模式五:Plan & Execute(规划后执行)

先让 LLM 制定完整计划,再按计划逐步执行。与 ReAct 的区别是"先想清楚,再行动"。

模式五:Plan & Execute(先规划再执行) 任务目标 调研竞品并写 出分析报告 Planner 规划 1 搜集竞品信息 2 提取关键特征 3 对比分析 4 撰写报告 执行1 搜索引擎 调用 x3 执行2+3 LLM 提取 对比分析 执行4 → 输出 生成 Markdown 竞品分析报告 Planner 只用一次 LLM 调用制定全局计划,后续各步骤严格按计划执行

模式六:多智能体协作(Multi-Agent)

多个专职 Agent 分工合作,每个 Agent 有自己的角色和工具集。

模式六:多智能体协作(Multi-Agent) 协调者 Agent 接收用户任务,分配给专职 Agent,汇总结果 研究员 Agent 工具:搜索引擎、网页抓取 职责:收集资料、整理事实 输出:结构化的信息摘要 ↑ 向协调者汇报 分析师 Agent 工具:计算器、Python 职责:数据分析、图表生成 输出:分析结论 ↑ 向协调者汇报 写作者 Agent 工具:文档模板 职责:撰写、润色报告 输出:最终文档 ↑ 向协调者汇报 审核者 Agent 工具:事实核查工具 职责:检验准确性 输出:审核意见 ↑ 向协调者汇报 最终成果 → 用户 各 Agent 专精一项技能,协调者统筹全局,分工合作效率远超单一 Agent
维度说明
适用场景复杂软件开发、科研辅助、企业自动化
优点专职专用,质量更高,易于扩展
缺点系统复杂度高,Agent 间通信需要精心设计

主流框架与工具对比

以下是当前最主流的 AI Workflow 框架全景对比,帮助你根据自身情况做出选择。

AI Workflow 主流框架全景对比 框架 定位 核心特点 适合人群 学习曲线 开源 LangChain Python/JS 代码优先框架 最完整生态 Chain、Agent、RAG 全覆盖 工具集成数量最多(200+) LangSmith 可观测平台 有 Python 基础的开发者 需要大量自定义集成 中等 LangGraph LangChain 出品 图状 Agent 框架 有状态工作流 用"图"定义复杂工作流 内置状态管理、断点续传 支持 Human-in-the-Loop 需要复杂流程控制的场景 生产级 Agent 应用 较难 LlamaIndex Python RAG 专精框架 数据处理最强 数据摄入、索引、检索最优 支持 80+ 数据源连接器 高级 RAG 策略内置 知识库、文档问答场景 需要接入大量非结构化数据 中等 Dify 开源 LLMOps 可视化低代码 全栈 AI 平台 拖拽构建 Workflow,无需写代码 内置应用管理、API 发布 支持自托管和云端 非技术背景用户 快速原型到生产部署 最低 n8n 自动化平台 通用工作流自动化 含 AI 节点 400+ 服务集成,可视化编排 AI 节点 + 传统自动化混合 可自托管,数据不出境 需要连接各类 SaaS 系统 业务流程自动化场景 较低 CrewAI Python 多 Agent 协作 角色扮演框架 以"角色"和"任务"定义 Agent 内置委托、监督机制 API 极简,上手快 多 Agent 协作场景 有 Python 基础的入门者 较低 新手推荐:有代码基础 → LangChain / CrewAI;非技术背景 → Dify / n8n

框架选型决策树

根据你的具体情况,按照以下决策树选择合适的框架:

你的情况是什么?
│
├─── 没有编程基础,想用可视化工具搭建
│    ├─── 主要是 AI 应用(问答、生成)→ Dify(首选)
│    └─── 需要连接 Slack/邮件等 SaaS 系统 → n8n
│
├─── 有 Python 基础,代码优先
│    ├─── 做知识库 / RAG 系统 → LlamaIndex
│    ├─── 做多 Agent 协作,想快速上手 → CrewAI
│    ├─── 需要复杂有状态流程控制 → LangGraph
│    └─── 通用场景,想要最大生态 → LangChain
│
└─── 已有明确场景,生产级要求
     ├─── 高并发、精细控制 → LangGraph + LangSmith
     └─── 企业部署、私有化 → Dify 自托管

快速上手:Python 代码示例

以下示例从最简单的顺序链到复杂的多 Agent 协作,逐步演示 AI Workflow 的实现方式。

LangChain 顺序链

最基础的 Workflow 模式,用管道操作符 | 串联多个 LLM 调用步骤。

安装依赖包:

pip install langchain langchain-openai

实例

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = ChatOpenAI(model="gpt-4o-mini", api_key="your-api-key")

# ─── 定义三个步骤 ────────────────────────────────────────────
# 步骤 1:将文章翻译成中文
translate_prompt = ChatPromptTemplate.from_template(
    "将下面的英文文章翻译成中文,保持原意:\n\n{article}"
)

# 步骤 2:提取摘要
summarize_prompt = ChatPromptTemplate.from_template(
    "请将以下文章提炼成 3 个要点,每点一句话:\n\n{translated}"
)

# 步骤 3:生成标题
title_prompt = ChatPromptTemplate.from_template(
    "根据以下摘要,生成一个吸引人的中文标题(15字以内):\n\n{summary}"
)

parser = StrOutputParser()

# ─── 用 | 操作符链接成流水线 ─────────────────────────────────
chain = (
    {"translated": translate_prompt | llm | parser}
    | {"summary": summarize_prompt | llm | parser,
       "translated": lambda x: x["translated"]}
    | title_prompt | llm | parser
)

# ─── 运行 ────────────────────────────────────────────────────
article = """
Artificial intelligence is transforming how we work and live.
From automating repetitive tasks to assisting in creative work,
AI tools are becoming indispensable in modern workflows...
"""


result = chain.invoke({"article": article})
print(result)
AI 正在重塑现代工作流:从自动化到创意辅助

工具调用 Agent(ReAct 模式)

ReAct 是 AI Agent 的核心模式,让 AI 在思考和行动之间循环,直到完成任务。

实例

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.tools import tool
from langchain import hub
import requests, datetime

# ─── 定义工具 ────────────────────────────────────────────────
@tool
def get_weather(city: str) -> str:
    """获取指定城市的当前天气信息"""
    # 实际项目中替换为真实天气 API
    mock_data = {
        "北京": "晴天,气温 22°C,微风",
        "上海": "多云,气温 26°C,湿度 75%",
        "广州": "小雨,气温 30°C,建议带伞",
    }
    return mock_data.get(city, f"暂无 {city} 的天气数据")

@tool
def search_web(query: str) -> str:
    """在网络上搜索信息,返回相关内容摘要"""
    # 实际项目中接入 Tavily / Serper API
    return f"搜索 '{query}' 的结果:这是一个模拟的搜索结果..."

@tool
def calculate(expression: str) -> str:
    """计算数学表达式,例如 '2 + 3 * 4'"""
    try:
        result = eval(expression, {"__builtins__": {}}, {})
        return str(result)
    except Exception as e:
        return f"计算错误:{e}"

@tool
def get_date() -> str:
    """获取今天的日期"""
    return datetime.date.today().strftime("%Y年%m月%d日")

# ─── 创建 Agent ───────────────────────────────────────────────
tools = [get_weather, search_web, calculate, get_date]
llm   = ChatOpenAI(model="gpt-4o", temperature=0)

# 使用 LangChain Hub 的标准 ReAct prompt
prompt = hub.pull("hwchase17/react")

agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,      # 打印每步思考过程,方便调试
    max_iterations=8,  # 防止无限循环
    handle_parsing_errors=True
)

# ─── 运行 ────────────────────────────────────────────────────
result = agent_executor.invoke({
    "input": "今天是几号?北京天气怎么样?如果出门步行 5km 消耗约 300 卡路里,"
             "跑步同样距离消耗大约是步行的 1.6 倍,请计算跑步消耗的卡路里。"
})

print(result["output"])
# Agent 会自动决策:先调用 get_date → get_weather("北京") → calculate("300*1.6")
# 最后综合所有信息给出完整回答

LangGraph 有状态 Workflow

LangGraph 用图的方式定义复杂流程,每个节点是一个函数,边定义跳转逻辑。

实例

from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from typing import TypedDict, Annotated
import operator

# ─── 定义状态结构(在节点间传递的数据)────────────────────────
class ResearchState(TypedDict):
    topic: str                             # 研究主题
    research_notes: str                    # 研究笔记
    draft: str                             # 草稿
    review_feedback: str                   # 审阅意见
    final_report: str                      # 最终报告
    revision_count: Annotated[int, operator.add]   # 修改次数(累加)

llm = ChatOpenAI(model="gpt-4o")

# ─── 定义节点函数 ─────────────────────────────────────────────
def research_node(state: ResearchState) -> dict:
    """节点1:调研阶段"""
    response = llm.invoke(
        f"请对以下主题进行简要调研,列出 5 个关键要点:{state['topic']}"
    )
    return {"research_notes": response.content}

def write_node(state: ResearchState) -> dict:
    """节点2:撰写草稿"""
    prompt = f"""
    主题:{state['topic']}
    调研笔记:{state['research_notes']}
    {'上次审阅意见:' + state.get('review_feedback', '') if state.get('review_feedback') else ''}

    请根据以上内容撰写一篇 300 字的分析报告草稿。
    """

    response = llm.invoke(prompt)
    return {"draft": response.content, "revision_count": 1}

def review_node(state: ResearchState) -> dict:
    """节点3:审阅草稿"""
    response = llm.invoke(
        f"审阅以下报告,如果质量达标回复 'APPROVED',否则给出具体修改意见:\n\n{state['draft']}"
    )
    return {"review_feedback": response.content}

def finalize_node(state: ResearchState) -> dict:
    """节点4:最终定稿"""
    return {"final_report": state["draft"]}

# ─── 路由函数:决定审阅后走哪条路 ─────────────────────────────
def should_revise(state: ResearchState) -> str:
    if "APPROVED" in state["review_feedback"]:
        return "finalize"           # → 最终定稿
    elif state["revision_count"] >= 3:
        return "finalize"           # → 超过3次修改,强制结束
    else:
        return "revise"             # → 返回写作节点修改

# ─── 构建工作流图 ─────────────────────────────────────────────
workflow = StateGraph(ResearchState)

# 添加节点
workflow.add_node("research",  research_node)
workflow.add_node("write",     write_node)
workflow.add_node("review",    review_node)
workflow.add_node("finalize",  finalize_node)

# 设置入口
workflow.set_entry_point("research")

# 添加边(定义流转逻辑)
workflow.add_edge("research", "write")       # 调研 → 写作
workflow.add_edge("write",    "review")      # 写作 → 审阅

# 条件边:审阅后根据结果选择路径
workflow.add_conditional_edges(
    "review",
    should_revise,
    {
        "revise":   "write",    # 需要修改 → 回到写作
        "finalize": "finalize"  # 通过审核 → 最终定稿
    }
)

workflow.add_edge("finalize", END)

# 编译并运行
app = workflow.compile()

result = app.invoke({"topic": "生成式 AI 对软件开发行业的影响", "revision_count": 0})
print(result["final_report"])

CrewAI 多 Agent 协作

CrewAI 通过定义角色和任务,让多个 Agent 像团队一样协作。

实例

from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o")

# ─── 定义 Agent(角色) ────────────────────────────────────────
researcher = Agent(
    role="市场研究员",
    goal="收集并整理关于目标主题的全面、准确的市场信息",
    backstory="你是一位经验丰富的市场分析师,擅长从海量信息中提炼关键洞察",
    llm=llm,
    verbose=True
)

analyst = Agent(
    role="数据分析师",
    goal="基于研究员提供的信息,进行深度分析并得出有价值的结论",
    backstory="你擅长用数据说话,能发现隐藏在信息背后的趋势和机会",
    llm=llm,
    verbose=True
)

writer = Agent(
    role="报告撰写专家",
    goal="将分析结论撰写成清晰、专业、有说服力的报告",
    backstory="你有丰富的商业写作经验,能让复杂的分析变得易于理解",
    llm=llm,
    verbose=True
)

# ─── 定义 Task(任务) ────────────────────────────────────────
research_task = Task(
    description="调研中国新能源汽车市场的现状,包括主要品牌、市场份额、增长趋势",
    expected_output="一份包含 5 个关键数据点的市场调研报告,含数字和具体事实",
    agent=researcher
)

analysis_task = Task(
    description="基于调研报告,分析未来 3 年的机会与风险,给出投资评级建议",
    expected_output="SWOT 分析表格 + 投资评级(强烈推荐/推荐/中性/谨慎)+ 理由",
    agent=analyst,
    context=[research_task]    # 依赖调研任务的输出
)

writing_task = Task(
    description="将调研和分析整合成一份 500 字的专业投资简报,格式清晰",
    expected_output="包含执行摘要、市场现状、机会风险、投资建议四个部分的简报",
    agent=writer,
    context=[research_task, analysis_task]
)

# ─── 组建团队并执行 ───────────────────────────────────────────
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.sequential,    # 顺序执行(也可改为 hierarchical)
    verbose=True
)

result = crew.kickoff()
print(result)

Human-in-the-Loop(人工审核节点)

LangGraph 支持在关键步骤暂停,等待人工确认后再继续执行。

实例

from langgraph.graph import StateGraph, END
from langgraph.checkpoint.memory import MemorySaver
from typing import TypedDict

class EmailState(TypedDict):
    recipient: str
    content: str
    approved: bool

def draft_email(state: EmailState) -> dict:
    """起草邮件"""
    content = f"尊敬的 {state['recipient']},\n\n这是 AI 起草的邮件内容...\n\n此致"
    return {"content": content}

def send_email(state: EmailState) -> dict:
    """发送邮件(高风险操作,需要人工审核后才执行)"""
    print(f"邮件已发送给 {state['recipient']}")
    return {}

# 路由:根据人工审核结果决定是否发送
def check_approval(state: EmailState) -> str:
    return "send" if state.get("approved") else END

workflow = StateGraph(EmailState)
workflow.add_node("draft", draft_email)
workflow.add_node("send", send_email)
workflow.set_entry_point("draft")

# draft 完成后暂停,等待人工审核(interrupt_after)
workflow.add_conditional_edges("draft", check_approval, {"send": "send", END: END})
workflow.add_edge("send", END)

# 使用 MemorySaver 支持中断和恢复
memory = MemorySaver()
app = workflow.compile(
    checkpointer=memory,
    interrupt_after=["draft"]      # 在 draft 节点后暂停
)

config = {"configurable": {"thread_id": "email-001"}}

# 第一次运行:执行到 draft 后暂停
state = app.invoke({"recipient": "客户A", "approved": False}, config)
print("草稿已生成,等待审核:")
print(state["content"])

# 人工审核后,更新状态并继续执行
user_input = input("\n是否批准发送?(y/n): ")
if user_input.lower() == "y":
    app.update_state(config, {"approved": True})
    app.invoke(None, config)   # 从断点继续
    print("邮件已发送")
else:
    print("已取消发送")

Prompt 工程:Workflow 中的关键技巧

在 AI Workflow 中,Prompt 的质量直接影响每个节点的输出质量。

实例

# 模糊的角色定义
# system_prompt = "你是一个 AI 助手,帮我分析这份文档"

# 清晰的角色定义(推荐)
system_prompt = """
你是一位专业的财务分析师,专注于识别财务报告中的风险信号。
你的任务:从以下报告中提取所有涉及负债、现金流和盈利能力的关键数据点。
输出格式:JSON,包含 risk_level(high/medium/low)和 key_findings(列表)。
注意:只输出 JSON,不要添加任何说明文字。
"""

实例

# 传递非结构化文本
# state["previous_output"] = "分析结果:这个公司看起来不错,有一些风险..."

# 传递结构化数据(推荐)
state["analysis_result"] = {
    "risk_level": "medium",
    "key_findings": ["负债率 45%,行业均值 38%", "现金流为正,Q3 环比下降 12%"],
    "recommendation": "谨慎持有"
}

实例

# 在 prompt 中强制要求 JSON 输出
prompt = """
请分析以下文本的情感倾向。
严格按照如下 JSON 格式输出,不要添加任何其他内容:
{
  "sentiment": "positive" | "negative" | "neutral",
  "confidence": 0.0-1.0,
  "reason": "简短说明"
}

文本:{text}
"""

错误处理与重试

实例

from tenacity import retry, stop_after_attempt, wait_exponential
import logging

@retry(
    stop=stop_after_attempt(3),                         # 最多重试 3 次
    wait=wait_exponential(multiplier=1, min=2, max=10)  # 指数退避等待
)
def call_llm_with_retry(prompt: str) -> str:
    try:
        response = llm.invoke(prompt)
        return response.content
    except Exception as e:
        logging.error(f"LLM 调用失败:{e}")
        raise

def safe_parse_json(text: str) -> dict:
    """安全解析 LLM 输出的 JSON"""
    import json, re
    # 提取 JSON 部分(LLM 有时会加多余的说明文字)
    json_match = re.search(r'\{.*\}', text, re.DOTALL)
    if json_match:
        try:
            return json.loads(json_match.group())
        except json.JSONDecodeError:
            pass
    return {"error": "解析失败", "raw": text}

成本控制

实例

# ─── 根据任务重要性选择模型 ────────────────────────────────
def get_llm(task_type: str):
    if task_type == "classification":   # 分类任务,轻量模型足够
        return ChatOpenAI(model="gpt-4o-mini")
    elif task_type == "generation":     # 生成任务,用中等模型
        return ChatOpenAI(model="gpt-4o-mini")
    elif task_type == "reasoning":      # 复杂推理,用强模型
        return ChatOpenAI(model="gpt-4o")

# ─── 缓存重复请求 ──────────────────────────────────────────
from langchain.globals import set_llm_cache
from langchain_community.cache import InMemoryCache
set_llm_cache(InMemoryCache())   # 相同输入直接返回缓存,不重复计费

# ─── 文本分块避免超长 ──────────────────────────────────────
from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=2000,       # 每块 2000 字符
    chunk_overlap=200      # 重叠 200 字符保证上下文连贯
)
chunks = splitter.split_text(long_document)

典型应用场景

AI Workflow 已经在多个领域广泛落地,以下是六个最具代表性的场景。

AI Workflow 典型应用场景 AI 编程助手 用户描述需求 → 理解需求 → 生成代码 → 自动运行 → 发现报错 → 自动修复 → 生成文档和测试用例 代表:GitHub Copilot Workspace Claude Code、Cursor 自动化研究报告 接收研究主题 → 分解子问题 → 并行搜集资料 → 提取 关键信息 → 综合分析 → 生成带引用的完整报告 代表:Perplexity Deep Research OpenAI Deep Research 智能客服系统 识别用户意图 → 查询订单 数据库 → 检索政策文档 → 生成个性化回复 → 复杂问题转人工处理 代表:各大电商平台 AI 客服 银行智能客服 数据分析自动化 上传 Excel/CSV → 理解 数据结构 → 自动选择 分析方法 → 执行 Python → 生成图表+自然语言解读 代表:ChatGPT Advanced Data Analysis 内容营销流水线 输入主题和受众 → 调研 热点 → 生成大纲 → 撰写 全文 → 优化 SEO → 生成 配图描述 → 多平台适配 代表:各类 AI 写作 和营销自动化工具 医疗辅助诊断 患者描述症状 → 结构化 病史 → 检索医学文献 → 分析影像报告 → 生成 参考建议 → 医生确认 注:高风险场景必须保留 Human-in-the-Loop

最佳实践与常见陷阱

常见陷阱与解决方案

以下是初学者在使用 AI Workflow 时最容易遇到的问题。

陷阱现象解决方案
幻觉级联前一步 AI 输出错误,被当成事实传给下一步,错误被放大关键节点增加验证步骤;数值类信息用工具获取
无限循环ReAct Agent 反复调用工具,不知道何时停止设置 max_iterations;给 LLM 明确的终止条件
上下文爆炸随着步骤增加,传入 LLM 的文本越来越长,超出窗口每步只传必要字段;用摘要压缩历史信息
工具滥用Agent 明明可以直接回答,却反复调用工具优化工具描述;给 LLM 明确说明何时不需要工具
JSON 解析失败LLM 输出格式不稳定,程序崩溃加 safe_parse_json;用 LangChain OutputParser
费用超支未估算 token 用量,月底账单超预期先用 gpt-4o-mini 测试;用 LangSmith 监控用量
并发冲突多个 Agent 同时写同一个状态导致数据错乱用 LangGraph 内置状态管理;避免共享可变状态

总结与学习路径

核心知识点回顾

AI Workflow 核心知识点 核心要素 LLM、工具 记忆、状态 路由、人工 介入六大件 构成完整系统 六大模式 顺序链 条件路由 并行执行 ReAct 循环 Plan&Execute 多 Agent 主流框架 LangChain LangGraph LlamaIndex CrewAI Dify / n8n 按需选型 关键代码 Chain 链式调用 tool 工具定义 StateGraph 状态图 Agent + Executor Human-in-Loop interrupt_after 关键陷阱 幻觉级联 无限循环 上下文爆炸 JSON 解析失败 费用超支 预防优于治疗 应用场景 AI 编程助手 研究报告 智能客服 数据分析 内容生产 医疗辅助

推荐学习路径

第一阶段:理解基础(1 周)

  1. 理解 LLM API 调用,能用 OpenAI SDK 发起请求
  2. 跑通本文 LangChain 顺序链示例
  3. 理解 Prompt Engineering 基本原则

第二阶段:工具与 Agent(2 周)

  1. 学会用 @tool 装饰器定义工具
  2. 跑通 ReAct Agent 示例,观察 verbose 日志理解循环逻辑
  3. 用 Dify 或 n8n 搭建一个可视化 Workflow 原型

第三阶段:复杂 Workflow(3 周)

  1. 学习 LangGraph 状态图,实现带条件分支的工作流
  2. 用 CrewAI 实现一个双 Agent 协作任务
  3. 接入真实工具(Tavily 搜索、Python REPL)
  4. 用 LangSmith 观测并调试你的 Workflow

第四阶段:生产就绪(持续)

  1. 实现错误重试、结构化输出解析
  2. 成本监控与优化(模型分级使用)
  3. 部署到生产,设置监控告警

参考资源