工业级AI Agent - 测试题答案

📝 多智能体协作与长期记忆系统测试答案


第一部分:选择题答案

1. C - 任务分解和智能体编排

解析:CEO Agent作为总控智能体,主要负责将复杂任务分解为子任务,并协调各个专业智能体完成工作。

2. B - 确保任务依赖关系无环

解析:DAG(有向无环图)确保任务流程中不会出现循环依赖,保证任务可以按拓扑顺序执行。

3. C - 情景记忆(Episodic Memory)

解析:情景记忆存储在Milvus向量数据库中,属于长期记忆。短期缓冲区和Redis缓存属于短期记忆。

4. C - 确保输出质量

解析:Review Loop通过"执行-评估-修正"的闭环机制,对不合格的输出进行重做,从而保证质量。

5. B - 生成摘要并存入Milvus

解析:当缓冲区达到阈值时,会触发归档流程:生成对话摘要、向量化、存入Milvus长期存储。

6. C - 实时搜索

解析:做梦服务主要负责记忆整理(聚类、去重、提取洞察、矛盾修正、归档),不负责实时搜索。

7. B - 实现并行执行

解析asyncio.gather 可以同时执行多个异步任务,提高执行效率。

8. B - 从情景记忆中提取

解析:语义记忆是通过LLM从多条情景记忆中抽象提取出的高层次知识。

9. B - 质量审核员

解析:Critic Agent负责对其他Agent的输出进行质量评估和审核。

10. D - 临时记忆

解析:记忆分层架构包括:短期记忆、情景记忆、语义记忆三层,没有"临时记忆"这个概念。


第二部分:判断题答案

1. 错误

解析:多智能体系统通过专业分工、并行执行和质量把控,更适合处理复杂任务。单体Agent容易出现Context爆炸和注意力分散问题。

2. 错误

解析:SOP必须是DAG(有向无环图),不能有循环依赖,否则会导致死锁。

3. 错误

解析:短期记忆存储在内存缓冲区(Buffer)或Redis中,不是Milvus。Milvus存储的是长期记忆(情景记忆和语义记忆)。

4. 错误

解析:做梦服务应该在系统空闲时(如凌晨)执行,避免影响正常业务。

5. 正确

解析:记忆压缩通过摘要生成等方式减少上下文长度,从而降低token消耗。

6. 错误

解析:无依赖关系的Agent可以并行执行,使用asyncio.gather提高效率。

7. 错误

解析:情景记忆存储的是具体事件(Who, When, What),语义记忆才存储抽象知识和经验法则。

8. 正确

解析:Review Loop机制允许Critic Agent审核输出,对不合格的结果打回重做。

9. 错误

解析:Milvus是向量数据库,不是关系型数据库。

10. 正确

解析:混合检索结合了向量相似度搜索和关键词匹配,提高检索准确性。


第三部分:填空题答案

1.

  • Researcher(研究员)
  • Analyst(分析师)
  • Critic(审核员)

2.

  • 情景记忆(Episodic Memory)
  • 语义记忆(Semantic Memory)

3.

  • Standard Operating Procedure(标准作业程序)
  • 执行顺序

4.

  • 去重(或:删除重复)
  • 矛盾修正(或:解决矛盾)

5.

  • asyncio.gather

第四部分:简答题答案

1. 多智能体系统相比单体Agent的优势

答案要点

  1. 专业分工:每个Agent专注于特定领域,提高专业性和准确性

    • 例如:Researcher专注搜索,Analyst专注分析,各司其职
  2. 并行执行:无依赖的任务可以同时执行,提高效率

    • 使用asyncio.gather实现真正的并行
  3. 质量把控:通过Review Loop机制确保输出质量

    • Critic Agent审核,不合格可以重做
  4. 可扩展性:易于添加新的专业Agent

    • 通过Agent注册机制动态扩展
  5. 避免Context爆炸:每个Agent维护独立的上下文

    • 不会出现单体Agent的注意力分散问题

评分标准:列举3点及以上,每点解释清楚即可得满分。


2. 记忆管道的工作流程

答案要点

存储流程

  1. 用户输入进入短期缓冲区(Buffer)
  2. 当缓冲区达到阈值(如8轮对话)时触发归档
  3. 生成对话摘要,使用LLM压缩关键信息
  4. 对摘要进行向量化(Embedding)
  5. 存入Milvus向量数据库作为情景记忆

检索流程

  1. 接收查询请求
  2. 提取查询关键词
  3. 对查询进行向量化
  4. 在Milvus中执行混合检索(向量相似度 + 关键词匹配)
  5. 返回相关的长期记忆 + 短期缓冲区内容

压缩流程

  1. 收集短期记忆和检索到的长期记忆
  2. 如果上下文过长(>1000字符)
  3. 使用LLM生成压缩摘要
  4. 保留与当前查询最相关的信息
  5. 返回压缩后的上下文(减少token消耗)

评分标准:三个环节都解释清楚,流程完整即可得满分。


3. Review Loop机制

答案要点

定义: Review Loop是一种"执行-评估-修正"的闭环质量控制机制。

