diff --git a/crates/registry/src/presets.rs b/crates/registry/src/presets.rs index ce5f55f93..1cbfde51a 100644 --- a/crates/registry/src/presets.rs +++ b/crates/registry/src/presets.rs @@ -124,6 +124,34 @@ mod tests { minimax["modelCapabilities"][default_model]["context_window"].is_number(), "default model {default_model} 必须在 modelCapabilities 配 context_window" ); + // [parameter-refresh] MiniMax 提供 global (api.minimax.io) 与 China (api.minimaxi.com) + // 两套 OpenAI 兼容端点;默认走 China,global 作为 baseUrlOptions 备选暴露。 + let option_values: Vec<&str> = minimax["baseUrlOptions"] + .as_array() + .into_iter() + .flatten() + .filter_map(|o| o.get("value").and_then(|v| v.as_str())) + .collect(); + assert!( + option_values.contains(&"https://api.minimax.io/v1"), + "MiniMax preset 必须在 baseUrlOptions 暴露 global OpenAI 兼容端点 api.minimax.io/v1" + ); + assert!( + option_values.contains(&"https://api.minimaxi.com/v1"), + "MiniMax preset 必须在 baseUrlOptions 暴露 China OpenAI 兼容端点 api.minimaxi.com/v1" + ); + // [parameter-refresh] MiniMax-M3 接受 text/image/video 输入(原生多模态), + // 故显式标 supports_vision=true;M2.7 仅 text → false。 + assert_eq!( + minimax["modelCapabilities"]["MiniMax-M3"]["supports_vision"], + serde_json::Value::Bool(true), + "MiniMax-M3 支持 image/video 输入,modelCapabilities 必须显式 supports_vision=true" + ); + assert_eq!( + minimax["modelCapabilities"]["MiniMax-M2.7"]["supports_vision"], + serde_json::Value::Bool(false), + "MiniMax-M2.7 仅文本,modelCapabilities 必须显式 supports_vision=false" + ); } #[test] diff --git a/crates/registry/src/presets_data.json b/crates/registry/src/presets_data.json index 69d54eb03..f73c27bfb 100644 --- a/crates/registry/src/presets_data.json +++ b/crates/registry/src/presets_data.json @@ -340,15 +340,27 @@ "docsUrl": "https://platform.minimaxi.com/docs/api-reference/text/chat-completion", "authScheme": "bearer", "apiFormat": "openai_chat", + "baseUrlOptions": [ + { + "label": "Global (api.minimax.io)", + "value": "https://api.minimax.io/v1" + }, + { + "label": "China (api.minimaxi.com)", + "value": "https://api.minimaxi.com/v1" + } + ], "models": { "default": "MiniMax-M3" }, "modelCapabilities": { "MiniMax-M3": { - "context_window": 1000000 + "context_window": 1000000, + "supports_vision": true }, "MiniMax-M2.7": { - "context_window": 204800 + "context_window": 204800, + "supports_vision": false } }, "notices": [ @@ -359,6 +371,10 @@ { "type": "info", "text": "MiniMax chat completions API 当前不支持原生 web_search 工具(文档实证 2026-05-09)。如需联网搜索,推荐配 mcp_servers 使用 MCP 路径(参考 P5 namespace MCP 修复)。" + }, + { + "type": "info", + "text": "MiniMax 提供全球 (api.minimax.io) 与中国 (api.minimaxi.com) 两套 OpenAI 兼容端点,默认使用中国端点;需用全球端点时在 baseUrlOptions 切换。MiniMax-M3 支持 text/image/video 输入(supports_vision=true),MiniMax-M2.7 仅 text。" } ], "requestOptions": {}, diff --git a/tests/replay/fixtures/registry/builtin_presets.json b/tests/replay/fixtures/registry/builtin_presets.json index e52dd4a0f..baa0a2195 100644 --- a/tests/replay/fixtures/registry/builtin_presets.json +++ b/tests/replay/fixtures/registry/builtin_presets.json @@ -340,15 +340,27 @@ "docsUrl": "https://platform.minimaxi.com/docs/api-reference/text/chat-completion", "authScheme": "bearer", "apiFormat": "openai_chat", + "baseUrlOptions": [ + { + "label": "Global (api.minimax.io)", + "value": "https://api.minimax.io/v1" + }, + { + "label": "China (api.minimaxi.com)", + "value": "https://api.minimaxi.com/v1" + } + ], "models": { "default": "MiniMax-M3" }, "modelCapabilities": { "MiniMax-M3": { - "context_window": 1000000 + "context_window": 1000000, + "supports_vision": true }, "MiniMax-M2.7": { - "context_window": 204800 + "context_window": 204800, + "supports_vision": false } }, "notices": [ @@ -359,6 +371,10 @@ { "type": "info", "text": "MiniMax chat completions API 当前不支持原生 web_search 工具(文档实证 2026-05-09)。如需联网搜索,推荐配 mcp_servers 使用 MCP 路径(参考 P5 namespace MCP 修复)。" + }, + { + "type": "info", + "text": "MiniMax 提供全球 (api.minimax.io) 与中国 (api.minimaxi.com) 两套 OpenAI 兼容端点,默认使用中国端点;需用全球端点时在 baseUrlOptions 切换。MiniMax-M3 支持 text/image/video 输入(supports_vision=true),MiniMax-M2.7 仅 text。" } ], "requestOptions": {},