Workflow 与 Agent 究竟是什么?一文讲透概念区别与代码实战

发布时间:2026/8/3 10:56:47
Workflow 与 Agent 究竟是什么?一文讲透概念区别与代码实战 1. 引言在 AI 应用开发中Workflow和Agent是两个高频出现却又容易混淆的概念。很多人把它们都理解为“让大模型干活”但两者的设计哲学、执行方式和适用场景截然不同。本文将从概念、区别、选型三个维度展开并给出可运行的代码实战帮助你真正理解它们。2. 什么是 WorkflowWorkflow工作流是一种预先编排好的、确定性的执行流程。它把任务拆解为一系列固定步骤每个步骤做什么、按什么顺序执行、在什么条件下分支都在运行前由开发者写死。大模型在其中只是某个环节的“执行者”整体流程不依赖模型自主决策。Workflow 的核心特征确定性同样的输入走同样的路径得到可预期的结果。可控性每一步都由代码显式控制便于调试、测试和审计。可预测成本调用次数、耗时、Token 消耗基本固定。典型场景包括内容审核流水线、数据清洗管道、定时报告生成、多步表单校验等。3. 什么是 AgentAgent智能体是一种自主决策的执行体。它接收一个目标由大模型作为“大脑”动态规划执行路径决定调用哪个工具、按什么顺序调用、是否需要重试、何时终止。开发者只提供工具集和约束不预先规定具体步骤。Agent 的核心特征自主性模型根据当前状态自行决定下一步动作。动态性执行路径不固定可能因中间结果而改变。工具调用通过 Function Calling 或 MCP 等方式调用外部工具。典型场景包括开放域问答、复杂任务分解、自主网页浏览、多轮对话中的动态信息检索等。4. 核心区别对比为了更直观地理解两者的差异下面从多个维度进行对比维度WorkflowAgent执行路径预先固定确定性动态规划自主决策控制权开发者代码控制大模型主导灵活性低适合稳定流程高适合开放任务可预测性高结果可预期低路径不可预知成本控制容易调用次数固定困难可能多次调用调试难度低逐步可查高依赖日志追踪适用场景审核、清洗、报表问答、规划、自主检索一句话总结Workflow 是“写好的剧本”Agent 是“即兴发挥的演员”。前者追求稳定可控后者追求灵活应变。5. 代码实战Workflow 实现下面用 Python 实现一个典型的 Workflow文章审核流水线。流程固定为“敏感词检查 → 长度校验 → 格式规范”每一步都是确定性函数大模型只参与最后的摘要生成。import re ---------- 步骤 1敏感词检查 ---------- SENSITIVE_WORDS [暴力, 违法, 赌博] def check_sensitive(text: str) - bool: for word in SENSITIVE_WORDS: if word in text: return False return True ---------- 步骤 2长度校验 ---------- def check_length(text: str, min_len: int 20) - bool: return len(text) min_len ---------- 步骤 3格式规范去除多余空格 ---------- def normalize_format(text: str) - str: return re.sub(r\s, , text).strip() ---------- 工作流编排固定顺序执行 ---------- def review_workflow(text: str) - dict: if not check_sensitive(text): return {status: rejected, reason: 包含敏感词} if not check_length(text): return {status: rejected, reason: 长度不足} cleaned normalize_format(text) return {status: approved, content: cleaned} ---------- 运行 ---------- sample 这是一篇 关于 AI 编程的 技术文章内容充实。 result review_workflow(sample) print(result)这段代码中执行顺序完全由review_workflow函数写死没有任何模型参与决策。这就是 Workflow 的典型形态稳定、可测试、可预测。6. 代码实战Agent 实现下面用 Python 实现一个简单的 Agent自主问答助手。它拥有“查天气”和“算数学”两个工具由大模型根据用户问题动态决定调用哪个工具、调用几次。import json from openai import OpenAI client OpenAI() ---------- 定义工具 ---------- TOOLS [ { type: function, function: { name: get_weather, description: 查询指定城市的天气, parameters: { type: object, properties: { city: {type: string, description: 城市名} }, required: [city] } } }, { type: function, function: { name: calculate, description: 计算两个数的四则运算, parameters: { type: object, properties: { expr: {type: string, description: 数学表达式} }, required: [expr] } } } ] ---------- 工具的具体实现 ---------- def get_weather(city: str) - str: return f{city} 今天晴25 摄氏度 def calculate(expr: str) - str: return str(eval(expr)) def call_tool(name: str, args: dict) - str: if name get_weather: return get_weather(args[city]) if name calculate: return calculate(args[expr]) return 未知工具 ---------- Agent 主循环动态决策 ---------- def agent_run(user_query: str, max_steps: int 5) - str: messages [{role: user, content: user_query}] for _ in range(max_steps): resp client.chat.completions.create( modelgpt-4o, messagesmessages, toolsTOOLS, ) msg resp.choices[0].message if msg.tool_calls: # 模型决定调用工具把结果追加回对话 messages.append(msg) for tc in msg.tool_calls: result call_tool(tc.function.name, json.loads(tc.function.arguments)) messages.append({ role: tool, tool_call_id: tc.id, content: result }) else: # 模型认为任务完成返回最终答案 return msg.content return 达到最大步数任务终止 ---------- 运行 ---------- print(agent_run(北京天气怎么样顺便算一下 12*8 等于多少))这段代码中模型自主决定先查天气还是先算数学甚至可能根据结果追问。开发者只提供了工具和循环框架具体路径由模型动态规划。这就是 Agent 的核心把决策权交给模型。7. 如何选择Workflow 还是 Agent选型没有绝对的对错关键看任务特性。下面给出几条实用建议流程固定、结果可预期优先 Workflow。例如审核、清洗、报表生成稳定性和成本可控更重要。任务开放、路径不确定优先 Agent。例如开放域问答、自主检索、复杂任务分解。混合模式实际生产中最常见。用 Workflow 固定主干流程在需要灵活决策的节点嵌入 Agent。例如“先审核Workflow再让 Agent 根据审核结果决定是否改写”。成本敏感优先 Workflow因为 Agent 可能产生大量不可控的模型调用。需要审计合规优先 Workflow每一步都可追溯Agent 的自主路径较难完全审计。8. 总结Workflow 和 Agent 不是对立关系而是同一光谱上的两端Workflow 强调确定性和可控性Agent 强调灵活性和自主性。理解它们的本质区别能帮助你在实际项目中做出更合理的架构选型。最后给出一个简单的判断口诀“能写死就 Workflow写不死就 Agent拿不准就混合”。希望本文的代码实战能帮你真正掌握这两个概念并在自己的项目中灵活运用。