Whisper-stark
|
de6ef7134d
|
fix(grok): sanitize Codex Responses requests
|
2026-08-27 19:24:50 +08:00 |
|
IanShaw
|
b2b2adcf8d
|
修复 PR 5888 审查发现的兼容性与竞态问题
|
2026-08-20 21:06:48 -07:00 |
|
IanShaw
|
ccb20ace88
|
修复 OpenAI 兼容性 PR 的 CI 回归
|
2026-08-20 00:19:59 -07:00 |
|
IanShaw
|
acce29af27
|
补齐 OpenAI 与 Grok 协议兼容处理
|
2026-08-19 23:13:29 -07:00 |
|
IanShaw
|
cf3577a3c5
|
fix(openai): harden Responses compatibility
|
2026-08-19 09:03:37 -07:00 |
|
li
|
379db19141
|
perf(openai): 工具 Schema 净化改为单次拼接,去掉逐路径全量重写
sjson.SetBytes 在 opts 为 nil 时 optimistic=false、inplace=false,每次调用都要
重扫整个文档并新建缓冲区拷贝,命中 N 处就是 N 次全量拷贝。/v1/responses 的 body
上限是 gateway.max_body_size(默认 256MB),构造请求能塞进百万级命中,会被放大
成 TB 级 memcpy。
改为收集 gjson 给出的绝对字节偏移后一次性拼接:全程一次分配、一次拷贝。
偏移不可用(Index 为 0)或与 body 对不上时跳过该处,而不是猜位置拼出损坏的 JSON。
实测(2000 处命中):旧写法 17740 次分配,新写法 18 次。
|
2026-08-07 20:37:44 +08:00 |
|
li
|
f3c94d2099
|
fix(openai): 修正 Responses 工具 Schema 中显式为 null 的 parameters.type
Codex Desktop 内置的 automation_update 工具会带 parameters.type = null,
OpenAI 直接回 400 invalid_function_parameters,而网关把该状态归一成可重试的
502 upstream_error。该工具定义还会沉进多轮会话历史,之后每一轮都继续失败,
同一份坏 Schema 在账号池里被反复重放。
在 OpenAIGatewayService.Forward 分流到 passthrough / Codex transform /
原生 ChatCompletions 之前,统一把显式为 null 的 parameters.type 补成
"object",覆盖顶层 tools[] 与多轮历史里 input[].tools[] 的嵌套工具定义。
只修正显式 null:缺失 type 的 Schema 本身合法,补写会收窄客户端语义,
因此保持原样。
Fixes #5364
|
2026-08-07 20:30:44 +08:00 |
|