AI Agent 与直接调用大模型 API 的本质区别只有一句话:一次 API 调用是”输入提示词、返回文本”的单次无状态问答,而 Agent 是”目标 → 规划 → 行动 → 观察 → 再规划”的循环执行系统,能自主调用工具、携带记忆、根据中间结果调整策略,直到任务完成才停。把 Agent 拆成公式就是 Agent = 大模型 + 循环 + 工具(LLM + Loop + Tools),大模型负责推理,循环让它持续行动,工具让它真正触达外部世界。
一、一次 API 调用到底做了什么
直接调用大模型 API 是线性的、无状态的:客户端发一条 Prompt,模型生成一段文本,返回即结束。整个过程只有输入和输出,模型不记得上次聊了什么,除非应用层把历史消息重新拼进下一次请求;模型也不能主动查库、发邮件、执行代码,它的全部”动作”就是输出文本。
一个精辟的比喻:API 调用就像给一位博学的顾问打个电话,问一个问题,得到答案,挂断电话。顾问不会替你把答案落地执行。
二、Agent 多出来的三样东西
2.1 循环:把”一问一答”变成”闭环任务执行”
Agent 的核心是一个 while 循环,通常叫 ReAct(Reason + Act)循环:先推理当前该做什么,再执行一个动作(调用工具),然后观察结果,把结果喂回模型进入下一轮,直到模型判定”任务完成”或”卡住了”才终止。
2.2 工具:模型只”说”,代码负责”做”
Agent 向模型额外暴露一份工具清单(JSON Schema 描述的函数),模型回复时不再只给文本,还可以返回”调用 get_weather,参数是 {location: ‘Paris’}”这样的结构化请求,由你的代码去执行,再把执行结果追加进消息历史,继续下一轮。模型本身不执行任何函数,它只发出调用请求。
2.3 记忆:跨轮次与跨会话的上下文
Agent 的短期记忆是对话历史与工具结果的累积,长期记忆则把用户偏好、任务结果落到外部存储,下次会话再检索回来。普通 API 调用每次从零开始,Agent 则基于历史信息做后续决策。
三、一张表看懂核心差异
| 维度 | 大模型 API 调用 | AI Agent |
|---|---|---|
| 交互模式 | 一次输入、一次输出 | 多轮循环,直到任务完成 |
| 状态 | 无状态,每次调用独立 | 会话内短期记忆 + 跨会话长期记忆 |
| 外部操作 | 只能输出文本,无法主动触达外部系统 | 可调用 API、数据库、浏览器等工具 |
| 决策方式 | 严格按当前 Prompt 生成 | 自主规划、推理、选择行动 |
| 任务类型 | 翻译、摘要、代码生成等单步任务 | 订票、数据分析、自动化修复等多步任务 |
| 故障处理 | 结果不对就重新提问 | 观察反馈、重试或切换策略 |
四、从 API 到 Agent 的四步演进路径
- 第一层是纯 API 调用:拼 Prompt,让模型单次生成答案,解决”会说话”的问题;
- 加记忆层:把多轮对话历史保存并回传,解决”记得住”的问题;
- 加检索增强(RAG):从向量库检索相关资料塞进上下文再回答,解决”知道更多”的问题;
- 加循环与工具:让模型能查库、执行代码、操作外部系统,解决”做得到”的问题。
到了第四层,系统才称得上 Agent。它从”被动响应工具”变成了”目标驱动的执行系统”。
五、用一段伪代码看区别
# 方式一:直接调用大模型 API——单次、无状态
response = openai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "上海今天天气如何?"}]
)
print(response.choices[0].message.content)
# 方式二:Agent 循环——多轮、带工具、直到任务完成
tools = [{"type": "function", "name": "get_weather", ...}]
messages = [{"role": "user", "content": "上海今天天气如何?"}]
for _ in range(MAX_TURNS): # 循环是 Agent 的心脏
reply = model.chat(messages, tools=tools)
calls = reply.tool_calls
if not calls: # 没有工具请求,说明可以收尾
break
for call in calls:
result = execute_tool(call) # 你的代码执行,模型不执行
messages.append(tool_result(call, result)) # 结果回传
两种写法跑的是同一个模型,区别全在外部包装:多了一层循环、一份工具清单、一个结果回传机制。
六、什么时候该用 Agent,什么时候别用
Anthropic 的建议很直白:从最简单可靠的方案起步,只有单次调用确实做不好时才引入 Agent。翻译、摘要、文案生成、代码补全这类自包含任务,一次 API 调用就够,套 Agent 是过度设计。反过来,跨系统、多步骤、需要实时数据或实际操作的场景,比如”分析销售数据并生成报告”、”修 bug 并跑测试提 PR”,才值得上循环与工具。
要警惕的是 Agent 的副作用:模型决定下一步调用什么,而它恰恰是系统里最不可靠的部分——同样的输入可能走出不同的调用序列,参数可能生成错,失败时往往”看起来很合理”。所以工程上必须做参数校验、循环次数上限、工具结果一律当数据不当指令。
七、Agent 与工作流的界限在哪里
Anthropic 在 “Building Effective Agents” 里给了一条清晰的分界线:控制流写死在代码里、由代码逐步骤编排 LLM 调用,那是工作流(workflow);控制流交给 LLM 自行决定、自主规划下一步并调用工具,才是 Agent。选型时按任务特征判断——步骤数可预先确定的固定任务(如”提取→转换→分析→出报告”)用工作流,成本低、好调试;开放式、步骤数不可预测的任务(如”排查这个系统问题”)才值得让 LLM 掌握控制流。很多看似需要 Agent 的场景,拆成两三个步骤的工作流反而更稳。
常见问题(FAQ)
Q1:Agent 会取代大模型 API 调用吗?
不会。Agent 建立在 API 之上,单步任务用 API 更省成本、更好调试。
Q2:RAG 算 Agent 吗?
不算。RAG 只增强”读取知识”,没有循环与工具,不做实际操作。
Q3:怎么判断该不该用 Agent?
任务步骤数可预测就用工作流,不可预测、需要自主决策才上 Agent。