切换深色模式
超时、流与工具调用排查
首字超时
首字超时表示请求已经建立,但在客户端或网关等待期限内没有收到首个可输出事件。
- 把请求改为非流式纯文本,判断模型是否能完成。
- 缩短上下文,移除图片、工具和复杂 schema。
- 检查客户端自己的 timeout,不只检查网络代理。
- 换同分组另一个基础模型做对照。
- 保留总耗时、首字时间和请求 ID。
不要仅提高到无限 timeout;这会掩盖模型容量、请求过大或错误重试。
流中断
记录最后一个完整 SSE 事件:
- Chat 正常应看到
[DONE]。 - Responses 应看到协议终止事件。
- Anthropic 应看到
message_stop。 - Google 流应正常结束数据事件。
若客户端报 JSON 解析失败,检查它是否把多行 SSE、keepalive 注释或另一协议终止符当成普通 JSON。
空响应
空响应可能来自客户端没有读取正确文本字段、流在首个内容前中断、模型静默拒绝或上游返回了合法但无文本的工具调用。
- 保存原始响应,不只看客户端 UI。
- 检查是否只有
tool_calls、reasoning 或图片内容。 - 用 curl 做非流式纯文本对照。
- 确认模型输出预算不为零或过小。
工具调用格式错误
- 验证工具 schema 是有效 JSON Schema。
- 参数必须是合法 JSON,不要二次转义。
- 第二轮工具结果沿用原
tool_call_id/ 调用 ID。 - 不要在两轮之间切换 Key、模型或 provider。
- Google
functionResponse.response使用对象;Anthropictool_result.content应为文本或规范内容块。
客户端解析失败
如果 curl 原始响应正常但客户端失败:
- 升级到教程标明或更高的稳定版本。
- 确认 API mode 与实际端点一致。
- 关闭客户端“兼容修复”或第三方代理做对照。
- 先禁用流式,再逐项恢复工具、reasoning 和结构化输出。
提交支持时附上脱敏的原始最后事件和客户端报错,不要只发“卡住了”。
