跳到主要内容

Agent 调试与优化

问题

开发了一个 AI Agent 但它经常出错:调用错误的工具、陷入循环、任务完成质量差,如何排查和优化?

答案

一、Agent 常见问题

问题表现根因
工具选择错误调用了不该调的工具工具描述不清晰
死循环反复调用同一工具缺少终止条件
遗忘上下文忘记前面的步骤结果上下文过长丢失信息
任务偏离做了用户没要求的事规划能力不足
错误传播一步出错导致后续全错缺少错误处理和回退

二、排查流程

三、优化策略

1. 工具描述优化

// ❌ 模糊的工具描述
const badTool = {
name: 'search',
description: '搜索',
}

// ✅ 清晰的工具描述
const goodTool = {
name: 'search_knowledge_base',
description: '在公司内部知识库中搜索文档。当用户询问公司政策、产品信息时使用。不能搜索外网信息。',
parameters: {
query: { type: 'string', description: '搜索关键词,应该是具体的短语而非完整句子' },
},
}

2. 防死循环

async function agentLoop(query: string) {
const MAX_STEPS = 10 // 硬性上限
const MAX_SAME_TOOL = 3 // 连续调同一工具上限

let steps = 0
let sameToolCount = 0
let lastTool = ''

while (steps < MAX_STEPS) {
const action = await plan(query, context)

if (action.type === 'finish') break

// 检测重复调用
if (action.tool === lastTool) {
sameToolCount++
if (sameToolCount >= MAX_SAME_TOOL) {
context.push({ role: 'system', content: '你已经多次调用同一工具,请尝试其他方法或直接给出回答。' })
}
} else {
sameToolCount = 0
}

lastTool = action.tool
steps++

const result = await executeTool(action)
context.push(result)
}
}

3. 可观测性

记录内容用途
每步的推理过程(Thought)理解 Agent 决策逻辑
工具调用参数和返回定位工具问题
Token 消耗成本监控
尝试次数和总步数效率评估
最终结果和用户反馈效果评价
Agent 调试心法

Agent 的问题 80% 出在 Prompt(System Prompt + 工具描述) 上。先优化 Prompt,再考虑架构优化。


常见面试问题

Q1: 如何提升 Agent 的规划能力?

答案

  1. ReAct Prompt:强制 Agent 先 Thought 再 Action
  2. Plan-then-Execute:先拟定计划再逐步执行
  3. few-shot 示例:在 Prompt 中给出正确的推理链示例
  4. 更强的模型:复杂任务用 GPT-4o / Claude 3.5 Sonnet

Q2: Agent 和 Workflow 怎么选?

答案

维度Agent(自主决策)Workflow(固定流程)
灵活性
可控性
可预测性
适用场景开放性任务流程固定的任务

建议:能用 Workflow 解决就不用 Agent。Agent 适合任务步骤不确定的场景。

Q3: 多 Agent 系统的常见问题?

答案

  • 协调开销:Agent 间通信消耗大量 Token
  • 责任不清:多个 Agent 都不做某个子任务
  • 调试困难:链路长、状态复杂

建议:从单 Agent 开始,确有需求再拆分。大多数场景 单 Agent + 多工具 就够了。


相关链接