AI Agent 执行长期任务的核心难点不在“调用 LLM”,而在于:
自上而下分解:
目标:完成市场调研报告
├── 子任务1:收集行业数据
│ ├── 步骤1.1:搜索行业规模
│ ├── 步骤1.2:获取头部公司财报
│ └── 步骤1.3:抓取竞品信息
├── 子任务2:数据整理分析
│ ├── 步骤2.1:清洗数据
│ └── 步骤2.2:可视化
└── 子任务3:撰写报告
├── 步骤3.1:写摘要
├── 步骤3.2:写正文
└── 步骤3.3:排版
实现方式:
| 类型 | 作用 | 存储方式 |
|---|---|---|
| 短期记忆 | 当前任务的中间状态 | 上下文窗口 |
| 工作记忆 | 跨步骤的关键信息 | 结构化存储(Redis/DB) |
| 长期记忆 | 历史任务经验、知识 | 向量数据库/RAG |
| 情景记忆 | 过去成功/失败的执行轨迹 | 数据库 + 检索 |
关键设计:记忆压缩与检索
# 任务状态结构示例
TaskState = {
"task_id": "uuid",
"goal": "完成市场调研报告",
"status": "in_progress", # pending/running/completed/failed
"current_step": 12,
"completed_steps": [1, 2, 3, ..., 11],
"checkpoint": {...}, # 当前检查点数据
"artifacts": [...], # 已产生的中间产物
"history": [...], # 执行历史
}
检查点(Checkpoint)机制:
执行循环中加入“目标检查”步骤:
- 定期回顾:当前步骤是否仍然服务于原始目标?
- 偏离检测:如果 LLM 输出与目标相关性下降,触发重新规划
- 置信度评估:对每一步的输出进行自我评分
实现技巧:
长期任务中,关键节点引入人工确认:
┌─────────────────────────────────────────────────┐
│ Agent 执行循环 │
├─────────────────────────────────────────────────┤
│ 1. 获取当前状态(从持久化存储加载) │
│ 2. 检索相关记忆(向量搜索) │
│ 3. 构建 Prompt(目标 + 状态 + 记忆 + 工具描述) │
│ 4. LLM 推理 → 决定下一个动作 │
│ 5. 执行动作(工具调用) │
│ 6. 处理结果 → 更新状态 → 保存检查点 │
│ 7. 判断:完成?→ 结束 / 未完成 → 回到步骤 1 │
│ 8. 异常处理:超时/错误 → 重试或人工介入 │
└─────────────────────────────────────────────────┘
如果面试被问到这个问题,建议这样组织回答:
1. 先点明核心挑战(30 秒)
“长期任务的核心挑战在于上下文管理、错误累积和状态持久化。”
2. 给出架构方案(2–3 分钟)
“我会用任务分解 + 外部记忆 + 检查点恢复的架构。具体来说……”
3. 举例说明(1–2 分钟)
“比如做一个调研 Agent,我会先让 LLM 生成计划,然后每个子任务作为独立执行单元,结果存入向量库,上下文满时进行摘要压缩……”
4. 提到权衡取舍(30 秒)
“这里有个 trade-off:分解越细,单步准确率越高,但步骤越多,总错误率也越高。所以需要在粒度和可靠性之间找平衡。”
5. 展示实战经验
“我之前做过一个类似的系统,遇到的最大问题是……”
| 维度 | 关键技术 |
|---|---|
| 计划 | Task Decomposition, Plan-and-Execute, ReAct |
| 记忆 | 短期/工作/长期记忆,向量检索,摘要压缩 |
| 状态 | Checkpoint, 持久化存储,恢复机制 |
| 执行 | 工具抽象,沙箱,异步任务,重试 |
| 监控 | 目标检查,置信度评估,Human-in-the-loop |
| 工程 | 成本控制,并行化,可观测性 |
这确实是一个非常好的面试题,因为它能区分:
评论专区
评论加载中...登录后即可发表评论