跳到主要内容

AI Agent 工程化实践

Agent 工程化全景

1. Function Calling 深入

tools = [{
"type": "function",
"function": {
"name": "search_web",
"description": "搜索互联网获取实时信息",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "搜索关键词"}
},
"required": ["query"]
}
}
}]

response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
tool_choice="auto" # auto / none / required
)

# 若模型决定调用工具
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
result = execute_tool(tool_call.function.name, tool_call.function.arguments)
# 将结果追加到 messages 继续对话

2. ReAct 模式实现

System Prompt 示例:
你是一个能调用工具的 AI 助手。每次思考请遵循以下格式:

Thought: 分析当前状况,决定下一步
Action: 调用工具名称
Action Input: 工具参数
Observation: (工具返回结果)
... (循环直到有答案)
Final Answer: 最终答案

终止条件

  • 得到足够信息生成最终答案
  • 达到最大迭代次数(防止死循环)
  • 工具调用失败超过阈值

3. 多 Agent 系统设计

层级架构

Orchestrator Agent(任务分解和协调)
├── Research Agent(信息检索)
├── Code Agent(代码生成执行)
├── Writer Agent(内容生成)
└── Critic Agent(质量评估)

通信方式

  • 共享消息队列
  • Blackboard 模式(共享状态空间)
  • 直接函数调用(同步)
  • 事件驱动(异步)

代表框架

框架特点
LangGraph图结构工作流,状态机,支持循环
AutoGen对话式多 Agent,微软出品
CrewAI角色化 Agent 团队,简单易用
OpenAI Swarm轻量级 handoff 模式

4. 记忆系统设计

短期记忆(In-context)
→ 当前对话历史,直接放入 context window
→ 超长时摘要压缩

长期记忆(外部存储)
→ 向量存储(语义检索历史对话)
→ 结构化存储(用户偏好、任务状态)
→ 知识图谱(实体关系)

工作记忆(执行状态)
→ 当前任务的中间结果
→ 工具调用历史

5. 可靠性与安全

幂等性

  • 工具调用可能因网络重试多次执行
  • 设计工具时保证幂等(查询类天然幂等,写入类需去重)

沙箱执行

  • 代码执行 Agent 必须在隔离环境(Docker/E2B)
  • 限制文件系统访问、网络访问、执行时间

Prompt 注入防御

  • 严格区分系统指令和用户输入
  • 对工具输出做内容过滤
  • 敏感操作需要用户二次确认

可观测性

  • 记录每次 LLM 调用(输入/输出/token 数/延迟)
  • 工具调用日志(工具名/参数/结果/耗时)
  • 使用 LangSmith / Langfuse / Phoenix 做 tracing

6. 成本与延迟优化

  • 缓存:相同输入的 LLM 调用结果缓存(Prompt Cache)
  • 模型路由:简单任务用小模型(GPT-4o-mini),复杂任务用大模型
  • 流式输出:SSE 降低首字节时间,提升用户体验
  • 并行工具调用:无依赖的工具并发执行
  • Context 压缩:历史对话摘要,减少 token 消耗

7. 高频面试题

  • Agent 如何处理工具调用失败? 重试(指数退避)+ fallback 工具 + 告知 LLM 错误信息让其调整策略
  • 如何防止 Agent 无限循环? 最大迭代次数 + 检测重复 action + 超时熔断
  • 多 Agent 如何保证任务不重复? 任务队列 + 状态锁 + 幂等性设计
  • 如何评估 Agent 质量? 任务完成率、工具调用准确率、token 效率、延迟 P99