工作流程

  1. 执行阶段:Agent(如Researcher或Analyst)执行任务
  2. 评估阶段:Critic Agent审核输出结果
    • 对研究内容:检查信源可靠性、信息完整性
    • 对分析代码:检查语法正确性、逻辑合理性
  3. 决策阶段:Critic给出审核结果
    • PASS:通过,进入下一环节
    • REJECT:拒绝,需要重做
    • REVISION:需要修订,提供改进建议
  4. 修正阶段:如果未通过,将反馈注入上下文,重新执行

质量保证机制

  • 多维度评分(准确性、完整性、清晰度)
  • 提供具体的问题列表和改进建议
  • 设置最大重试次数(如2次),避免无限循环
  • 每次重做都会参考上次的反馈

评分标准:解释清楚定义、流程和质量保证机制即可得满分。


第五部分:代码分析题答案

1. 这段代码实现了什么功能?(3分)

答案: 这段代码实现了基于DAG的SOP任务流执行引擎。它按照拓扑排序的方式执行SOP中的所有节点,确保每个节点在其依赖节点完成后才执行。

关键特性

  • 自动识别无依赖的节点
  • 并行执行所有就绪节点
  • 检测循环依赖

2. ready 列表中包含的是什么类型的节点?(2分)

答案ready 列表包含的是所有依赖已满足的节点,即:

  • 该节点的所有依赖节点都已经执行完成(在executed集合中)
  • 该节点本身还未执行(在pending字典中)

这些节点可以立即执行,不需要等待其他节点。


3. 为什么使用 asyncio.gather 而不是循环调用?(3分)

答案: 使用asyncio.gather的原因:

  1. 真正的并行执行

    • asyncio.gather可以同时执行多个异步任务
    • 循环调用是串行执行,效率低
  2. 性能优势

    1
    2
    3
    4
    5
    6
    
    # 串行:总耗时 = t1 + t2 + t3
    for node in ready:
        await execute_node(node)
    
    # 并行:总耗时 = max(t1, t2, t3)
    await asyncio.gather(*[execute_node(n) for n in ready])
    
  3. 充分利用资源

    • 多个Agent可以同时调用API
    • 等待IO时不会阻塞其他任务

4. 如果SOP中存在循环依赖,会发生什么?(2分)

答案: 如果存在循环依赖,会抛出RuntimeError("检测到循环依赖")异常。

原因

  • 当存在循环依赖时,所有剩余节点的依赖都无法满足
  • ready列表为空,但pending字典不为空
  • 触发if not ready条件,抛出异常

示例

1
2
A依赖B → B依赖C → C依赖A  # 形成环
→ 无法找到任何就绪节点 → 抛出异常

附加题答案(选做)

内容创作SOP设计

SOP定义

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
  "name": "内容创作SOP",
  "description": "从研究到发布的完整内容创作流程",
  "nodes": [
    {
      "id": "research",
      "name": "主题研究",
      "agent_type": "researcher",
      "task_template": "深度研究主题:{{input}},收集相关资料、数据和案例",
      "dependencies": [],
      "review_required": true
    },
    {
      "id": "outline",
      "name": "大纲生成",
      "agent_type": "analyst",
      "task_template": "基于研究结果生成文章大纲:{{results.research}}",
      "dependencies": ["research"],
      "review_required": true
    },
    {
      "id": "data_analysis",
      "name": "数据分析",
      "agent_type": "analyst",
      "task_template": "对研究数据进行分析并生成可视化图表",
      "dependencies": ["research"],
      "review_required": true
    },
    {
      "id": "content_draft",
      "name": "内容撰写",
      "agent_type": "researcher",
      "task_template": "根据大纲和数据分析撰写文章:{{results.outline}}",
      "dependencies": ["outline", "data_analysis"],
      "review_required": true
    },
    {
      "id": "final_review",
      "name": "最终审核",
      "agent_type": "critic",
      "task_template": "审核文章质量、数据准确性和逻辑完整性",
      "dependencies": ["content_draft"],
      "review_required": false
    }
  ],
  "final_output_node": "final_review"
}

DAG流程图

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
                    research (研究)
                    /              \
                   /                \
            outline (大纲)      data_analysis (数据分析)
                   \                /
                    \              /
                  content_draft (撰写)
                         |
                         |
                  final_review (审核)

节点说明

  1. research节点

    • Agent:Researcher
    • 任务:收集主题相关资料
    • 依赖:无
    • 输出:研究报告
  2. outline节点

    • Agent:Analyst
    • 任务:生成文章大纲
    • 依赖:research
    • 输出:结构化大纲
  3. data_analysis节点

    • Agent:Analyst
    • 任务:数据分析和可视化
    • 依赖:research
    • 输出:图表和分析结果
  4. content_draft节点

    • Agent:Researcher
    • 任务:撰写文章内容
    • 依赖:outline + data_analysis
    • 输出:文章草稿
  5. final_review节点

    • Agent:Critic
    • 任务:质量审核
    • 依赖:content_draft
    • 输出:最终文章

并行执行优化

  • outline和data_analysis可以并行执行(都只依赖research)
  • 提高整体执行效率

评分标准

  • 节点定义清晰(3分)
  • 依赖关系合理(3分)
  • Agent分配恰当(2分)
  • 流程图正确(2分)

💡 学习建议:对照答案检查自己的理解,重点关注错误的题目,回到笔记中复习相关知识点。

📝 答案日期:2026-03-26