Tool Use工具调用
模型本身只能生成文本。工具让它伸手触到外部世界:查数据库、发请求、跑代码、读写文件。选哪个工具、传什么参数,都由模型在循环中自己判断。
决定它能做什么00 — 导论 / An Introduction
智能体
一个能自己决定下一步做什么的程序。它不会回答一次就结束——而是观察环境、做出计划、调用工具、检查结果,然后带着新的认知继续下一轮。
语言模型本质上只会做一件事:给定一段文本,预测接下来最合理的文本。它没有手,没有长期记忆,也没有一个"目标"可以为之坚持。
你问一句,它答一句。上下文窗口关上,一切归零。这个过程是无状态的、单次的,也是被动的——它永远在等你开口。
智能体做的事情,是把模型放进一个循环里:给它一个目标,给它几件工具,给它一个能记住事情的地方,然后放手让它自己跑。模型从"被调用的函数"变成了"做决定的那个角色"。
智能体 = 模型 + 循环 + 工具 + 状态
智能体的全部魔力,来自一个会重复的循环。每一轮它都做四件事,然后把结果喂回给下一轮的自己。
读取当前状态:用户说了什么、上一步返回了什么、文件里现在有什么。循环的入口永远是事实,而不是想象。
模型在这一步权衡:目标还差多远?有哪些可用手段?下一步做哪一个最划算?
输出一个具体动作——调用某个工具、写一段代码、给出答复。这是循环里唯一会改变外部世界的一步。
把行动的结果读回来,判断成功还是失败。成功了推进目标,失败了换一条路——然后回到观察。
循环是骨架,但光有骨架跑不起来。下面这四样东西,决定了智能体是只能聊天,还是真能干活。
模型本身只能生成文本。工具让它伸手触到外部世界:查数据库、发请求、跑代码、读写文件。选哪个工具、传什么参数,都由模型在循环中自己判断。
决定它能做什么上下文窗口是短期记忆,装得下这一轮任务的来龙去脉;外部存储是长期记忆,装得下跨会话的经验与事实。没有记忆的智能体会在每一步重新犯同样的错。
决定它记得多久把一个模糊的大目标拆成可执行的小步骤,并随时根据新信息调整顺序。好的规划不是一次列完清单,而是在每一步重新评估还剩下什么。
决定它走多远检查自己刚才的输出是否真的解决了问题,而不是看起来像解决了。这是区分"能用"和"可靠"的分界线,也是最容易被省略的一步。
决定它靠不靠谱从下往上看,一个智能体系统通常由四层构成。上层负责判断,下层负责执行;出错时,问题往往不在最上面那一层。
真实世界及其后果:用户、数据库、外部 API、文件系统。它不关心你的智能体有多聪明,只如实返回结果。
环境之上的受控接口。每个工具都有清晰的输入输出契约,以及一份写给模型看的说明——模型靠这份说明决定何时使用它。
驱动循环的那套机制:状态管理、步数与成本上限、失败重试、权限校验,以及什么时候该停下来交还给人类。
负责推理与生成的那部分。它给出判断,但不保证判断是对的——所以上面三层必须做好验证与兜底。
并非所有任务都需要智能体。流程稳定时,写死的编排更便宜、更可控;只有在路径无法预先确定时,自主决策才划算。
| 维度 | 单次问答 | 工作流 | 智能体 |
|---|---|---|---|
| 步骤数量 | 一次 | 固定,预先写死 | 动态,边走边定 |
| 谁决定下一步 | 人 | 预设的流程 | 模型自己 |
| 工具使用 | 无 | 有,但路线固定 | 有,且由模型自选 |
| 失败之后 | 需要人重新提问 | 报错并中断 | 换个方法继续尝试 |
| 成本可预测性 | 高 | 高 | 低,需要设上限 |
| 适合的场景 | 分类、改写、摘要 | 稳定且重复的流程 | 目标开放、路径未知 |
先用工作流解决问题;只有当流程本身无法预先写死时,才值得上智能体。