From abafa3c2aac12cd3483d9ccc345e6033f8a7f2d4 Mon Sep 17 00:00:00 2001 From: lxowalle <83055338+lxowalle@users.noreply.github.com> Date: Mon, 9 Mar 2026 18:43:58 +0800 Subject: [PATCH] * add minimax provider (#1273) --- pkg/config/config.go | 4 +++- pkg/config/defaults.go | 8 ++++++++ pkg/providers/factory.go | 16 ++++++++++++++++ pkg/providers/factory_provider.go | 5 ++++- pkg/providers/openai_compat/provider.go | 2 +- 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/pkg/config/config.go b/pkg/config/config.go index b3ad050b7..deff1eb0f 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -481,6 +481,7 @@ type ProvidersConfig struct { Qwen ProviderConfig `json:"qwen"` Mistral ProviderConfig `json:"mistral"` Avian ProviderConfig `json:"avian"` + Minimax ProviderConfig `json:"minimax"` } // IsEmpty checks if all provider configs are empty (no API keys or API bases set) @@ -506,7 +507,8 @@ func (p ProvidersConfig) IsEmpty() bool { p.Antigravity.APIKey == "" && p.Antigravity.APIBase == "" && p.Qwen.APIKey == "" && p.Qwen.APIBase == "" && p.Mistral.APIKey == "" && p.Mistral.APIBase == "" && - p.Avian.APIKey == "" && p.Avian.APIBase == "" + p.Avian.APIKey == "" && p.Avian.APIBase == "" && + p.Minimax.APIKey == "" && p.Minimax.APIBase == "" } // MarshalJSON implements custom JSON marshaling for ProvidersConfig diff --git a/pkg/config/defaults.go b/pkg/config/defaults.go index 7fb3daa48..ad2c596ff 100644 --- a/pkg/config/defaults.go +++ b/pkg/config/defaults.go @@ -346,6 +346,14 @@ func DefaultConfig() *Config { APIKey: "", }, + // Minimax - https://api.minimaxi.com/ + { + ModelName: "MiniMax-M2.5", + Model: "minimax/MiniMax-M2.5", + APIBase: "https://api.minimaxi.com/v1", + APIKey: "", + }, + // VLLM (local) - http://localhost:8000 { ModelName: "local-model", diff --git a/pkg/providers/factory.go b/pkg/providers/factory.go index 25916ad03..d952c8cb0 100644 --- a/pkg/providers/factory.go +++ b/pkg/providers/factory.go @@ -208,6 +208,15 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) { sel.apiBase = "https://api.mistral.ai/v1" } } + case "minimax": + if cfg.Providers.Minimax.APIKey != "" { + sel.apiKey = cfg.Providers.Minimax.APIKey + sel.apiBase = cfg.Providers.Minimax.APIBase + sel.proxy = cfg.Providers.Minimax.Proxy + if sel.apiBase == "" { + sel.apiBase = "https://api.minimaxi.com/v1" + } + } case "github_copilot", "copilot": sel.providerType = providerTypeGitHubCopilot if cfg.Providers.GitHubCopilot.APIBase != "" { @@ -325,6 +334,13 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) { if sel.apiBase == "" { sel.apiBase = "https://api.mistral.ai/v1" } + case (strings.Contains(lowerModel, "minimax") || strings.HasPrefix(model, "minimax/")) && cfg.Providers.Minimax.APIKey != "": + sel.apiKey = cfg.Providers.Minimax.APIKey + sel.apiBase = cfg.Providers.Minimax.APIBase + sel.proxy = cfg.Providers.Minimax.Proxy + if sel.apiBase == "" { + sel.apiBase = "https://api.minimaxi.com/v1" + } case strings.HasPrefix(model, "avian/") && cfg.Providers.Avian.APIKey != "": sel.apiKey = cfg.Providers.Avian.APIKey sel.apiBase = cfg.Providers.Avian.APIBase diff --git a/pkg/providers/factory_provider.go b/pkg/providers/factory_provider.go index 941985964..a798154cb 100644 --- a/pkg/providers/factory_provider.go +++ b/pkg/providers/factory_provider.go @@ -94,7 +94,8 @@ 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": + "vivgrid", "volcengine", "vllm", "qwen", "mistral", "avian", + "minimax": // 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) @@ -212,6 +213,8 @@ func getDefaultAPIBase(protocol string) string { return "https://api.mistral.ai/v1" case "avian": return "https://api.avian.io/v1" + case "minimax": + return "https://api.minimaxi.com/v1" default: return "" } diff --git a/pkg/providers/openai_compat/provider.go b/pkg/providers/openai_compat/provider.go index 5c868626a..0e8db7409 100644 --- a/pkg/providers/openai_compat/provider.go +++ b/pkg/providers/openai_compat/provider.go @@ -440,7 +440,7 @@ func normalizeModel(model, apiBase string) string { prefix := strings.ToLower(before) switch prefix { case "litellm", "moonshot", "nvidia", "groq", "ollama", "deepseek", "google", - "openrouter", "zhipu", "mistral", "vivgrid": + "openrouter", "zhipu", "mistral", "vivgrid", "minimax": return after default: return model