Skip to content

修复聊天请求参数校验与错误状态码 - #2

Merged
zaneWWWWWW merged 1 commit into
mainfrom
fix/validate-chat-request-parameters
Sep 16, 2026
Merged

zaneWWWWWW merged 1 commit into
mainfrom
fix/validate-chat-request-parameters

Conversation

@zaneWWWWWW

Copy link
Copy Markdown
Owner

⚠️ 提交说明 / PR Notice

本次由 Codex 协助实现并验证,修复来自用户提供的线上复现:max_tokens: -1 被错误返回为 500,temperature: 10 在 GPT-5 适配前未被拒绝。

📝 变更描述 / Description

请求解析或参数校验失败时,控制器现在返回 HTTP 400 并停止重试;客户端只收到 invalid request,不再得到 Go 结构体和解析细节。保留已有的大请求体 413 响应。

OpenAI 兼容聊天请求会在模型适配前校验 temperature。未提供参数、0 和 2 保持有效,低于 0、超过 2、NaN 和无穷值会被拒绝。这样 GPT-5 适配器删除不支持字段前,非法值已经返回 400。

🚀 变更类型 / Type of change

  • 🐛 Bug 修复 (Bug fix)
  • ✨ 新功能 (New feature)
  • ⚡ 性能优化 / 重构 (Refactor)
  • 📝 文档更新 (Documentation)

🔗 关联任务 / Related Issue

用户报告的线上请求参数校验问题,无独立 Issue。

✅ 提交前检查项 / Checklist

  • 人工确认: 描述由 AI 整理,不声明已完成人工审核。
  • 非重复提交: 已核对当前代码和开放 PR,无同一修复。
  • Bug fix 说明: 无独立 Issue;触发条件、根因和修复范围已在上文说明。
  • 变更理解: 已复现 GPT-5 适配器删除 temperature 的路径。
  • 范围聚焦: 仅改动请求校验、错误状态码和回归测试。
  • 本地验证: 已运行相关测试。
  • 安全合规: 无敏感凭据。

📸 运行证明 / Proof of Work

go test ./relay/helper -run TestMaxTokensBounds -count=1 通过。

go test ./controller -run TestRelayInvalidRequestReturnsBadRequestBeforeUpstream -count=1 通过。

go test ./relay/channel/openai -count=1 通过。

控制器回归测试验证 max_tokens: -1temperature: 10 都返回 400、包含 invalid_request,且响应不泄露 GeneralOpenAIRequest。该路径在生成渠道和预扣费信息之前返回,因而不会调用上游。

风险:仅对 OpenAI 兼容文本请求的 temperature 应用 OpenAI 范围 [0, 2],未改变其它协议或模型适配器对合法参数的兼容行为。

@zaneWWWWWW
zaneWWWWWW merged commit 5b06eb8 into main Sep 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant