这是 AI Agent 原理系列的第一篇。目标只有一个:把「Agent 到底是什么」讲清楚,给后面 19 篇搭一个概念框架。
一、从一次模型调用说起
大模型最基本的用法很简单:给它一段文字,它返回一段文字。你问「HTTP 502 是什么意思」,它回答「网关从上游服务收到了无效响应」,到此结束。
这种用法有两个天然限制:
- 它只能说,不能做。它不能去查你的数据库,不能登录服务器看日志,也不能调用你的业务接口。
- 它只有一步。回答完就结束了,不会根据结果再决定下一步干什么。
Agent 要解决的就是这两件事。
二、Agent 的定义
一个实用的定义:Agent 是一个由大模型决定下一步行动、通过工具与外部世界交互、并在循环中持续推进任务直到完成的系统。
拆开来看,它由四个部分组成:
| 组成 | 作用 | 举例 |
|---|---|---|
| 模型 | 理解任务、做决策 | 判断「先查哪个时间段的数据」 |
| 工具 | 执行具体动作,获取真实信息 | 查询数据库、调用接口、读取日志 |
| 循环 | 把「决策 → 执行 → 看结果」重复多轮 | 查完数据发现异常,再去查对应时段的日志 |
| 状态 | 保存到目前为止发生的一切 | 前几步查到的结果、用户最初的问题 |
模型是大脑,工具是手脚,循环让它能做多步任务,状态让它不会做到一半忘了自己在干什么。
三、Chatbot、Workflow、Agent 的区别
这三个概念经常混用,区别的关键在于「下一步做什么」由谁决定。
| Chatbot | Workflow(工作流) | Agent | |
|---|---|---|---|
| 下一步由谁决定 | 没有下一步 | 代码写死 | 模型决定 |
| 能否调用工具 | 通常不能 | 能,但顺序固定 | 能,顺序和次数不固定 |
| 适合的任务 | 问答、写作 | 步骤明确且固定 | 步骤不确定,要看中间结果 |
| 可控性 | 高 | 高 | 较低,需要额外约束 |
举个例子。「每天 9 点导出昨天的订单报表发到群里」,步骤完全固定,写个定时脚本就行,这是 Workflow。「今天下单量突然掉了,帮我查原因」,你事先不知道要查几步、查哪里,可能是支付接口故障,可能是某个页面报错,也可能是促销活动配置错了,这才是 Agent 擅长的场景。
四、自主程度是一个谱系
实际系统很少是纯粹的某一种,更常见的是在下面这条线上找位置:
- 单次调用:一问一答,没有工具。
- 固定流水线:多次调用模型,但顺序由代码决定,比如「先摘要,再翻译,再分类」。
- 受限 Agent:模型自主决定调用哪些工具,但工具都是只读的,或者关键动作需要人工确认。
- 自主 Agent:模型可以自由行动,包括修改配置、发送消息等有副作用的操作。
越往下越灵活,也越难控制。生产环境里最常见的是第 2 和第 3 级的混合:外层流程固定,局部交给 Agent 判断。比如定时任务先用规则筛出异常指标,只把异常交给 Agent 分析原因。
五、一次 Agent 执行长什么样
假设用户问:「网站今天上午的下单量为什么下降?」一个 Agent 可能这样工作:
- 模型判断需要数据,调用工具「查询今天每小时的下单量」。
- 工具返回结果:10 点到 11 点下单量比平时少了 70%。
- 模型判断需要看用户卡在哪一步,调用工具「统计该时段下单流程各接口的错误率」。
- 工具返回结果:支付接口错误率高达 60%,大多是超时。
- 模型判断可能是支付服务的问题,调用工具「查询该时段支付服务的日志」。
- 工具返回结果:10:05 起支付服务连接第三方支付网关持续超时。
- 模型不再需要工具,输出结论:下降原因是第三方支付网关故障,建议联系支付服务商,并临时切换到备用支付渠道。
注意第 3、5 步:调用什么工具,是模型看了上一步的结果之后才决定的。这就是 Agent 和工作流的本质区别。
六、什么时候不需要 Agent
Agent 不是越多越好。它比普通调用更慢、更贵、结果也更不稳定。下面这些情况,优先考虑脚本或固定流程:
- 步骤固定,每次都一样;
- 对结果的确定性要求极高,比如计费;
- 一次模型调用就能解决。
判断标准可以简化成一句话:如果你能把所有步骤写成流程图,就不需要 Agent。
本篇小结
- Agent = 模型 + 工具 + 循环 + 状态。
- Agent 与工作流的区别在于「下一步做什么」由模型决定。
- 自主程度是谱系,生产中常用受限 Agent。
- 能画成流程图的任务不需要 Agent。
思考与练习
- 列出你日常的 3 个运维任务,判断哪个适合 Agent、哪个用脚本就够。
- 如果让 Agent 去处理用户退款申请,哪些操作应该放在「需要人工确认」那一级?