本文深入浅出地解析了Agent和Workflow的核心区别用通俗易懂的语言阐述了大模型在AI工作流与智能体中的应用。简单来说Workflow是显式控制流而Agent是隐式决策流由大模型自主决策。文章通过生动的例子和实战代码详细介绍了Workflow和Agent的特点、应用场景、优缺点及选择方法并提供了实用的最佳实践帮助读者更好地理解和应用AI工作流与智能体技术。【Agent开发学习面试训练营】火热进行中正在找暑期实习或者工作想转行的可丝哈。本文尽量用清晰易懂的语言来阐述Agent和Workflow的区别争取让大模型小白也能看得懂。一句话总结Workflow 显式控制流 Agent 隐式决策流由大模型决定IMG_256举个通俗的例子智能体Agents就像是你身边那些“有眼力劲儿”的聪明助手它们能独立思考。面对新状况或预料之外的任务它们能利用 AI 审时度势、自主决策并采取行动。你可以把它们想象成一位顶级大厨不管厨房里剩下什么食材他都能根据现有条件变出一桌大餐。工作流Workflows则更像是一张固定食谱。它由一系列排好序的步骤组成就像银行审批贷款时的核查清单一样。它非常适合那些一成不变、流程标准化的任务。传统经典架构IMG_257加入大模型的架构IMG_258什么是工作流Workflow本质是按照预定义的步骤执行任务。例如用户在淘宝创建订单关键流程可以抽象为提前写死的这几个流程收到订单查库存发通知更新数据库IMG_259特点每一步是确定的顺序固定可预测可审计典型Workflow模式1提示词链IMG_260上图工作流展示了一种用于文档生成的提示词链Prompt Chaining模式。流程从接收到聊天消息开始系统首先调用 GPT-4.1-mini 生成初始大纲随后根据预设标准对其进行校验。通过人工“评分Set Grade”步骤评估大纲质量并由“条件判断If”节点根据评分决定后续动作。若大纲通过校验系统将调用 GPT-4o 对大纲各章节进行扩写最后对最终文档进行润色和美化。若大纲未通过校验工作流将跳转至“字段编辑Edit Fields”步骤进行人工调整后再继续执行。这种设计确保了在多阶段文档创建的全过程中每一环都有严格的质量控制。其典型应用场景内容生成流水线多阶段文档处理顺序校验工作流实战案例代码from typing_extensions import TypedDict from langgraph.graph import StateGraph, START, END from IPython.display import Image, display # Graph state class State(TypedDict): topic: str joke: str improved_joke: str final_joke: str # Nodes def generate_joke(state: State): First LLM call to generate initial joke msg llm.invoke(fWrite a short joke about {state[topic]}) return {joke: msg.content} def check_punchline(state: State): Gate function to check if the joke has a punchline # Simple check - does the joke contain ? or ! if ? in state[joke] or ! in state[joke]: return Pass return Fail def improve_joke(state: State): Second LLM call to improve the joke msg llm.invoke(fMake this joke funnier by adding wordplay: {state[joke]}) return {improved_joke: msg.content} def polish_joke(state: State): Third LLM call for final polish msg llm.invoke(fAdd a surprising twist to this joke: {state[improved_joke]}) return {final_joke: msg.content} # Build workflow workflow StateGraph(State) # Add nodes workflow.add_node(generate_joke, generate_joke) workflow.add_node(improve_joke, improve_joke) workflow.add_node(polish_joke, polish_joke) # Add edges to connect nodes workflow.add_edge(START, generate_joke) workflow.add_conditional_edges( generate_joke, check_punchline, {Fail: improve_joke, Pass: END} ) workflow.add_edge(improve_joke, polish_joke) workflow.add_edge(polish_joke, END) # Compile chain workflow.compile() # Show workflow display(Image(chain.get_graph().draw_mermaid_png())) # Invoke state chain.invoke({topic: cats}) print(Initial joke:) print(state[joke]) print(\n--- --- ---\n) if improved_joke in state: print(Improved joke:) print(state[improved_joke]) print(\n--- --- ---\n) print(Final joke:) print(state[final_joke]) else: print(Final joke:) print(state[joke])2路由IMG_261路由Routing是指根据查询请求的分类结果将不同的请求分发给特定的 LLM 链或 Agent智能体。案例客服系统路由架构本工作流展示了一个用于客服系统智能分发的路由模式。当系统接收到聊天消息时首先由基于GPT-4.1-mini的“查询分类器”配合“结构化输出解析器”对请求类型进行分类。根据分类结果“按类型路由”转换开关Switch会将查询分发至三个专业 LLM 链中的一个通用 LLM 链处理基础咨询退款 LLM 链处理支付相关问题技术支持 LLM 链处理技术协助。这种设计使得每种类型的查询都能获得专业化的处理同时维持统一的响应体系从而在客户服务运营中实现准确率与效率的最优平衡。路由模式Routing的应用场景智能客服系统根据用户问题类型精准分发。多领域问答系统针对不同学科或行业领域提供专业解答。请求优先级排序与委派识别任务紧急程度并进行合理调度。资源优化调度将不同复杂度的请求分发至最合适的模型进行处理。核心优势高效的资源利用确保计算资源花在刀刃上。专业化处理能力针对不同类型的查询提供更精准、更深入的响应。极致的成本优化通过选择性地使用不同等级的模型如轻量级模型负责分类高性能模型负责复杂任务显著降低运营成本。实战案例代码from typing_extensions import Literal from langchain.messages import HumanMessage, SystemMessage # Schema for structured output to use as routing logic class Route(BaseModel): step: Literal[poem, story, joke] Field( None, descriptionThe next step in the routing process ) # Augment the LLM with schema for structured output router llm.with_structured_output(Route) # State class State(TypedDict): input: str decision: str output: str # Nodes def llm_call_1(state: State): Write a story result llm.invoke(state[input]) return {output: result.content} def llm_call_2(state: State): Write a joke result llm.invoke(state[input]) return {output: result.content} def llm_call_3(state: State): Write a poem result llm.invoke(state[input]) return {output: result.content} def llm_call_router(state: State): Route the input to the appropriate node # Run the augmented LLM with structured output to serve as routing logic decision router.invoke( [ SystemMessage( contentRoute the input to story, joke, or poem based on the users request. ), HumanMessage(contentstate[input]), ] ) return {decision: decision.step} # Conditional edge function to route to the appropriate node def route_decision(state: State): # Return the node name you want to visit next if state[decision] story: return llm_call_1 elif state[decision] joke: return llm_call_2 elif state[decision] poem: return llm_call_3 # Build workflow router_builder StateGraph(State) # Add nodes router_builder.add_node(llm_call_1, llm_call_1) router_builder.add_node(llm_call_2, llm_call_2) router_builder.add_node(llm_call_3, llm_call_3) router_builder.add_node(llm_call_router, llm_call_router) # Add edges to connect nodes router_builder.add_edge(START, llm_call_router) router_builder.add_conditional_edges( llm_call_router, route_decision, { # Name returned by route_decision : Name of next node to visit llm_call_1: llm_call_1, llm_call_2: llm_call_2, llm_call_3: llm_call_3, }, ) router_builder.add_edge(llm_call_1, END) router_builder.add_edge(llm_call_2, END) router_builder.add_edge(llm_call_3, END) # Compile workflow router_workflow router_builder.compile() # Show the workflow display(Image(router_workflow.get_graph().draw_mermaid_png())) # Invoke state router_workflow.invoke({input: Write me a joke about cats}) print(state[output])3并行化并行化Parallelization通过同时执行多个相互独立的 LLM 操作从而大幅提升系统的运行效率。案例内容安全审核流水线IMG_262并行化应用场景内容审核系统同时对文本进行涉黄、涉政、暴力等多维度的违规检测。多准则评估从逻辑性、文采、事实准确性等多个维度并行打分。并发数据处理大规模语料的并行清洗、总结或结构化提取。独立验证任务多个模型同时对一个答案进行背对背验证以确保可靠性。核心优势降低延迟Reduced Latency通过并发执行将多个任务的总耗时从“各项之和”降低到“最慢的一项”。优化资源利用最大化利用 API 频率限制Rate Limits或算力集群。提升吞吐量在单位时间内处理更高规模的请求。实战案例代码# Graph state class State(TypedDict): topic: str joke: str story: str poem: str combined_output: str # Nodes def call_llm_1(state: State): First LLM call to generate initial joke msg llm.invoke(fWrite a joke about {state[topic]}) return {joke: msg.content} def call_llm_2(state: State): Second LLM call to generate story msg llm.invoke(fWrite a story about {state[topic]}) return {story: msg.content} def call_llm_3(state: State): Third LLM call to generate poem msg llm.invoke(fWrite a poem about {state[topic]}) return {poem: msg.content} def aggregator(state: State): Combine the joke, story and poem into a single output combined fHeres a story, joke, and poem about {state[topic]}!\n\n combined fSTORY:\n{state[story]}\n\n combined fJOKE:\n{state[joke]}\n\n combined fPOEM:\n{state[poem]} return {combined_output: combined} # Build workflow parallel_builder StateGraph(State) # Add nodes parallel_builder.add_node(call_llm_1, call_llm_1) parallel_builder.add_node(call_llm_2, call_llm_2) parallel_builder.add_node(call_llm_3, call_llm_3) parallel_builder.add_node(aggregator, aggregator) # Add edges to connect nodes parallel_builder.add_edge(START, call_llm_1) parallel_builder.add_edge(START, call_llm_2) parallel_builder.add_edge(START, call_llm_3) parallel_builder.add_edge(call_llm_1, aggregator) parallel_builder.add_edge(call_llm_2, aggregator) parallel_builder.add_edge(call_llm_3, aggregator) parallel_builder.add_edge(aggregator, END) parallel_workflow parallel_builder.compile() # Show workflow display(Image(parallel_workflow.get_graph().draw_mermaid_png())) # Invoke state parallel_workflow.invoke({topic: cats}) print(state[combined_output])Workflow的优缺点优点稳定易调试易监控成本可控可严格权限管理缺点不灵活不能处理复杂未知场景逻辑一多就爆炸式增长什么是AgentAI Agent智能体是一种由大模型LLM动态驱动自身流程和工具调用的系统它们在执行任务的过程中能够始终保持对任务达成路径的自主控制权。 将大语言模型LLM与自主决策能力相结合使其能够通过推理、反思和动态工具调用来完成复杂的任务。它不是按固定步骤执行而是理解目标决定是否调用工具决定调用哪个工具决定是否继续推理决定何时结束其决策流程图IMG_263可以看到Agent 是一个循环结构它不断思考 → 行动 → 再思考。案例任务规划智能体Task Planning Agent场景用户要求“帮我预约明天下午 2 点和 John 的会议”。IMG_264本工作流展示了一个具备动态决策能力的自主任务规划智能体。当接收到聊天消息时请求会被路由至该 Agent它拥有三个核心能力的访问权限用于理解与规划的聊天模型推理型 LLM、用于维持跨对话上下文的记忆系统Memory以及工具集Tool collection。该 Agent 可以自主从多个工具中进行选择包括add_update_tasks用于在 Google 表格中添加或更新任务和 search_task用于读取和搜索表格中的现有任务。与预设好的工作流不同Agent 会根据用户的需求独立判断使用哪些工具、何时使用以及按何种顺序使用。这充分体现了 AI Agent 区别于传统 AI 工作流的灵活性与自主性。注意Agent 根据请求的上下文决定使用哪些工具以及执行顺序而不是依赖于预设的规则。AI Agent 应用场景深度研究系统全网搜集资料并生成深度报告。Agentic RAG智能体化 RAG具备多步检索与自我修正能力的知识库系统。编程助手自主编写、运行并调试代码。数据分析与处理自动清理数据并生成洞察。内容创作与编辑从大纲到初稿再到润色的全生命周期管理。客户支持与辅助处理复杂的售后逻辑。交互式聊天机器人与虚拟助理提供更具人性化和逻辑性的对话体验。核心组件 构建 AI Agent 的四个关键支柱工具访问Tool Access与外部系统如 Google 表格、搜索 API、数据库的集成能力。记忆Memory跨对话保留上下文确保交互的连贯性。推理引擎Reasoning Engine用于工具选择和任务规划的决策逻辑。自主性Autonomy无需预设控制流实现自驱动执行。实战案例代码from langchain.tools import tool # Define tools tool def multiply(a: int, b: int) - int: Multiply a and b. Args: a: First int b: Second int return a * b tool def add(a: int, b: int) - int: Adds a and b. Args: a: First int b: Second int return a b tool def divide(a: int, b: int) - float: Divide a and b. Args: a: First int b: Second int return a / b # Augment the LLM with tools tools [add, multiply, divide] tools_by_name {tool.name: tool for tool in tools} llm_with_tools llm.bind_tools(tools) from langgraph.graph import MessagesState from langchain.messages import SystemMessage, HumanMessage, ToolMessage # Nodes def llm_call(state: MessagesState): LLM decides whether to call a tool or not return { messages: [ llm_with_tools.invoke( [ SystemMessage( contentYou are a helpful assistant tasked with performing arithmetic on a set of inputs. ) ] state[messages] ) ] } def tool_node(state: dict): Performs the tool call result [] for tool_call in state[messages][-1].tool_calls: tool tools_by_name[tool_call[name]] observation tool.invoke(tool_call[args]) result.append(ToolMessage(contentobservation, tool_call_idtool_call[id])) return {messages: result} # Conditional edge function to route to the tool node or end based upon whether the LLM made a tool call def should_continue(state: MessagesState) - Literal[tool_node, END]: Decide if we should continue the loop or stop based upon whether the LLM made a tool call messages state[messages] last_message messages[-1] # If the LLM makes a tool call, then perform an action if last_message.tool_calls: return tool_node # Otherwise, we stop (reply to the user) return END # Build workflow agent_builder StateGraph(MessagesState) # Add nodes agent_builder.add_node(llm_call, llm_call) agent_builder.add_node(tool_node, tool_node) # Add edges to connect nodes agent_builder.add_edge(START, llm_call) agent_builder.add_conditional_edges( llm_call, should_continue, [tool_node, END] ) agent_builder.add_edge(tool_node, llm_call) # Compile the agent agent agent_builder.compile() # Show the agent display(Image(agent.get_graph(xrayTrue).draw_mermaid_png())) # Invoke messages [HumanMessage(contentAdd 3 and 4.)] messages agent.invoke({messages: messages}) for m in messages[messages]: m.pretty_print()二者核心差异对比一图可看清二者的核心差异IMG_265如何选择工程化的第一原则是能用 Workflow 解决的绝不用 Agent。因为稳定和省钱是商业化落地的前提但当业务进入‘无人区’或需要处理极端复杂的长尾需求时Agent 才是那个能破局的‘聪明大脑’。在以下场景下选择 AI 工作流Workflows任务需求清晰且稳定每一步要做什么非常明确。可预测性至关重要需要系统输出的结果高度一致、可控。需要对执行过程进行显式控制必须严格按照预设步骤运行。调试与监控是首要任务方便快速定位哪一步出了问题。成本管理极其关键通过固定路径最大化降低 Token 消耗。在以下场景下选择 AI 智能体Agents任务是开放式或探索性的没有标准的固定操作流程。灵活性比可预测性更重要需要系统能根据不同情况“见招拆招”。问题空间复杂且变量众多无法用简单的 if-else 逻辑覆盖全场景。需要类人化的推理能力依赖模型进行深度思考和逻辑判断。需要适应不断变化的环境任务过程中可能出现预料之外的新状况。当然也有混合使用的情况许多生产级系统实际上是两种方案的结合体以工作流为骨架Structure利用工作流处理可靠、定义明确的任务组件。以智能体为血肉Flexibility在需要适应性强、复杂决策的环节部署 Agent。案例先通过一个工作流将请求路由至不同的专业 Agent再由这些 Agent 独立处理开放式的子任务。一些最佳实践关于AI 工作流Workflows的实践总结清晰的步骤定义记录并定义工作流中的每一个阶段。错误处理机制为可能出现的失败环节实现回退路径Fallback paths。验证关卡Validation Gates在关键步骤之间增设校验环节。性能监控追踪每一步的延迟情况以及任务成功率。关于AI 智能体Agents的实践总结工具设计提供描述清晰、文档完整且用途明确的工具集。记忆管理实施有效的上下文保留策略确保信息连贯。护栏机制Guardrails为 Agent 的行为准则和工具使用权限设定边界。可观测性详细记录 Agent 的推理过程Reasoning和决策路径。迭代测试在各类复杂场景下持续评估 Agent 的表现。关于护栏和可观测性恰恰是区分demo项目和企业级应用的分水岭大家在简历上写项目描述的时候一定要特别注意这样才能凸显自己的优势。关于护栏Guardrails “Agent 就像一个拥有超能力的员工如果你不给它设定边界比如限制 API 调用次数、限制数据库访问范围它可能会因为陷入逻辑死循环而刷爆你的信用卡或者误删重要数据。”关于可观测性Observability “Agent 的决策过程往往是个黑盒。我们需要像记录日志一样把模型的Thought思考、Action行动和Observation观察全部记录下来。只有这样当 Agent 报错时我们才能知道它是‘想歪了’还是‘找错工具了’。”最近两年大模型发展很迅速在理论研究方面得到很大的拓展基础模型的能力也取得重大突破大模型现在正在积极探索落地的方向如果与各行各业结合起来是未来落地的一个重大研究方向大模型应用工程师年包50w属于中等水平如果想要入门大模型那现在正是最佳时机2025年Agent的元年2026年将会百花齐放相应的应用将覆盖文本视频语音图像等全模态如果你对AI大模型入门感兴趣那么你需要的话可以点击这里大模型重磅福利入门进阶全套104G学习资源包免费分享扫描下方csdn官方合作二维码获取哦给大家推荐一个大模型应用学习路线这个学习路线的具体内容如下第一节提示词工程提示词是用于与AI模型沟通交流的这一部分主要介绍基本概念和相应的实践高级的提示词工程来实现模型最佳效果以现实案例为基础进行案例讲解在企业中除了微调之外最喜欢的就是用提示词工程技术来实现模型性能的提升第二节检索增强生成RAG可能大家经常会看见RAG这个名词这个就是将向量数据库与大模型结合的技术通过外部知识来增强改进提升大模型的回答结果这一部分主要介绍RAG架构与组件从零开始搭建RAG系统生成部署RAG性能优化等第三节微调预训练之后的模型想要在具体任务上进行适配那就需要通过微调来提升模型的性能能满足定制化的需求这一部分主要介绍微调的基础模型适配技术最佳实践的案例以及资源优化等内容第四节模型部署想要把预训练或者微调之后的模型应用于生产实践那就需要部署模型部署分为云端部署和本地部署部署的过程中需要考虑硬件支持服务器性能以及对性能进行优化使用过程中的监控维护等第五节人工智能系统和项目这一部分主要介绍自主人工智能系统包括代理框架决策框架多智能体系统以及实际应用然后通过实践项目应用前面学习到的知识包括端到端的实现行业相关情景等学完上面的大模型应用技术就可以去做一些开源的项目大模型领域现在非常注重项目的落地后续可以学习一些Agent框架等内容上面的资料做了一些整理有需要的同学可以下方添加二维码获取仅供学习使用