第23章 · AI Agent · 阶段测试题答案¶
配套测试题:
zh/教辅/阶段测试题/第23章.md
一 · 单选题 (8 题)¶
1.1 A - ReAct = Reason + Act 交替。
1.2 B - ToT 用树结构组织推理。
1.3 C - MCP 是 Anthropic 2024-11 发布。
1.4 B - MCP 三大组件: Resources / Tools / Prompts。
1.5 B - A2A 是 Google 2025 发布。
1.6 B - MemGPT 借鉴 OS 虚拟内存(主存 + 虚存)。
1.7 B - Reflexion 把反思文本存长期记忆, 下次尝试调用。
1.8 B - Voyager 在 Minecraft 实验。
二 · 多选题 (4 题)¶
2.1 ABCDE - 5 大记忆类型全部正确。
2.2 AB - MCP 跨厂商, Function Calling 是 OpenAI 专有。
2.3 ABCDE - 全部 5 大自进化范式。
2.4 ABCD - 全部 4 大 Computer Use 评测。
三 · 简答题 (5 题)¶
3.1 ReAct / Reflexion / Voyager 区别¶
| 范式 | 核心机制 | 适用 |
|---|---|---|
| ReAct | Thought + Action 交替, 单次会话 | 简单工具调用 |
| Reflexion | 失败反思 + 长期记忆, 多轮 | 编程 / 调试 |
| Voyager | 技能库 + 自动课程, 长期 | 开放游戏 / 探索 |
3.2 MCP 设计动机¶
动机: LLM 应用工具接入重复劳动, 跨厂商标准缺失。
组件: Resources (数据) + Tools (函数) + Prompts (模板)。
优势: - 一次开发跨 Claude / Gemini / 本地 - 工具市场 (1000+ MCP Server) - 标准化错误处理
3.3 MemGPT 虚拟内存¶
类比: LLM 上下文 = 主存, 外部存储 = 虚存。
机制: - LLM 通过系统指令主动管理 - Recall: 把虚存相关数据调入主存 - Archival: 把主存数据持久化到虚存
效果: 突破 Context Window 限制, "无限长期记忆"。
3.4 Computer Use vs Operator v2¶
| 维度 | Anthropic Computer Use | OpenAI Operator v2 |
|---|---|---|
| 发布 | 2024-10 | 2025-09 |
| 范围 | macOS/Linux 桌面 | 全 OS + 浏览器 + 移动 |
| 模型 | Claude 3.5 Sonnet | GPT-5.6 |
| Context | 200K | 1M |
| 安全 | 沙盒 | 沙盒 + 权限 |
共同点: 都用视觉 + 工具调用, 都强调安全沙盒。
3.5 企业 RAG Agent 架构¶
Loader (PDF / Confluence)
↓
Splitter (512 token, 重叠 50)
↓
Embedder (BGE-large-zh)
↓
Vector DB (Milvus) + BM25 → Hybrid
↓
Retriever → Re-ranker (BGE-reranker)
↓
Generator (Claude 4.5 + System Prompt "引用源")
↓
Mem0 (用户偏好)
↓
Self-RAG (判断是否重检索)
↓
RAGAS 评估 (Faithfulness / Relevance / Citation)
四 · 编程题 (2 题)¶
4.1 ReAct Agent¶
class ReActAgent:
def __init__(self, llm, tools):
self.llm = llm
self.tools = tools
self.history = []
def run(self, task, max_steps=10):
self.history = [{"role": "user", "content": task}]
for step in range(max_steps):
prompt = f"Task: {task}\nHistory: {self.history}\nNext action (JSON):"
response = self.llm(prompt)
action = parse_action(response)
if action["tool"] == "finish":
return action["args"]["answer"]
result = self.tools[action["tool"]](**action["args"])
self.history.append({"action": action, "result": result})
return "Max steps exceeded"
4.2 MCP Server¶
from mcp.server import Server
from mcp.types import Tool, TextContent
server = Server("company-tools")
@server.list_tools()
async def list_tools():
return [
Tool(name="search_db", description="搜索企业数据库",
inputSchema={"type": "object", "properties": {"query": {"type": "string"}}}),
Tool(name="send_email", description="发送邮件",
inputSchema={"type": "object", "properties": {"to": {"type": "string"}, "subject": {"type": "string"}, "body": {"type": "string"}}}),
]
@server.call_tool()
async def call_tool(name, arguments):
if name == "search_db":
result = db.search(arguments["query"])
elif name == "send_email":
result = email.send(arguments["to"], arguments["subject"], arguments["body"])
return [TextContent(type="text", text=str(result))]
五 · 评分标准¶
| 题号 | 分值 |
|---|---|
| 单选 ×8 | 32 |
| 多选 ×4 | 20 |
| 简答 ×5 | 30 |
| 编程 ×2 | 18 |
六 · 易错点¶
- MCP ≠ Function Calling: 前者是标准协议, 后者是 OpenAI 专有 API
- MemGPT = 虚拟内存: 类比 OS, 不是字面"GPT 增强"
- Reflexion ≠ Re-prompt: 是反思 + 长期记忆
- Computer Use ≠ RPA: AI 推理 vs 固定脚本
- Voyager 限于 Minecraft: 不是通用 Agent