Agent 不是简单的"大模型 + Prompt + Tool",而是一套完整的软件系统。
速度解决用户体验,质量解决业务价值,价格解决商业可行性,工程化解决规模化生产。
随着大模型能力不断增强,Agent(智能体)正在从简单的对话机器人,逐渐演变成能够理解任务、规划任务、调用工具、执行操作、管理上下文并完成复杂业务流程的软件系统。
很多 Agent Demo 看起来很简单:
text
用户 → LLM → Tool → LLM → Answer
但真正进入生产环境后,会发现真正困难的并不是"如何调用一次大模型 API",而是:
- 如何让 Agent 更快?
- 如何让结果更准确、更稳定?
- 如何控制模型调用成本?
- 如何支撑高并发?
- 如何管理上下文和长期记忆?
- 如何处理 Tool 超时和失败?
- 如何进行日志追踪和问题定位?
- 如何实现重试、降级、回滚?
- 如何部署和运维?
因此,我更倾向于把生产级 Agent 理解为:
text
生产级智能体(Production Agent)
│
┌───────────────────┼───────────────────┐
↓ ↓ ↓
大语言模型 智能体运行时 基础设施
(LLM) (Agent Runtime) (Infrastructure)
│ │ │
大小模型策略 任务规划 会话管理
Token 管理 工具调用 记忆系统
思考 / 推理 上下文管理 可观测性
流式输出 工作流编排 凭证管理
缓存 状态管理 沙箱环境
重试机制 托管基础设施
超时控制 部署运维
并行执行
│ │ │
└───────────────────┼───────────────────┘
↓
速度 / 质量 / 价格
↓
最终业务价值
一、Agent 到底是什么?
传统的软件系统通常是:
text
输入
↓
业务逻辑
↓
数据库 / API
↓
输出
逻辑和执行路径基本由程序员预先定义。
而 Agent 的执行路径具有一定的动态性:
text
用户任务
↓
LLM 理解任务
↓
任务规划
↓
选择工具
↓
调用工具
↓
观察结果
↓
继续思考
↓
再次调用工具
↓
任务完成
↓
最终回答
例如用户说:
"帮我查一下明天广州到上海的航班,并找一个附近性价比高的酒店。"
Agent 可能需要:
text
理解需求
↓
查询航班
↓
筛选航班
↓
查询酒店
↓
获取酒店价格
↓
计算距离
↓
综合比较
↓
生成推荐
这时候 Agent 已经不再是简单的 Chat,而更像一个:
由大模型驱动的动态软件执行系统。
二、生产级 Agent 的三大核心指标
如果让我用三个词概括 Agent 产品,我会选择:
速度、质量、价格
这三个指标实际上决定了 Agent 能不能真正成为一个可用的产品。
三、速度:解决用户体验
Agent 的速度不能简单理解为"模型生成速度"。
因为一个 Agent 请求可能经历多个阶段:
text
用户请求
↓
LLM
↓
思考
↓
Tool Calling
↓
MCP
↓
数据库 / API
↓
LLM
↓
再次思考
↓
最终回复
因此需要关注完整的 End-to-End Latency。
3.1 首 Token 很重要
用户体验中,一个非常关键的指标是:
TTFT(Time To First Token)
即:
从用户发送请求,到看到第一个 Token 的时间。
例如:
text
请求
↓
500ms
↓
开始输出
和:
text
请求
↓
5秒没有任何反馈
↓
开始输出
用户的感受完全不同。
所以 Agent 通常需要:
- Streaming
- 更快的模型
- Prompt 优化
- Context 优化
- 缓存
- 快速 Router
降低 TTFT。
四、但 Agent 不能只看首 Token
这是 Agent 和普通 Chat 一个很重要的区别。
假设:
text
TTFT = 500ms
看起来非常优秀。
但整个 Agent:
text
LLM 思考:3s
Tool:5s
LLM:4s
Tool:6s
最终回复:3s
那么:
text
End-to-End = 21.5s
用户还是会觉得慢。
因此生产 Agent 至少应该关注:
text
TTFT
+
LLM Latency
+
Tool Latency
+
Workflow Latency
+
E2E Latency
并且最好关注:
text
P50
P90
P95
P99
而不是只看平均响应时间。
五、大小模型策略:速度与成本的共同优化
不是所有任务都需要大模型。
一个成熟的 Agent 系统通常会进行模型路由:
text
用户请求
↓
意图识别
↓
Model Router
│
┌─────────────┼─────────────┐
↓ ↓ ↓
简单任务 普通任务 复杂任务
↓ ↓ ↓
小模型 中模型 大模型
例如:
| 任务 | 模型策略 |
|---|---|
| 意图识别 | 小模型 |
| 参数提取 | 小模型 |
| 简单分类 | 小模型 |
| Tool 参数生成 | 小/中模型 |
| 普通问答 | 中模型 |
| 复杂规划 | 大模型 |
| 复杂决策 | 大模型 |
核心思想:
让合适的模型处理合适的问题。
而不是:
所有请求无脑使用最大模型。
六、Reasoning 也应该分级
同样,并不是所有任务都需要深度思考。
可以设计:
text
简单任务
↓
No Thinking
普通任务
↓
Low Thinking
复杂任务
↓
Medium / High Thinking
例如:
text
意图识别 → 不需要深度思考
参数提取 → 不需要深度思考
工具调用 → 低推理
复杂规划 → 高推理
最终总结 → 中等推理
这实际上是在做:
模型能力、响应速度和成本之间的平衡。
七、质量:解决业务价值
速度快,但回答错误,没有业务价值。
所以第二个核心指标是:
质量。
但是 Agent 的质量比普通 Chat 更复杂。
普通 LLM 主要关注:
text
回答是否正确?
Agent 还需要关注:
text
任务是否完成?
工具是否调用正确?
参数是否正确?
数据是否正确?
流程是否正确?
结果是否稳定?
因此可以把 Agent 质量拆成:
text
模型质量
+
Prompt 质量
+
Tool 质量
+
数据质量
+
Workflow 质量
+
评测体系
八、Agent 的核心难点:非确定性
传统软件:
text
输入 A
↓
程序
↓
输出 B
同样的输入,通常可以得到确定的结果。
但 Agent:
text
输入 A
↓
LLM
↓
可能选择 Tool A
也可能:
text
输入 A
↓
LLM
↓
选择 Tool B
甚至:
text
Tool A
↓
LLM
↓
Tool B
↓
LLM
↓
Tool C
因此 Agent 天生具有一定的:
非确定性。
这也是为什么 Agent 生产化比 Demo 难。
九、如何提高 Agent 稳定性?
不能把所有决策都交给 LLM。
应该增加工程约束。
例如:
text
LLM 决定调用 Tool
↓
参数 Schema 校验
↓
权限校验
↓
Tool 执行
↓
结果校验
↓
LLM 继续处理
可以使用:
- JSON Schema
- Structured Output
- Tool Schema
- 参数校验
- 权限控制
- 状态机
- Workflow
- Guardrails
核心思想:
让 LLM 负责智能,让程序负责确定性。
十、价格:解决商业可行性
Agent 最大的问题之一就是:
一次用户请求可能调用多次模型。
普通 Chat:
text
User
↓
LLM
↓
Answer
Agent:
text
User
↓
Router
↓
Planner
↓
LLM
↓
Tool
↓
LLM
↓
Tool
↓
LLM
↓
Summary
一次请求可能产生多次 LLM 调用。
因此 Agent 成本必须重点控制。
十一、Agent 成本从哪里来?
主要包括:
11.1 模型成本
text
Input Token
+
Output Token
+
Reasoning Token
11.2 工具成本
例如:
- 搜索 API
- 地图 API
- OCR
- 第三方接口
- MCP 服务
11.3 基础设施成本
例如:
- GPU
- CPU
- Redis
- Elasticsearch
- 数据库
- 网络
- 存储
所以不能只看:
"一次 LLM 调用多少钱?"
而应该计算:
一次完整 Agent Task 的总成本。
十二、Agent 成本优化
12.1 大小模型路由
text
简单 → 小模型
复杂 → 大模型
这是最直接的成本优化。
12.2 Token 控制
减少:
text
历史对话
+
无关 Context
+
冗余 Tool Description
+
无关 RAG 内容
可以采用:
- Context 压缩
- 历史摘要
- Top-K 控制
- Prompt Compression
12.3 Cache
Agent 中可以缓存:
text
Prompt Cache
Embedding Cache
LLM Response Cache
Tool Result Cache
RAG Cache
例如:
text
用户 A 查询:
北京天气
↓
调用天气 API
↓
缓存结果
短时间内用户 B 再查询相同数据,就不一定需要再次调用。
十三、控制 Agent Loop
Agent 最大的成本风险之一:
text
Thought
↓
Tool
↓
Thought
↓
Tool
↓
Thought
↓
Tool
↓
......
如果没有限制,很容易:
- 消耗大量 Token
- 增加响应时间
- 增加 API 成本
- 甚至陷入死循环
因此需要:
text
max_iterations
max_tokens
timeout
budget
例如:
python
MAX_ITERATIONS = 5
MAX_TOKENS = 8000
TIMEOUT = 30
十四、并行执行:同时解决速度和成本问题
假设 Agent 需要:
text
查询天气
查询酒店
查询航班
如果三个任务互相没有依赖关系,就没必要:
text
天气
↓
酒店
↓
航班
可以:
text
┌→ 天气
Agent ────────┼→ 酒店
└→ 航班
并行调用:
python
asyncio.gather(
get_weather(),
get_hotels(),
get_flights()
)
这样可以明显降低整体响应时间。
十五、工程化:解决规模化生产
前三个指标解决的是:
text
速度
质量
价格
但真正上线后,还有一个更重要的问题:
能不能稳定运行?
这就是工程化。
十六、生产级 Agent 的工程能力
我会把它总结成:
text
Production Agent
│
├── 并发
├── Session
├── Memory
├── State
├── Retry
├── Timeout
├── Fallback
├── Rate Limit
├── Circuit Breaker
├── Observability
├── Logging
├── Monitoring
├── Security
├── Sandbox
└── Deployment
十七、并发与性能
上线后不能只测试:
text
1个用户
还需要测试:
text
10并发
50并发
100并发
500并发
1000并发
重点指标:
text
QPS
TPS
并发数
Token Throughput
GPU Utilization
P50
P95
P99
Error Rate
特别是大模型服务:
吞吐量和延迟需要一起考虑。
十八、Timeout:不能让 Agent 无限等待
一个 Agent 可能依赖:
text
LLM
↓
MCP
↓
数据库
↓
第三方 API
任何一个环节卡住,都可能导致整个请求卡住。
所以需要分层 Timeout:
text
Request Timeout
↓
Agent Timeout
↓
LLM Timeout
↓
Tool Timeout
↓
Database Timeout
例如:
text
Tool A > 5s
→ Timeout
LLM > 20s
→ Timeout
整个 Agent > 30s
→ Terminate
十九、Retry:重试不是越多越好
例如:
text
网络错误
502
503
连接超时
可以 Retry。
但:
text
参数错误
权限错误
业务错误
通常不应该无限 Retry。
可以使用:
Exponential Backoff + Max Retry
例如:
text
第1次:立即
第2次:1s
第3次:2s
第4次:4s
同时设置最大重试次数。
二十、降级:生产系统必须有 Plan B
例如:
text
大模型故障
↓
备用模型
MCP 服务故障
↓
备用 API
Redis 故障
↓
关闭缓存继续运行
搜索服务故障
↓
返回基础结果
核心思想:
不要让一个组件故障拖垮整个 Agent。
二十一、Memory:记忆不是"存得越多越好"
Agent Memory 可以分为:
text
短期记忆
↓
当前 Conversation
长期记忆
↓
用户 Profile
任务记忆
↓
Task State
知识记忆
↓
RAG / Vector DB
真正重要的问题不是:
Agent 能记住多少?
而是:
什么应该记?什么时候取?取多少?
否则:
text
Memory 越来越大
↓
Context 越来越大
↓
Token 越来越多
↓
速度越来越慢
↓
成本越来越高
所以 Memory 同时影响:
质量 + 速度 + 价格。
二十二、State:Agent 必须知道自己做到哪一步
例如一个订单 Agent:
text
查询商品
↓
确认价格
↓
确认库存
↓
创建订单
↓
支付
↓
完成
如果执行到:
text
创建订单
突然服务崩溃。
系统恢复之后必须知道:
"我之前做到哪一步?"
因此需要:
- State
- Checkpoint
- Task ID
- Workflow State
这也是生产级 Agent 与 Demo 的重要区别。
二十三、回滚与幂等
如果 Agent 执行:
text
Tool A 成功
↓
Tool B 成功
↓
Tool C 失败
怎么办?
如果 Tool A/B 都修改了数据,就不能简单地重新执行。
需要考虑:
- 幂等
- Checkpoint
- Compensation
- Rollback
- Transaction
例如:
text
创建订单成功
↓
支付失败
系统必须知道:
是否需要取消订单?
这已经不是纯 AI 问题,而是典型的软件工程问题。
二十四、Observability:必须知道 Agent 为什么出错
普通 API:
text
Request
↓
Response
Agent:
text
Request
↓
LLM
↓
Tool
↓
LLM
↓
Tool
↓
LLM
↓
Response
所以需要完整 Trace。
例如:
text
Trace ID: xxx
├── LLM Call
│ ├── Model
│ ├── Input Tokens
│ ├── Output Tokens
│ └── Latency
│
├── Tool Call
│ ├── Tool Name
│ ├── Parameters
│ ├── Result
│ └── Latency
│
├── LLM Call
│
└── Final Response
这样出现问题时才能判断:
text
是模型错了?
是 Prompt 错了?
是 RAG 错了?
是 Tool 错了?
是数据库错了?
还是网络超时?
二十五、Sandbox:Agent 执行代码时尤其重要
如果 Agent 能够:
text
执行 Python
执行 Shell
操作文件
运行程序
就不能直接让它拥有宿主机全部权限。
需要:
text
Agent
↓
Sandbox
↓
受限制的运行环境
限制:
- CPU
- Memory
- Disk
- Network
- Process
- Permission
- Execution Time
这也是生产级 Agent 必须考虑的安全问题。
二十六、Credentials:权限不能交给模型决定
Agent 可以调用:
text
数据库
订单系统
CRM
支付系统
企业内部 API
但是:
LLM 不应该拥有无限权限。
应该:
text
Agent
↓
Permission Check
↓
Credential
↓
Tool
↓
Target System
实现:
- API Key 管理
- OAuth
- Token 管理
- RBAC
- 最小权限
- Secret 管理
二十七、从 Demo 到 Production
一个 Agent Demo 可能只需要:
python
response = llm.chat(...)
但生产系统至少需要:
text
Agent
│
┌────────────┼────────────┐
↓ ↓ ↓
LLM Runtime Infrastructure
│ │ │
Model Planning Session
Token Tool Memory
Cache Workflow Logging
Stream State Monitor
Retry Security
Timeout Sandbox
Parallel Deployment
所以:
调用 LLM API 只是 Agent 开发的开始,而不是结束。
二十八、我理解的 Agent 开发方法论
最终可以归纳成四句话:
text
速度 → 解决用户体验
质量 → 解决业务价值
价格 → 解决商业可行性
工程化 → 解决规模化生产
进一步展开:
text
Production Agent
│
┌──────────────────┼──────────────────┐
↓ ↓ ↓
LLM Agent Runtime Infrastructure
│ │ │
大小模型策略 Planning Session
Token Tool Calling Memory
Thinking Context Observability
Streaming Workflow Credentials
Cache State Sandbox
Retry Hosting
Timeout Deployment
Parallel
│ │ │
└──────────────────┼──────────────────┘
↓
速度 / 质量 / 价格
↓
业务价值
二十九、总结
如果把传统软件开发比作"盖房子",那么 Agent 开发并不是:
"把一个大模型 API 接进来。"
而是:
把一个具有非确定性、存在推理成本和响应延迟的大模型,封装成一个可控、稳定、可观测、可扩展的生产级软件系统。
因此,真正的 Agent 工程师需要同时关注四个层面:
1. 速度
解决:
用户愿不愿意用。
关注:
- TTFT
- E2E Latency
- Streaming
- Token
- Tool 并行
- 模型路由
2. 质量
解决:
用户用完有没有价值。
关注:
- 模型效果
- Prompt
- Tool Calling
- RAG
- Workflow
- 稳定性
- Eval
3. 价格
解决:
产品能不能赚钱。
关注:
- 模型成本
- Token
- Reasoning
- Cache
- Context
- 大小模型路由
- Agent 调用次数
4. 工程化
解决:
系统能不能真正上线并规模化。
关注:
- 并发
- Session
- Memory
- State
- Retry
- Timeout
- 降级
- 日志
- Trace
- 监控
- 安全
- Sandbox
- 部署运维
最终可以用一句话概括:
软件 Agent 开发:速度解决用户体验,质量解决业务价值,价格解决商业可行性,工程化解决规模化生产。
这不仅适用于 Agent,也适用于几乎所有真正进入生产环境的 AI 应用系统。