面试怎么讲清:Agent Loop 与 MCP Tools
直接答案:基于 OpenAI Agents SDK 与 MCP Tools 规范整理的口述骨架:循环停点、原语、tools/list·call、人机确认与错误分层。
核心要点
- Agent loop:调模型 → 工具/handoff → 终答或触顶
- 审批是暂停同轮,不是新开一轮
- MCP:tools/list 发现,tools/call 调用,annotations 默认不可信
- 协议错误 vs isError 业务错误要分开讲
一句话
Agent 跑起来 = 模型决策 + 运行时循环执行工具 + 结果回填,直到终答、交接或触顶;MCP 则是把外部能力用统一的 tools/list / tools/call 暴露给模型。
Agent Loop(按 OpenAI Agents SDK 文档)
官方 Running agents 把一次 run 写成循环,直到真正停点:
- 用准备好的输入调用当前 agent 的模型
- 检查模型输出
- 若有 tool calls → 执行工具,继续循环
- 若 handoff 给另一个专家 → 切换 agent,继续
- 若已是 final answer 且无更多工具活 → 返回结果
工具、handoff、审批、流式输出都挂在这个循环上,而不是另起一套。
面试加分点:说清 审批是暂停同一轮,不是新开一轮——文档强调 approvals 应 resume 同一 state,否则 turn 计数与会话 ID 会乱。
SDK 原语(按 Agents SDK 首页)
OpenAI Agents SDK 刻意只保留少量概念:
- Agents:带 instructions 与 tools 的 LLM
- Agents as tools / Handoffs:委托给其他 agent
- Guardrails:输入输出校验,可与执行并行,失败可 fail fast
- 另有 Sessions、Human-in-the-loop、Tracing,以及 MCP server tool calling(远程 MCP 工具可与 function tools 并列挂上)
对比 Responses API:自己控循环、短链路回复 → 直接用 Responses;要运行时管 turns / tools / guardrails / handoffs / sessions → 用 SDK。
MCP Tools(按规范)
- 服务器声明
capabilities.tools(可带listChanged) - 客户端
tools/list发现;tools/call调用 - 每个工具:
name、description、inputSchema(JSON Schema);结果走content,执行失败用isError: true(给模型可纠错反馈),协议层错误走 JSON-RPC error - 规范强调:人应能拒绝工具调用;UI 要标明暴露了哪些工具;敏感操作应确认
- 工具注解(annotations)默认 不可信,除非来自可信服务器
口述时别把 MCP 说成「又一个 Agent 框架」——它是 上下文与工具的互操作协议;Agent 框架负责 loop,MCP 负责把外部系统标准化成可发现工具。
常见追问与答法骨架
Q:Agent 和一次 Function Calling 有什么区别?
A:单次 FC 是一轮「模型要调工具 → 你回结果 → 再答」;Agent 是 多轮 loop,中间可多次工具、handoff、审批暂停,直到任务完成或触顶。
Q:怎么防无限循环?
A:max_turns / 预算、工具幂等、明确停条件、危险工具要人审;SDK 触顶会抛超限类错误。
Q:MCP 和 Hosted tools 怎么选?
A:平台内置能力用 hosted;要跨客户端复用、站长/自建能力用 MCP;同一 agent 里可以并列。
Q:错误怎么讲?
A:区分协议错误(未知工具、坏请求)与业务错误(isError);后者应回给模型让它改参重试。
你可以怎么练口述
30 秒版:
「我跑 agent 时,运行时负责循环:模型出 tool call 我就执行并回填,handoff 就换专家,出终答或触顶就停。外部系统尽量用 MCP 暴露 schema,危险写操作留人确认。」
来源
常见问答
Agent 和一次 Function Calling 有什么区别?
MCP 是不是又一个 Agent 框架?
相关条目
- Agent:Tool calling 怎么讲清
面试里讲 Tool calling:定义、选型、失败兜底、可观测,各用一两句能口述的骨架。