Claude Code 学习站

CCA-F 练习题库· Context Management & Reliability

对于一个生产环境的 agent,选出所有把 Claude 的 stop_reason 与恰当的处理或升级策略正确配对的选项。

  1. Arefusal → 检查 stop_details 中的策略类别,并考虑在备用模型上重试。
  2. Bpause_turn → 把 assistant 返回的内容发回去,让 Claude 继续那个已达到迭代上限的服务端工具循环。
  3. Cmodel_context_window_exceeded → 把响应视为被截断,因为生成是受上下文窗口而非 max_tokens 限制的。
  4. Dtool_use → 这是一个 HTTP 错误,所以应当作为异常捕获,并用指数退避重试该请求。
  5. Eend_turn → 一律视为失败并升级给人工审核。

正确答案:A B C(多选)

解析

Claude 的 stop reason 属于成功(HTTP 200)的完成结果,每一种都有既定的处理路径——它们与 HTTP 4xx/5xx 错误在类别上完全不同,后者会以 SDK 异常的形式暴露并单独处理。

  • A正确——refusal 表示安全分类器或模型拒绝了;stop_details 只在 refusal 时才会被填充,携带策略 category(例如 cyber/bio/null)以及一段说明,而在备用模型上重试(服务端 fallbacks,目标 claude-opus-4-8)是文档推荐的应对方式,所以检查 stop_details 并考虑 fallback 是合理的(按 stop_reason 分支,只在需要类别时读取 stop_details)。
  • B正确——当服务端工具的采样循环达到默认的 10 次迭代上限时,响应会以 pause_turn 停止;你把 user message 连同 assistant 返回的内容重新发送,服务端就会自动继续。
  • C正确——model_context_window_exceeded(4.5+)表示生成是被上下文窗口切断的,而不是被请求的 max_tokens 上限切断,应当把它当作输入体量导致的截断来处理,与 max_tokens 区分开。
  • D错——tool_use 是一个正常的成功 stop reason,表示你应当执行被请求的工具并返回 tool_result,而不是一个需要退避重试的 HTTP 错误。
  • E错——end_turn 是普通的、成功的完成,所以一律把它升级给人工是不正确的。

延伸阅读

本题为本站自有原创练习题,非任何官方考试内容;解析对照 Anthropic 公开文档撰写, 如与最新文档不符请以官方为准。想在限时环境下检验水平,可参加 模拟考(题目与本页题库不重叠)。