diff --git a/config/config.example.json b/config/config.example.json index b259df6f6..d65a7b300 100644 --- a/config/config.example.json +++ b/config/config.example.json @@ -51,6 +51,12 @@ "model": "openai/gpt-5.4", "api_key": "sk-key2", "api_base": "https://api2.example.com/v1" + }, + { + "model_name": "MiniMax-M2.5", + "model": "modelscope/MiniMax/MiniMax-M2.5", + "api_key": "sk-key3", + "api_base": "https://api-inference.modelscope.cn/v1" } ], "channels": { diff --git a/pkg/providers/factory_provider.go b/pkg/providers/factory_provider.go index 9749e7a15..7bf4ce8e8 100644 --- a/pkg/providers/factory_provider.go +++ b/pkg/providers/factory_provider.go @@ -95,7 +95,7 @@ func CreateProviderFromConfig(cfg *config.ModelConfig) (LLMProvider, string, err case "litellm", "openrouter", "groq", "zhipu", "gemini", "nvidia", "ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras", "vivgrid", "volcengine", "vllm", "qwen", "mistral", "avian", - "minimax", "longcat": + "minimax", "longcat", "modelscope": // All other OpenAI-compatible HTTP providers if cfg.APIKey == "" && cfg.APIBase == "" { return nil, "", fmt.Errorf("api_key or api_base is required for HTTP-based protocol %q", protocol) @@ -217,6 +217,8 @@ func getDefaultAPIBase(protocol string) string { return "https://api.minimaxi.com/v1" case "longcat": return "https://api.longcat.chat/openai" + case "modelscope": + return "https://api.modelscope.cn/v1" default: return "" } diff --git a/pkg/providers/openai_compat/provider.go b/pkg/providers/openai_compat/provider.go index f97bf3acd..3a818b3ab 100644 --- a/pkg/providers/openai_compat/provider.go +++ b/pkg/providers/openai_compat/provider.go @@ -464,6 +464,8 @@ func normalizeModel(model, apiBase string) string { if strings.Contains(strings.ToLower(apiBase), "openrouter.ai") { return model + } else if strings.Contains(strings.ToLower(apiBase), "api-inference.modelscope.cn") { + return model } prefix := strings.ToLower(before)