1.1 智能体是什么:从对话补全到自主执行


1.1 智能体是什么:从对话补全到自主执行

本节摘要:智能体不是"更聪明的聊天机器人",而是结构完全不同的东西——它以目标为输入、以行动为输出,在感知、决策、行动的循环里自主推进任务。本节用一个翻车现场讲清两种形态的结构差异,并给出最小对比代码。

上午十点,产品经理把一句话丢进对话框:"帮我把上次评审的意见汇总一下,改掉方案里对应的段落,再把新版发给参会的人。"模型回了一篇情真意切的短文,标题叫《方案优化建议》,然后就没有然后了——评审意见没被读取,文档没有被改动,邮件也没有发出去。模型把它能做的部分(写一篇看起来像回事的总结)做得很漂亮,把它不能做的部分(读取、修改、发送)直接跳过了,甚至没有告诉你它跳过了。

这不是模型的失误,是使用方式的错位:你下的是一个任务指令,它却只被设计成补全一段文本。 智能体要解决的就是这个错位。

从一句话到一件事,差了什么

把上面那句指令拆开,会看到一次完整的任务执行至少需要这些环节:

  1. 理解目标:要改的是"方案文档",依据是"评审意见",完成后要"发送"。
  2. 获取材料:找到评审意见原文和方案文档——模型脑子里没有这两样东西。
  3. 执行修改:定位段落、改写、保证上下文一致。
  4. 完成交付:调用邮件工具发送,并汇报结果。

聊天形态只覆盖第 1 步和第 3 步的"写"部分;第 2 步和第 4 步是纯行动,文本生成模型根本不参与。智能体的定义由此而来:以大模型为决策中枢,把它包在一个"感知—决策—行动"的循环里,让它能够自主调用工具、依据反馈修正方向,直到目标达成或确认无法达成。

这个循环值得背下来,因为全册的所有组件都挂在它上面:

  • 感知:把外部世界的变化变成模型能读的文本(评审意见的原文、工具的返回结果)——第 2.4 节讲观察从哪来。
  • 决策:模型根据目标和当前信息,决定下一步做什么(调哪个工具、传什么参数、是否结束)——第 2 章讲决策怎么表达成工具调用。
  • 行动:程序真正去执行模型的决定,把结果喂回循环。

两种形态的最小对比

下面的示意代码不依赖任何具体服务,只为展示结构差异。聊天形态是一次函数调用:

# 形态一:聊天——一锤子买卖,输入文本,输出文本 reply = llm.complete( system="你是一名方案撰写助手", user="帮我把评审意见汇总并修改方案,发给参会人", ) # reply 里是一段文字。文档没被打开,邮件没被发送。 # 模型把"不能做"的部分包装成了"已经说明",任务实际停留在原地。

智能体形态是一个循环,模型在其中反复做决定:

# 形态二:智能体——循环推进,直到目标完成 tools = {"read_file": read_file, "edit_doc": edit_doc, "send_mail": send_mail} messages = [system_prompt(含目标与工具清单), user("汇总评审意见并修改方案后发送")] for step in range(MAX_STEPS): # 步数上限兜底,防止无限循环 reply = llm.complete(messages) # 决策:模型输出下一步动作 action = parse_action(reply) # 解析出 工具名 + 参数 if action.name == "finish": # 模型自己判断任务完成 break observation = tools[action.name](**action.args) # 行动:程序真正执行 messages.append(observation) # 感知:把结果喂回去,供下一轮决策

两段代码的差异不在模型,在结构:循环给了模型"做完一步再看结果"的能力,工具给了它"直接影响世界"的能力。这两个能力合成一样东西——自主执行。

一个案例的完整过程:订会议室

用"帮团队订周四下午的会议室"对比两种形态,把过程走完整。

背景:团队八人,需求是周四 14:00 到 16:00 有投影的会议室,若无空房则改期或改线上。

聊天形态的操作与结果:你把需求发给模型,它输出一段"建议您打开日历系统查看空闲会议室"的说明文字。任务零推进,所有事还是你做。

智能体形态的操作:程序把目标写进循环,模型先后产出如下动作序列——

思考: 需要先查周四下午的空闲会议室。 行动: query_rooms(date="周四", start="14:00", end="16:00") 观察: [{"room":"A302","projector":true}, {"room":"B110","projector":false}] 思考: A302 满足全部条件且有空,直接预订。 行动: book_room(room="A302", date="周四", start="14:00", end="16:00") 观察: {"status":"ok", "booking_id":"BK-2271"} 思考: 预订成功,任务完成。 行动: finish(summary="已预订 A302,周四 14:00-16:00,凭单号 BK-2271")

解读:注意三件事。模型每一步只做了一个小决定,而不是一口气写完整个计划;每个决定都基于上一轮的真实反馈(如果 A302 已被占,思考会走向备选方案);结束是模型自己声明的,且带了可核对的结果。这就是"自主"的确切含义——不是夸张的拟人智能,而是闭环里自己走完多步

变式:如果需求加一条"优先用离电梯近的房间",要补的不是代码,是目标描述的精度——这个房间位置信息得在 query_rooms 的返回里存在,否则模型只能瞎猜。智能体项目里大量的失败,根子都在"环境里根本没有模型需要的信息"。

聊天机器人与智能体的边界对照

维度 聊天机器人 智能体
输入 一句话、一段材料 一个目标 + 可用的工具与环境
输出 文本 一系列动作 + 最终结果
执行步数 一次生成 多步循环,步数由任务决定
出错方式 说错话 做错事(影响真实系统)
典型延迟 秒级 分钟级,不可预测
失败成本 用户重问 可能产生脏数据、误发消息
核心工程量 提示词调优 循环控制、工具设计、记忆、护栏

⚠️ 常见坑:把"能对话"当成"能干活"来立项。评估需求时先问一句——这件事的完成标志是"一段文字"还是"一件发生了的事"?后者必须按智能体的工程量来估,两者的人力投入往往差一个数量级。

什么时候不需要智能体

反过来说,多数需求其实停在聊天形态就够:写周报初稿、解释一段报错、改写营销文案。判断依据有三条:任务是否需要外部信息(模型不知道的),是否需要改变外部状态(写库、发消息),是否需要超过一轮的决策。三条都不沾,就老实用对话接口,成本低、延迟稳、风险小。智能体不是升级包,是另一种架构,用它解决对话问题属于高射炮打蚊子,还容易把自己打着一堆工程复杂度。

本节要点回顾

  • 智能体的定义:以大模型为决策中枢,在感知、决策、行动的循环里自主推进,直到目标达成。
  • 结构差异重于能力差异:聊天是一次生成,智能体是循环加工具;模型可以是同一个。
  • 自主的确切含义:每步做小决定、依据真实反馈修正、自己声明结束并给出可核对结果。
  • 判断口径:完成标志是"文字"用聊天,是"事情发生"用智能体;别把两者混在一个方案里估工时。

下一节我们把"家底"摊开:模型在循环里当决策中枢时,哪些活它干得漂亮,哪些活它其实干不了。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U