别再只调 Prompt 了:AI Agent 提速、降本、稳定运行的工程优化指南
AI Agent 性能优化教程|附配置文件
随着大模型能力的持续提升,AI Agent 已经从“问答助手”逐渐发展为能够理解目标、拆解任务、调用工具、执行流程并持续反馈的智能系统。无论是企业知识库助手、自动化运维 Agent、数据分析 Agent,还是面向个人效率的办公助手,性能优化都是决定其可用性和商业价值的关键因素。
很多团队在搭建 AI Agent 时,往往只关注模型能力和提示词设计,却忽视了系统层面的性能问题。结果就是:响应慢、成本高、上下文混乱、工具调用失败率高、多轮任务容易跑偏、并发上来之后服务不稳定。事实上,一个优秀的 AI Agent 不仅要“聪明”,还要“稳定、快速、可控、低成本”。
本文将系统介绍 AI Agent 性能优化的方法,包括架构设计、模型选择、Prompt 优化、上下文管理、工具调用优化、缓存策略、并发控制、评测体系以及配置文件示例,帮助你从工程角度构建更高性能的 AI Agent。
一、AI Agent 性能优化到底优化什么?
在讨论优化之前,需要先明确 AI Agent 的“性能”并不只是响应速度。对于一个完整的 Agent 系统来说,性能通常包含以下几个维度:
| 优化维度 | 说明 |
|---|---|
| 响应速度 | 用户从发起请求到获得结果的时间 |
| 推理质量 | Agent 是否能正确理解任务并给出高质量结果 |
| 工具调用准确率 | 是否能选择正确工具、生成正确参数并处理返回结果 |
| 成本控制 | Token 消耗、模型调用费用、工具调用资源消耗 |
| 稳定性 | 高并发、长任务、多步骤执行时是否可靠 |
| 可观测性 | 是否能追踪日志、调用链、失败原因和性能瓶颈 |
| 可扩展性 | 是否方便增加工具、模型、记忆模块和工作流 |
| 安全性 | 是否能避免越权调用、提示词注入和敏感信息泄露 |
因此,AI Agent 性能优化不是单点优化,而是一个系统工程。你需要同时关注模型、上下文、Prompt、工具、缓存、调度、存储和监控等多个环节。
二、典型 AI Agent 架构拆解
一个常见的 AI Agent 系统通常由以下模块组成:
用户请求
↓
请求解析层
↓
任务规划器 Planner
↓
上下文管理 Context Manager
↓
模型推理 LLM
↓
工具选择 Tool Router
↓
工具执行 Tool Executor
↓
结果整合 Response Generator
↓
日志与监控 Observability
其中最容易产生性能问题的环节有:
- 上下文过长:历史对话、工具结果、知识库内容全部塞进 Prompt,导致 Token 成本飙升。
- 模型选择不合理:所有任务都调用最强模型,成本高、延迟大。
- 工具调用链过长:Agent 反复规划、反复试错,导致一次请求需要多轮调用。
- Prompt 不稳定:指令不清晰,模型输出格式不稳定,工具参数容易错误。
- 缺乏缓存:相同问题、相同知识检索、相同工具调用重复执行。
- 没有超时与重试策略:某个外部工具阻塞会拖垮整个任务。
- 缺少评测体系:优化后不知道效果是否真的提升。
所以,优化 AI Agent 的第一步,是将系统拆开,逐个定位瓶颈,而不是盲目更换模型。
三、模型选择优化:不要所有任务都用最大模型
很多人构建 Agent 时,默认所有任务都使用最强模型。这样虽然简单,但成本和延迟都很高。更合理的做法是采用“模型分层策略”。
1. 按任务复杂度选择模型
可以将任务分为三类:
| 任务类型 | 示例 | 推荐模型策略 |
|---|---|---|
| 简单任务 | 分类、意图识别、格式转换、摘要 | 小模型或快速模型 |
| 中等任务 | 文档问答、代码解释、数据分析 | 中等能力模型 |
| 复杂任务 | 多步骤规划、复杂推理、长文生成 | 高能力模型 |
例如,一个 Agent 在处理用户请求时,可以先使用轻量模型做意图识别,再决定是否调用更强模型。
model_routing:
default_model: fast-model
rules:
- name: simple_classification
condition: "task_type in ['intent_detection', 'format_convert', 'summary']"
model: fast-model
- name: medium_reasoning
condition: "task_type in ['qa', 'document_analysis', 'tool_selection']"
model: balanced-model
- name: complex_planning
condition: "task_type in ['multi_step_planning', 'code_generation', 'strategy_analysis']"
model: advanced-model
这种方式可以显著降低平均调用成本,并改善整体响应时间。
2. 拆分“规划模型”和“执行模型”
Agent 通常包含两个关键阶段:
- Planner:负责理解目标、拆解任务、选择工具。
- Executor:负责执行具体步骤、生成结构化参数、整合结果。
对于复杂任务,Planner 可以使用能力更强的模型,而 Executor 可以使用速度更快、成本更低的模型。
agent_models:
planner:
model: advanced-model
temperature: 0.2
max_tokens: 1200
executor:
model: fast-model
temperature: 0.0
max_tokens: 800
summarizer:
model: fast-model
temperature: 0.3
max_tokens: 600
这样可以避免每个环节都使用高成本模型,同时保持关键决策质量。
四、Prompt 优化:稳定性比华丽更重要
Prompt 是 Agent 性能优化中最容易被低估的部分。一个好的 Prompt 不一定很长,但一定要清晰、稳定、可执行。
1. 使用结构化 Prompt
不要让模型自由发挥太多,尤其是在工具调用和任务规划环节。建议将 Prompt 分为以下部分:
角色定义
任务目标
可用工具
执行约束
输出格式
错误处理规则
示例
示例:
你是一个任务规划 Agent,负责将用户目标拆解为可执行步骤。
要求:
1. 只输出 JSON,不要输出解释文字。
2. 每个步骤必须包含 action、tool、input、expected_output。
3. 如果不需要工具,tool 字段设置为 null。
4. 最多生成 5 个步骤。
5. 不允许编造工具名称,只能从工具列表中选择。
可用工具:
- search_docs:检索内部文档
- query_database:查询数据库
- call_api:调用外部 API
- summarize_text:总结文本
输出格式:
{
"task_type": "",
"steps": [
{
"action": "",
"tool": "",
"input": {},
"expected_output": ""
}
]
}
结构化 Prompt 可以显著提升输出稳定性,降低解析失败率。
2. 降低 temperature
在 Agent 的工具调用、参数生成、流程规划场景中,通常不需要太多创造性。推荐设置:
| 场景 | temperature |
|---|---|
| 工具调用参数生成 | 0 ~ 0.2 |
| 任务规划 | 0.1 ~ 0.3 |
| 文档问答 | 0.2 ~ 0.5 |
| 创意写作 | 0.6 ~ 0.9 |
对于企业级 Agent,建议默认 temperature 控制在 0.2 左右,以提高稳定性。
3. 减少无效上下文
Prompt 不是越长越好。很多系统会把用户历史对话、知识库检索结果、工具返回信息全部拼接进去,导致模型注意力分散。优化方式包括:
- 只保留与当前任务相关的历史记录;
- 对长历史进行摘要;
- 对工具返回结果进行字段裁剪;
- 对知识库检索结果做重排序;
- 设置上下文 Token 上限。
五、上下文管理优化:减少 Token,提升准确率
上下文管理是 AI Agent 最核心的性能优化点之一。上下文太少,模型缺信息;上下文太多,模型会混乱且成本上升。
1. 上下文分层
建议将上下文分为四层:
| 层级 | 内容 | 是否每次传入模型 |
|---|---|---|
| 系统上下文 | Agent 角色、规则、安全约束 | 是 |
| 任务上下文 | 当前任务目标、用户输入 | 是 |
| 工作记忆 | 当前任务中间结果 | 按需 |
| 长期记忆 | 用户偏好、历史记录、知识库 | 检索后按需 |
不要每次都把长期记忆完整塞入 Prompt,而应该通过检索方式动态取回。
2. 历史消息压缩
当对话轮次变多时,可以定期对历史进行摘要:
context:
max_context_tokens: 12000
history:
keep_recent_turns: 6
enable_summary: true
summary_trigger_tokens: 6000
summary_model: fast-model
memory:
enable_long_term_memory: true
retrieval_top_k: 5
逻辑如下:
- 最近 6 轮对话原样保留;
- 更早的对话压缩为摘要;
- 长期记忆通过向量检索按需召回;
- 总上下文不超过 max_context_tokens。
3. 工具结果裁剪
工具返回结果经常非常长,比如数据库查询、网页搜索、日志分析等。不要直接把原始结果全部交给模型。应当先进行结构化裁剪。
例如,数据库查询返回 1000 行数据时,只传入:
{
"row_count": 1000,
"columns": ["date", "user_count", "revenue"],
"sample_rows": [
["2025-01-01", 1200, 35000],
["2025-01-02", 1350, 41000]
],
"statistics": {
"total_revenue": 76000,
"avg_user_count": 1275
}
}
这样既能保留关键信息,又能减少 Token 消耗。
六、工具调用优化:让 Agent 少走弯路
Agent 的强大之处在于能够调用工具,但工具调用也是最容易出问题的地方。
1. 工具定义要清晰
工具名称、描述、参数、返回值必须明确。不要写模糊描述,例如“查询信息”。应该说明工具适用场景、输入字段和限制条件。
tools:
- name: search_docs
description: "用于检索企业内部知识库文档,适合回答制度、流程、产品说明等问题。"
timeout_ms: 3000
parameters:
type: object
required:
- query
properties:
query:
type: string
description: "检索关键词或自然语言问题"
top_k:
type: integer
default: 5
minimum: 1
maximum: 10
清晰的工具描述可以减少模型误选工具的概率。
2. 增加工具路由器
当工具数量较多时,不建议把所有工具都暴露给模型。可以先使用 Tool Router,根据任务类型筛选候选工具。
tool_router:
enabled: true
max_candidate_tools: 5
routing_rules:
- task_type: document_qa
tools:
- search_docs
- summarize_text
- task_type: data_analysis
tools:
- query_database
- python_executor
- task_type: api_operation
tools:
- call_api
这样模型每次只需要在少量工具中选择,准确率更高,Prompt 也更短。
3. 设置超时、重试和降级
外部工具不稳定是常态。每个工具都应配置:
- 超时时间;
- 最大重试次数;
- 重试间隔;
- 失败后的降级方案;
- 是否允许用户确认后重试。
tool_execution:
default_timeout_ms: 5000
max_retries: 2
retry_backoff_ms: 500
fail_fast: false
fallback:
enabled: true
strategy: "return_partial_result"
如果某个工具失败,Agent 不应无限等待,而应返回部分结果或说明失败原因。
七、缓存优化:降低延迟和成本
缓存是提升 Agent 性能最直接有效的方法之一。常见缓存包括:
| 缓存类型 | 适用场景 |
|---|---|
| Prompt 缓存 | 系统提示词、工具描述等固定内容 |
| 检索缓存 | 相同 query 的知识库检索结果 |
| 工具结果缓存 | 相同 API 或数据库查询结果 |
| 模型输出缓存 | 相同输入下的模型回答 |
| Embedding 缓存 | 文档向量、query 向量 |
1. 检索缓存配置
cache:
enabled: true
backend: redis
redis_url: "redis://localhost:6379/0"
ttl_seconds:
retrieval: 600
tool_result: 300
llm_response: 120
embedding: 86400
key_strategy:
normalize_query: true
include_user_scope: true
注意:对于涉及用户权限的数据,缓存 key 必须包含用户身份或租户信息,避免数据泄露。
2. 模型输出缓存的使用限制
模型输出缓存适合以下场景:
- FAQ;
- 固定文档问答;
- 规则解释;
- 格式转换;
- 低实时性内容生成。
不适合以下场景:
- 实时数据查询;
- 个性化强的回答;
- 涉及权限判断的任务;
- 多步骤复杂 Agent 执行。
八、并发与任务调度优化
当 Agent 从 Demo 走向生产环境,并发问题会迅速暴露。常见问题包括模型 API 限流、工具服务阻塞、任务队列堆积、内存占用过高等。
1. 使用异步执行
对于可以并行的工具调用,应尽量异步执行。例如同时检索多个知识库、同时调用多个统计接口。
execution:
mode: async
max_concurrent_tasks: 20
max_concurrent_tools_per_task: 3
task_timeout_ms: 30000
2. 长任务使用队列
对于耗时较长的任务,例如生成报告、批量分析文件、自动化运维巡检,不应阻塞 HTTP 请求,而应进入任务队列。
queue:
enabled: true
backend: redis
worker_count: 4
max_queue_size: 1000
task_result_ttl_seconds: 3600
用户发起任务后,系统返回 task_id,前端轮询或通过 WebSocket 获取执行进度。
3. 限流与熔断
为了避免突发流量拖垮系统,需要设置限流策略:
rate_limit:
enabled: true
per_user:
requests_per_minute: 30
tokens_per_minute: 50000
global:
requests_per_minute: 1000
tokens_per_minute: 1000000
circuit_breaker:
enabled: true
failure_threshold: 0.5
recovery_time_seconds: 60
当某个模型或工具失败率过高时,熔断器可以临时关闭该路径,防止雪崩。
九、RAG Agent 的专项优化
很多 AI Agent 会结合 RAG,也就是检索增强生成。RAG 性能直接影响 Agent 的回答质量和速度。
1. 文档切分优化
文档切分太大,会导致召回内容冗余;切分太小,会丢失上下文。一般建议:
rag:
chunk_size: 800
chunk_overlap: 120
retrieval_top_k: 8
rerank_top_k: 4
对于结构化文档,如产品手册、制度文档、API 文档,可以按标题层级切分,而不是简单按字符数切分。
2. 召回与重排序
推荐采用“两阶段检索”:
- 向量检索召回 top_k;
- reranker 重排序;
- 只将最相关的 top_n 内容送入模型。
retrieval:
embedding_model: text-embedding-model
vector_store: milvus
top_k: 12
rerank:
enabled: true
model: rerank-model
top_k: 5
这可以减少无关内容进入上下文,提高回答准确率。
3. 引用来源
企业级 Agent 最好返回引用来源,方便用户验证答案。
answer:
include_citations: true
citation_format: "[{doc_title} - {section}]"
这不仅提升可信度,也方便排查错误回答来自哪段文档。
十、完整配置文件示例
下面给出一个较完整的 AI Agent 性能优化配置文件示例,可根据业务场景调整。
agent:
name: enterprise-assistant
version: "1.0.0"
language: zh-CN
mode: production
models:
default: balanced-model
planner:
model: advanced-model
temperature: 0.2
max_tokens: 1200
timeout_ms: 15000
executor:
model: fast-model
temperature: 0.0
max_tokens: 800
timeout_ms: 8000
summarizer:
model: fast-model
temperature: 0.3
max_tokens: 600
timeout_ms: 6000
model_routing:
enabled: true
rules:
- task_type: intent_detection
model: fast-model
- task_type: document_qa
model: balanced-model
- task_type: data_analysis
model: advanced-model
- task_type: multi_step_planning
model: advanced-model
prompt:
system_template: prompts/system.md
planner_template: prompts/planner.md
executor_template: prompts/executor.md
output_format: json
strict_json: true
context:
max_context_tokens: 12000
keep_recent_turns: 6
enable_summary: true
summary_trigger_tokens: 6000
summary_model: fast-model
tool_result_max_tokens: 2000
memory:
enable_long_term_memory: true
retrieval_top_k: 5
user_scope: true
tools:
router:
enabled: true
max_candidate_tools: 5
execution:
default_timeout_ms: 5000
max_retries: 2
retry_backoff_ms: 500
fallback_strategy: return_partial_result
registry:
- name: search_docs
description: "检索企业内部知识库文档"
timeout_ms: 3000
- name: query_database
description: "查询业务数据库,只允许执行只读 SQL"
timeout_ms: 5000
- name: python_executor
description: "执行安全沙箱中的 Python 数据分析代码"
timeout_ms: 10000
- name: call_api
description: "调用经过授权的外部 API"
timeout_ms: 5000
rag:
enabled: true
chunk_size: 800
chunk_overlap: 120
embedding_model: text-embedding-model
vector_store: milvus
retrieval_top_k: 12
rerank:
enabled: true
model: rerank-model
top_k: 5
answer:
include_citations: true
cache:
enabled: true
backend: redis
redis_url: "redis://localhost:6379/0"
ttl_seconds:
retrieval: 600
tool_result: 300
llm_response: 120
embedding: 86400
key_strategy:
normalize_query: true
include_user_scope: true
execution:
mode: async
max_concurrent_tasks: 20
max_concurrent_tools_per_task: 3
task_timeout_ms: 30000
queue:
enabled: true
backend: redis
worker_count: 4
max_queue_size: 1000
task_result_ttl_seconds: 3600
rate_limit:
enabled: true
per_user:
requests_per_minute: 30
tokens_per_minute: 50000
global:
requests_per_minute: 1000
tokens_per_minute: 1000000
circuit_breaker:
enabled: true
failure_threshold: 0.5
recovery_time_seconds: 60
observability:
logging:
level: info
include_prompt: false
include_tool_result: true
tracing:
enabled: true
provider: opentelemetry
metrics:
enabled: true
collect:
- latency
- token_usage
- tool_success_rate
- cache_hit_rate
- model_error_rate
- user_feedback_score
security:
prompt_injection_detection: true
pii_masking: true
tool_permission_check: true
sql_readonly: true
sandbox_execution: true
十一、可观测性:没有监控就没有优化
AI Agent 的性能优化必须基于数据。建议至少记录以下指标:
| 指标 | 说明 |
|---|---|
| end_to_end_latency | 用户请求总耗时 |
| llm_latency | 模型调用耗时 |
| tool_latency | 工具调用耗时 |
| token_input/output | 输入输出 Token 数 |
| tool_success_rate | 工具调用成功率 |
| cache_hit_rate | 缓存命中率 |
| planning_steps | Agent 规划步骤数 |
| retry_count | 重试次数 |
| error_type | 错误类型 |
| user_feedback | 用户反馈评分 |
如果你发现响应慢,应该拆开看:
- 是模型慢?
- 是检索慢?
- 是工具慢?
- 是上下文太长?
- 是 Agent 循环次数太多?
- 是并发导致排队?
只有定位到具体瓶颈,优化才有意义。
十二、评测体系:优化不能只凭感觉
性能优化之后,必须通过评测验证效果。建议建立一个 Agent Benchmark,包括以下测试集:
- 意图识别测试集:验证任务分类是否准确。
- 工具调用测试集:验证工具选择和参数生成是否正确。
- RAG 问答测试集:验证答案准确性和引用来源。
- 多步骤任务测试集:验证复杂任务完成率。
- 压力测试集:验证高并发下的响应时间和错误率。
- 安全测试集:验证提示词注入、越权访问和敏感信息泄露。
核心评测指标包括:
evaluation:
metrics:
task_success_rate: "任务完成率"
tool_call_accuracy: "工具调用准确率"
answer_correctness: "答案正确率"
hallucination_rate: "幻觉率"
avg_latency_ms: "平均延迟"
p95_latency_ms: "P95 延迟"
avg_token_cost: "平均 Token 成本"
error_rate: "错误率"
尤其要关注 P95 延迟,而不只是平均延迟。因为真实用户往往感知的是最慢的那部分请求。
十三、常见优化策略清单
下面是一份可以直接用于项目排查的优化清单:
- [ ] 是否根据任务复杂度进行模型路由?
- [ ] 是否将 Planner 和 Executor 分离?
- [ ] Prompt 是否要求固定 JSON 输出?
- [ ] 是否限制 Agent 最大执行步骤?
- [ ] 是否对历史对话进行摘要?
- [ ] 是否限制工具返回内容长度?
- [ ] 是否对知识库检索结果进行 rerank?
- [ ] 是否启用 Redis 缓存?
- [ ] 缓存 key 是否包含用户权限范围?
- [ ] 工具是否配置超时和重试?
- [ ] 外部 API 是否配置熔断?
- [ ] 长任务是否进入队列?
- [ ] 是否记录 Token、延迟、错误和调用链?
- [ ] 是否建立自动化评测集?
- [ ] 是否进行提示词注入检测?
- [ ] 是否限制 SQL、代码执行等高风险工具权限?
十四、推荐落地路径
如果你的团队刚开始优化 AI Agent,不建议一次性改造所有模块。可以按照以下顺序逐步推进:
第一阶段:降低成本和延迟
- 增加模型路由;
- 减少无效上下文;
- 开启检索缓存和工具缓存;
- 限制最大执行步骤;
- 给工具增加超时机制。
第二阶段:提升准确率和稳定性
- 优化 Prompt 输出格式;
- 增加工具路由器;
- 优化 RAG 切分、召回和重排序;
- 建立错误重试与降级策略;
- 引入结构化日志和链路追踪。
第三阶段:生产级治理
- 建立自动化评测集;
- 引入权限控制和安全检测;
- 加入限流、熔断和队列;
- 建立监控大盘;
- 持续基于真实用户反馈迭代。
十五、总结
AI Agent 性能优化的核心,不是简单地换一个更强的大模型,而是构建一套稳定、可控、可观测、可扩展的工程体系。
在实际项目中,最有效的优化通常来自以下几点:
- 模型分层:简单任务用快模型,复杂任务用强模型。
- 上下文压缩:只给模型当前任务真正需要的信息。
- Prompt 结构化:让模型输出稳定、可解析、可执行。
- 工具治理:工具少暴露、强约束、可超时、可重试。
- 缓存机制:减少重复检索、重复调用和重复推理。
- 异步调度:长任务队列化,可并行任务异步化。
- 可观测性:用数据定位瓶颈,而不是凭感觉优化。
- 自动评测:持续验证优化是否真的提升了效果。
一个真正可用的 AI Agent,既要具备强大的推理能力,也要具备工程系统的稳定性。只有将模型能力与系统优化结合起来,才能让 Agent 从演示 Demo 走向可靠的生产应用。