一个关键问题是:人工智能智能体(Agent)与人工智能工作流之间存在哪些差异?二者之间是否真的存在区别?本文是我们代理式人工智能系列的第五篇文章,旨在解答当今人工智能从业者最常困惑的问题之一:人工智能工作流与人工智能智能体究竟有何不同?难道它们不都是由系统执行的一系列任务吗?

从流水线到自主性的转变人工智能工作流类似于装配线:具有可预测性、结构性,但往往较为脆弱。每一步都是预先定义好的。工作流不会质疑自身执行某项任务的原因,它只是按指令行事。与之不同的是,人工智能智能体的功能类似于初级同事:它会评估目标、决定使用哪些工具,甚至可能根据执行过程中的观察结果采用完全不同的策略。智能体能够迭代、回溯、重试并优化流程。举例说明:
-
• 工作流可能始终遵循固定流程:用户输入→嵌入→搜索→总结→回应。 -
• 智能体则可能做出这样的判断:“输入信息过于模糊,请允许我先澄清。之后我会决定是进行搜索还是直接回答”。
正是这种适应性,使得基于智能体的系统能够推动下一代大语言模型(LLM)应用的发展,其应用场景涵盖从自主研究助手到多工具协调器等多个领域。什么是人工智能工作流?人工智能工作流是一系列有组织的任务或操作,用于自动化数据处理、模型执行和响应生成。它类似于工厂流水线,每个阶段都会对数据进行转换并传递到下一步,且始终遵循开发者定义的路径。若想更好地理解人工智能工作流,可将其比作一条装配线:你按下一个按钮,随后水开始加热、咖啡被冲泡出来、牛奶被加入,最终你的杯子被装满。每一步都按固定顺序进行,无论你是否需要加糖。传统的机器学习流水线和推理系统正是如此运作的。它们具有确定性、可重复性,且易于管理。人工智能工作流的结构大多数人工智能工作流遵循以下结构:原始输入→预处理→模型推理→后处理→输出每个阶段都是预先定义好的,除非进行明确编码,否则不会发生改变。这类工作流最适用于批处理作业、训练流水线、ETL(提取、转换、加载)工作流、定时分析作业和预测API。目前有一些非常流行的编排工具,例如Airflow、MLFlow、FastAPI、Flask、Perfect、Kuberflow和Dagster。为了更好地进行编排,我将通过一个简单的人工智能工作流示例,帮助大家深入理解。用Python实现的简单人工智能工作流fromtransformersimportpipelinefromsklearn.feature_extraction.textimportTfidfVectorizerimportnumpyasnp# 导入数据并添加查询内容document ="""Artificial intelligence agents can perform tasks autonomously by observing their environment and acting upon it."""user_query ="What do AI agents do?"# 预处理数据以适配上下文窗口chunks = document.split(". ")# 对数据进行嵌入并执行检索vectorizer = TfidfVectorizer()vectors = vectorizer.fit_transform(chunks + [user_query])similarities = (vectors[:-1] @ vectors[-1].T).toarray().flatten()most_relevant = chunks[np.argmax(similarities)]# 使用语言模型生成答案qa = pipeline("question-answering", model="distilbert-base-cased-distilled-squad")result = qa(question=user_query, context=most_relevant)# 输出结果print("Answer:", result["answer"])
在这个示例中,你可以看到每一步都为实现特定目的而被清晰定义。此外,该工作流假定最佳操作流程为:预处理→嵌入→检索→回答。若你想增加流程变化(例如处理模糊查询或提出澄清问题),则需要使用手动分支逻辑。这种方式对于简单应用程序而言效果良好,但一旦引入多步骤架构,它就会失去根据用户意图进行规划或回溯的能力。人工智能工作流会自动执行你已做出的决策。但如果你的系统需要根据实际情况判断下一步操作呢?这正是智能体发挥作用的场景。什么是人工智能智能体?人工智能智能体是一种能够感知周围环境、推断自身当前状态或目标,并执行与上下文相关的操作以实现特定结果的系统。与遵循预定路径的人工智能工作流不同,智能体会根据当前情况、反馈或变化的目标做出决策。为了更易理解,可将人工智能智能体比作私人助理,它会根据你提供的信息开展工作。假设你想预订机票:你可以说:“帮我预订下周末价格低于200美元的航班。”私人助理会提出后续问题、查看多个信息来源、比较各种选项,并在情况发生变化时更新计划。助理会根据具体上下文选择完成任务的方式。智能体旨在非结构化、多变或部分可观测的环境中运行,在这些环境中,僵化的流程会失效。人工智能智能体的结构[感知]→[推理]→[决策]→[行动]→[再次观察]→……智能体会循环运行,这意味着它们会持续评估自身目标和当前环境,而非执行一次后就终止。为了更好地理解,我们来创建一个简单的人工智能智能体。具备工具使用功能的简单人工智能智能体我们来构建一个智能体,它能够接收用户查询,并决定是进行搜索、总结还是直接回答。fromtransformersimportpipeline# 模拟工具函数defsearch_tool(query): returnf"Search results for '{query}'"defsummarizer_tool(text): summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6") returnsummarizer(text[:512])[0]['summary_text']defanswer_directly(query): returnf"This is a pre-trained response to:{query}"# 智能体逻辑defagent_decide_and_act(query): if"search"inquery.lower(): returnsearch_tool(query) elif"summarize"inquery.lower(): doc ="AI agents are systems capable of autonomous decision-making and can adapt to changing environments..." returnsummarizer_tool(doc) else: returnanswer_directly(query)# 测试智能体行为user_query ="Can you summarize how agents work?"response = agent_decide_and_act(user_query)print("Agent Response:", response)
为简洁清晰起见,此处省略了对LangChain的依赖。该智能体会动态解析查询意图,并在运行时选择工具,而非执行为特定目的构建的固定流水线。我们甚至可以为其添加记忆功能(通过该功能可跟踪用户过往交互)和反馈循环。智能体以目标为导向、具备适应性,并且能够实时自主决策。这使得基于智能体的系统能够超越自动化,表现得如同协作伙伴一般。架构差异乍看之下,人工智能工作流和人工智能智能体似乎在解决类似问题:接收输入、执行若干步骤、返回输出。然而,它们的基础架构和控制逻辑却完全不同。在开发必须在动态、不确定或用户驱动的环境中运行的生产级人工智能系统时,理解这种差异至关重要。
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
示意图:工作流与智能体
-
1.人工智能工作流(静态流水线)用户查询│▼[预处理(Preprocessing)]│▼[嵌入(Embedding)]│▼[向量搜索(Vector Search)]│▼[总结(Summarization)]│▼响应(Response) -
2.人工智能智能体(动态规划器)用户查询│▼[智能体接收目标(Agent receives goal)]│▼[上下文决策:使用工具还是记忆?(Contextual Decision: Tool or Memory?)]├──> 搜索(Search)→ 总结(Summarize)→ 回应(Respond)├──> 提出澄清问题(Ask Clarifying Question)→ 等待(Wait)└──> 直接回答(Answer Directly)→ 完成(Done)
在工作流中,无论输入如何,执行路径始终保持不变。而在智能体中,执行路径由上下文、用户意图和环境状态决定。代码对比我们还将从代码结构方面进行对比,此处以问答任务为例。
-
1.人工智能工作流(静态)
defrun_workflow(query, document): # 步骤1:嵌入与检索 chunks = document.split(". ") # 模拟相似度计算:仅选择最长片段 context =max(chunks, key=len) # 步骤2:传递至问答模型 fromtransformersimportpipeline qa = pipeline("question-answering") result = qa(question=query, context=context) returnresult["answer"]
-
2.智能体版本(动态规划)
defrun_agent(query, document): if"summarize"inquery: fromtransformersimportpipeline summarizer = pipeline("summarization") returnsummarizer(document[:512])[0]['summary_text'] elif"search"inquery: return"正在搜索外部资源……" # 模拟网络工具 else: # 备用问答功能 fromtransformersimportpipeline qa = pipeline("question-answering") returnqa(question=query, context=document)["answer"]
工作流假定所有查询都需要检索+问答的流程,而智能体会评估任务并选择最佳策略。行为特征与灵活性架构决定结构,而行为决定适应性。人工智能工作流和人工智能智能体具有不同的行为特征,这些特征会影响它们处理边缘情况、反馈和用户意图的方式。这在实际生产中极为重要:环境越复杂多变,行为的灵活性就越关键。行为对比的关键差异
|
|
|
---|---|---|
决策制定(Decision-making) |
|
|
错误恢复(Error recovery) |
|
|
上下文感知(Context awareness) |
|
|
学习(Learning) |
|
|
目标处理(Goal handling) |
|
|
交互性(Interactivity) |
|
|
工具使用(Tool usage) |
|
|
适应性(Adaptability) |
|
|
为了更好地理解,我们来看一个例子。通过处理模糊性理解行为场景:为我提供有关人工智能研究的见解
-
•人工智能工作流响应:对输入进行嵌入→搜索向量数据库→总结顶级文档→返回结果。若嵌入失败或搜索返回不相关结果,工作流会无声地失败或返回无用信息。 -
•智能体响应:解析意图→发现信息不够详细→询问用户:“您需要学术研究方面的内容,还是行业趋势方面的内容?”→接收澄清信息→据此制定计划。智能体会通过发起对话或选择不同策略来适应模糊性。
此外,智能体通常会维护短期记忆(会话状态)或长期记忆(知识库)。例如:agent_memory = []defagent_with_memory(user_input): if"what did I ask earlier"inuser_input: returnf"You previously asked: '{agent_memory[-1]}'"ifagent_memoryelse"Nothing yet." else: agent_memory.append(user_input) return"Got it. What's next?"
工作流除非经过明确编码,否则不具备记忆功能。每次执行都是独立且无状态的。何时使用哪种方式?1. 何时使用智能体当系统需要根据用户意图或上下文线索确定最佳行动或工具时,人工智能智能体是理想选择。它们在多轮任务或实时交互中尤为有用,在这些场景中,适应性至关重要。当任务在执行过程中发生变化,或环境变得不确定、模糊时,人工智能智能体能够动态调整自身行为。与僵化的工作流不同,智能体可以对多个目标进行优先级排序和平衡,从而在整个过程中做出更合理、更灵活的决策。智能体的应用场景
-
• 能够进行规划和推理的对话式助手 -
• 协调搜索、代码和总结功能的大语言模型智能体 -
• 具备工具使用能力的客户支持智能体 -
• 可自主选择信息来源和策略的研究辅助工具 -
• 能根据学习者进度进行调整的人工智能导师
2. 何时使用人工智能工作流对于具有清晰、可重复序列且无需动态决策的任务,人工智能工作流是理想选择。当可扩展性、吞吐量或批处理至关重要时,它们的优势尤为明显。工作流还提供透明的控制流,便于监控流程,并为监督和优化保留详细日志。人工智能工作流的应用场景
-
• 机器学习数据的ETL流水线 -
• 数据集的批量模型预测 -
• 训练与评估流水线 -
• 定时生成的每日报告 -
• 结构化模型的推理API
选择合适框架的决策指南
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
混合架构:兼顾两者优势尽管工作流和智能体各有优缺点,但现代人工智能系统正越来越多地将二者结合,既利用工作流的可靠性,又借助智能体的适应性。这种混合设计模式使工程师能够:
-
• 将复杂的推理和决策任务委托给智能体 -
• 利用结构化、可扩展的工作流处理繁重且稳定的任务 -
• 在保持灵活性的同时提高可观测性和可靠性
若想更好地理解这种架构,可以“经理与部门”为例:
-
• 智能体好比项目经理,明确目标并制定策略 -
• 工作流好比团队或部门,专门完成预定义任务(如数据提取或报告生成) -
• 经理(智能体)不直接执行具体工作,但知道何时启动哪个团队,并清楚如何处理结果。
混合架构中常见的模式1. 智能体调用工作流当特定步骤必须始终如一地完成时,智能体负责决策并调度工作流。defagent_controller(task_type, input_data): iftask_type =="document_summarization": returnrun_workflow_pipeline(input_data) # 工作流步骤 else: returnplan_alternatives(input_data) # 智能体逻辑继续执行
例如,LangChain智能体制定规划步骤,当遇到PDF密集型任务时,调用批量OCR工作流。2. 工作流触发智能体固定流水线正常运行,仅在需要决策或备选方案时调用智能体。defworkflow_step(data): ifdata_is_ambiguous(data): returnrun_agent_for_disambiguation(data) else: returnstandard_processing(data)
例如,表单处理流水线仅在某个字段无法被可靠解析时,才调用大语言模型智能体。混合系统概述[用户输入(User Input)] ↓[智能体(Agent)]┌───┴────┬────────┐▼ ▼ ▼搜索工具(Search Tool) 触发工作流(Trigger Workflow) 向用户澄清(Clarify User) ▼ [文档处理(Document Processing)] ▼ [总结模型(Summarization Model)] ▼ [智能体输出(Agent Output)]这种分层设计使逻辑相互独立且可复用,支持可靠的监控,并允许智能体在适当时机依赖流水线执行任务。需牢记的设计原则
|
|
---|---|
从工作流入手(Start with workflows) |
|
在行为多变场景使用智能体(Use agents where behavior varies) |
|
在工作流中隔离核心逻辑(Isolate core logic in workflows) |
|
为智能体配备监控手段(Instrument your agents) |
|
规划混合执行模式(Plan for hybrid execution) |
|
以目标为导向,而非步骤(Think in goals, not steps) |
|
本文属于我们的代理式人工智能系列文章之一,该系列探讨智能体如何改变人工智能应用的未来,涵盖规划、感知到多智能体协作等多个领域。在下一篇文章中,我们将深入探讨多智能体系统,特别是智能体之间通过通信、委托和协作来解决复杂任务的架构——这些任务超出了单一模型或工作流的能力范围。