146 lines
7.1 KiB
Markdown
146 lines
7.1 KiB
Markdown
|
|
---
|
|||
|
|
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 工作流设计]]
|
|||
|
|
- [[上下文工程与记忆管理]]
|
|||
|
|
- [[沙箱权限治理]]
|