Files
autumn-recruitment/06.AI/agent-design/循环状态机在Agent中的应用_test.md
T

146 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: [test/review, ai, agent-design, react-loop]
create time: 2026-08-09 12:00
---
# 循环状态机在Agent中的应用 — 测试题
## 概述
本测试覆盖 ReAct 循环(思考→行动→观察)、自反思修正(Self-Reflection)、收敛条件设计以及与简单 Loop 的区别。共 10 道题目(6 选择 + 3 填空 + 1 简答)。
---
## 一、选择题(6道,由浅入深)
> **难度阶梯**: Q1-Q2 基础概念 → Q3-Q4 核心原理 → Q5-Q6 深入应用/边界场景
### Q1(基础)— 考察定义层面
ReAct 循环中的三个核心步骤依次是:
A. Plan → Execute → Report
B. Reason → Act → Observe
C. Think → Do → Check
D. Search → Read → Answer
### Q2(基础)→
以下关于 Self-Reflection 的描述哪个是正确的?
A. 它是一个可有可无的附加功能
B. 它在每次 Observe 之后额外增加自我评估步骤,判断当前进度是否足以完成任务
C. 它只在所有迭代结束后才执行一次
D. 它替代了 Reason 步骤
### Q3(进阶)— 核心原理
原文提到的经验表明,ReAct 的最大迭代次数不建议超过多少轮?为什么?
A. 3 轮——太慢了
B. 5 轮——没有证据支持
C. 8 轮——超过后错误率开始反弹,因为早期错误累积进历史污染后续推理
D. 20 轮——越多越准确
### Q4(进阶)— 比较/辨析
ReAct 状态机与简单 while Loop 的核心区别不包括以下哪项?
A. ReAct 有 LLM 推理 + 工具反馈做决策依据,简单 Loop 只有固定规则
B. ReAct 携带完整历史上下文,简单 Loop 无状态感知
C. ReAct 需要数据库存储每步结果,简单 Loop 不需要
D. ReAct 每轮可换策略,简单 Loop 不支持
### Q5(深入)— 场景推理
一个 Agent 正在执行搜索任务获取「Go 1.21 GC 改进」的信息。三轮后的状态是:第一轮搜索返回摘要,第二轮 fetch URL 得到详情,第三轮综合信息准备生成答案。这体现了哪种模式?
A. Supervisor 分发
B. Planner 静态规划
C. ReAct 多轮循环
D. Critic 审查
### Q6(深入)— 源码级/边界场景
以下哪种防无限循环的技巧**不**是原文中提到的?
A. Token 用量监控——单轮突增 3 倍则强制中断
B. 去重检查——相同 Action 和结果连续出现两次说明卡死
C. Entropy 监测——计算 Thought 文本的 perplexity
D. 动态学习——根据每轮表现自动调整 LLM 温度参数
---
## 二、填空题(3道)
### F1 — 填空1
收敛条件包括五种:最大迭代次数(典型值 _____~_____ 次)、连续无改善(N=3)、置信度阈值(通常 0.8)、时间预算(通常 30s)以及 Token 预算。这是防止无限循环的最重要机制。
> **提示**: 第一个空填最小值,第二个空填最大值。
### F2 — 填空2
简单的 while loop 只能让 Agent "做一件事直到成功",缺乏对执行过程的结构性理解。基于状态机的循环——特别是 ReAct 模式——为 Agent 引入了可推理、可观测、可终止的_____框架。这是构建自主智能体的基础架构模式。
> **提示**: 回忆原文概述部分的原词。
### F3 — 填空3
ThumbUP 项目中缓存策略选择是一个典型的 ReAct 决策过程:Thought(单一缓存有风险) → Action(调研业界方案) → Observation(二级缓存+HeavyKeeper是主流) → Thought(验证一致性开销) → Action(模拟测试) → Observation(延迟增加15ms) → Reflection(利大于弊)。这个过程中每一步都依赖上一步的_____做出调整,而非预先写死的流程分支。
> **提示**: 回想 ReAct 的本质特征——不是 pre-defined,而是 reactive to what you just learned.
---
## 三、简答题(1道)
### S1
面试官问:"如果一个 Agent 在执行 ReAct 循环时陷入了死循环——同一组 Thought-Action-Observation 反复出现,该怎么办?请设计一套完整的防无限循环机制。"
> **答题框架提示**:
> 1. 硬性约束(不可绕过的上限)
> 2. 软性检测(基于语义的智能保护)
> 3. 提前退出条件
> 4. 最佳尝试兜底
---
## 参考答案与解析
### 选择题答案
| 题号 | 正确答案 | 解析 |
|------|---------|------|
| Q1 | B | ReAct = Reasoning + Acting,核心三步:思考分析当前局面 → 行动调用工具或生成答案 → 观察获取工具返回结果。然后根据评估决定是继续还是结束。 |
| Q2 | B | Self-Reflection 是在每次 Observe 后额外增加的一步自我评估,判断进展、不足和下一步策略。它不是可选的——没有反思的循环就是蛮力,有反思才是智能。 |
| Q3 | C | 原文警告:超过 8 轮后错误率开始反弹。因为早期的错误被不断累积进历史上下文,污染了后续推理。8-10 轮是经过实验验证的黄金区间。 |
| Q4 | C | 原文对比表中列出的五个区别是:决策依据、状态感知、策略调整、终止条件、可解释性。数据库存储不是区分标准——两者都可以用内存或持久化存储。 |
| Q5 | C | 这是一个典型的 ReAct 多轮展开:每一轮都是 Thought → Action → Observation 的循环,每步依赖上一步的观察结果做出调整。 |
| Q6 | D | 原文提到的四种技巧是:① Token 用量监控;② 去重检查;③ Entropy/perplexity 监测;④ 人工介入网关。动态调整 LLM 温度参数不在其中。 |
### 填空题答案
| 题号 | 答案 | 解析 |
|------|------|------|
| F1 | `5`;`10` | 最大迭代次数 5-10 是最常用的范围。低于 5 可能不够完成复杂任务,超过 10 错误率开始反弹。配合连续无改善(N=3)和置信度(0.8)双重判断更可靠。 |
| F2 | `执行` | 原文原话:"为 Agent 引入了可推理、可观测、可终止的执行框架。这是构建自主智能体的基础架构模式。" |
| F3 | `观察结果`(或"Observation") | ReAct 的核心价值在于每一步不是预先写死的流程分支,而是 reactive 到上一步的实际观察结果,据此调整策略。 |
### 简答题参考答案
S1:**参考答案要点**:
1. **硬性约束**:设置 max_iterations(如 8 次)作为不可绕过的上限。同时设时间预算(30s)和 token 预算,任一超限立即终止。
2. **去重检测**:如果当前 Step 的 Action 和前两轮完全相同且结果也一样,说明陷入卡死状态。此时强制切换工具或重试不同的 Action。
3. **Token 突增检测**:单轮 token 消耗突增 3 倍说明 LLM 可能陷入冗长输出循环,强制中断当前轮次。
4. **提前退出**:当 confidence ≥ 0.8 或连续无改善达到限制时提前退出,不必等到 max_iterations。
5. **兜底策略**:即使未达最优但已达上限,也返回 history 中 bestOf(history) 的最佳尝试结果,而不是返回空或错误。
6. **人工介入**:超过一定复杂度(如 iteration > 6)自动请求 human-in-the-loop 确认下一步方向。
**评分标准**:答出任意 2 个要点即可得满分;完全正确需覆盖全部要点。
## 关联笔记
- [[Eino DAG 工作流设计]]
- [[上下文工程与记忆管理]]
- [[沙箱权限治理]]