finish_reason
LLM API响应中标识模型停止生成原因的字段,常见取值包括自然结束(stop/end_turn)、长度截断(length/max_tokens)、内容过滤(content_filter/SAFETY)等,用于区分模型是否正常完成输出
核心事实
时间轴 (近 90 天)
停止原因(finish_reason/stop_reason)是模型响应元数据字段,标明生成为何结束:正常结束、达到max_tokens上限、触发内容过滤或工具调用请求等
若 finish_reason 为 length 而客户端仍把内容当作完整答案,则属于 truncation_ambiguity 失败分类。
检查响应完整性应同时验证 finish_reason 为 stop 以及关键数据结构符合预期(如 items 为非空列表)。
finish_reason 字段常见取值包括 stop(自然结束)和 length(达到最大 token 数被截断)。
生产环境的路由逻辑不应只看 HTTP 状态码,而应同时检查 finish_reason 与 content 是否非空,并把 finish_reason 为 length 且 content 为空视为硬失败而非可解析结果。
即使厂商提供 OpenAI 兼容端点,模型名、tool/function calling 字段、流式 chunk 细节和错误对象结构往往存在差异,因此需在兼容层之上维护按供应商的适配配置。
流式输出配合增量校验可在检测到 finish_reason: length 时立即触发告警或重试,而不必等整个响应返回
finish_reason 为 length 或 MAX_TOKENS 类的值意味着模型被强制打断,而非主动收尾
作者 Serguey Asael Shinder 建议在每一次 LLM 调用后读取停止原因,就像读取 HTTP 状态码一样
应将 finish_reason 与调用成本记录在一起并绘制在同一张监控图上以提升可观测性
还有 3 条时间轴事件
全部知识事实 (13)
finish_reason 为 length 或 MAX_TOKENS 类的值意味着模型被强制打断,而非主动收尾
65%已验证OpenAI的API使用finish_reason字段,取值包括stop、length、content_filter等
65%待验证停止原因(finish_reason/stop_reason)是模型响应元数据字段,标明生成为何结束:正常结束、达到max_tokens上限、触发内容过滤或工具调用请求等
50%待验证若 finish_reason 为 length 而客户端仍把内容当作完整答案,则属于 truncation_ambiguity 失败分类。
50%待验证检查响应完整性应同时验证 finish_reason 为 stop 以及关键数据结构符合预期(如 items 为非空列表)。
50%待验证finish_reason 字段常见取值包括 stop(自然结束)和 length(达到最大 token 数被截断)。
50%待验证生产环境的路由逻辑不应只看 HTTP 状态码,而应同时检查 finish_reason 与 content 是否非空,并把 finish_reason 为 length 且 content 为空视为硬失败而非可解析结果。
50%待验证即使厂商提供 OpenAI 兼容端点,模型名、tool/function calling 字段、流式 chunk 细节和错误对象结构往往存在差异,因此需在兼容层之上维护按供应商的适配配置。
50%待验证流式输出配合增量校验可在检测到 finish_reason: length 时立即触发告警或重试,而不必等整个响应返回
50%待验证作者 Serguey Asael Shinder 建议在每一次 LLM 调用后读取停止原因,就像读取 HTTP 状态码一样
50%待验证应将 finish_reason 与调用成本记录在一起并绘制在同一张监控图上以提升可观测性
50%待验证应只缓存finish_reason为stop或tool_calls的响应,被length截断或出错的响应不应缓存
50%待验证大语言模型 API 返回响应时通常附带 finish_reason 字段,常见取值包括 stop、length、tool_calls
50%