Skip to content

Fix MiniMax chat tool compatibility#77

Open
skyan wants to merge 5 commits into
ZhiYi-R:mainfrom
skyan:main
Open

Fix MiniMax chat tool compatibility#77
skyan wants to merge 5 commits into
ZhiYi-R:mainfrom
skyan:main

Conversation

@skyan

@skyan skyan commented Jun 5, 2026

Copy link
Copy Markdown

变更内容

对于MiniMax这样的大模型而言,有些API兼容性问题需要解决,否则codex无法使用:

  1. 将 Chat 函数工具中默认缺省的 parameters 补为 { "type": "object" },这样即使某些 provider 拒绝缺失 parameters,也仍然可以接受工具定义。
  2. 将 MiniMax 风格的 ... 内容拆分为 reasoning blocks,同时支持非流式和流式 Chat 响应,确保 Codex 看到的最终 output_text 保持干净。
  3. 在非流式以及已完成的流式 Responses 输出中,保留上游 Chat 模型名称。

MiniMax 当前在函数工具省略 parameters 时会拒绝请求,返回 invalid params, 400 (2013)。此外,它会把 reasoning 内容放在 标签中,并作为普通 Chat content 输出;如果不处理,这些内容会泄漏到 Codex 可见的输出文本中。

我也直接针对 /v1/chat/completions 验证了原始 MiniMax 的 stream=true + tools 请求;当前它会返回 HTTP 200,并通过流式 tool_calls delta 输出工具调用。因此,这个 PR 没有为该路径增加非流式 fallback。

验证

go test ./internal/protocol/chat ./internal/protocol/openai ./internal/service/server ./internal/config

原始 MiniMax 端点验证:

  • stream=true + tools 返回 HTTP 200,并输出了 tool_calls
  • 未显式设置 parameters 的 function tool 返回 HTTP 400,错误为 invalid params, 400 (2013)

通过临时本地实例验证 Moon Bridge:

  • 未显式设置 parameters 的 function tool 返回 HTTP 200,并生成了 function_call 参数 {}
  • 内容被作为 reasoning summary events 输出,而不是作为 output_text

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