From c08deb93d1b49873a2e4862632b15d97c247aca3 Mon Sep 17 00:00:00 2001 From: yinwm Date: Fri, 20 Feb 2026 01:07:36 +0800 Subject: [PATCH] refactor(config): use provider-specific protocol instead of generic openai protocol Update model configurations to use provider-specific protocols (zhipu, vllm, gemini, shengsuanyun, deepseek, volcengine) instead of using the generic "openai" protocol for all providers. This change ensures each provider uses its correct protocol identifier and model naming convention. --- pkg/config/migration.go | 24 ++++++++++++------------ pkg/config/migration_test.go | 18 +++++++++--------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/pkg/config/migration.go b/pkg/config/migration.go index 8eae29258..bed0c144b 100644 --- a/pkg/config/migration.go +++ b/pkg/config/migration.go @@ -109,14 +109,14 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { }, { providerNames: []string{"zhipu", "glm"}, - protocol: "openai", + protocol: "zhipu", buildConfig: func(p ProvidersConfig) (ModelConfig, bool) { if p.Zhipu.APIKey == "" && p.Zhipu.APIBase == "" { return ModelConfig{}, false } return ModelConfig{ ModelName: "zhipu", - Model: "openai/glm-4", + Model: "zhipu/glm-4", APIKey: p.Zhipu.APIKey, APIBase: p.Zhipu.APIBase, Proxy: p.Zhipu.Proxy, @@ -125,14 +125,14 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { }, { providerNames: []string{"vllm"}, - protocol: "openai", + protocol: "vllm", buildConfig: func(p ProvidersConfig) (ModelConfig, bool) { if p.VLLM.APIKey == "" && p.VLLM.APIBase == "" { return ModelConfig{}, false } return ModelConfig{ ModelName: "vllm", - Model: "openai/auto", + Model: "vllm/auto", APIKey: p.VLLM.APIKey, APIBase: p.VLLM.APIBase, Proxy: p.VLLM.Proxy, @@ -141,14 +141,14 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { }, { providerNames: []string{"gemini", "google"}, - protocol: "openai", + protocol: "gemini", buildConfig: func(p ProvidersConfig) (ModelConfig, bool) { if p.Gemini.APIKey == "" && p.Gemini.APIBase == "" { return ModelConfig{}, false } return ModelConfig{ ModelName: "gemini", - Model: "openai/gemini-pro", + Model: "gemini/gemini-pro", APIKey: p.Gemini.APIKey, APIBase: p.Gemini.APIBase, Proxy: p.Gemini.Proxy, @@ -205,14 +205,14 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { }, { providerNames: []string{"shengsuanyun"}, - protocol: "openai", + protocol: "shengsuanyun", buildConfig: func(p ProvidersConfig) (ModelConfig, bool) { if p.ShengSuanYun.APIKey == "" && p.ShengSuanYun.APIBase == "" { return ModelConfig{}, false } return ModelConfig{ ModelName: "shengsuanyun", - Model: "openai/auto", + Model: "shengsuanyun/auto", APIKey: p.ShengSuanYun.APIKey, APIBase: p.ShengSuanYun.APIBase, Proxy: p.ShengSuanYun.Proxy, @@ -221,14 +221,14 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { }, { providerNames: []string{"deepseek"}, - protocol: "openai", + protocol: "deepseek", buildConfig: func(p ProvidersConfig) (ModelConfig, bool) { if p.DeepSeek.APIKey == "" && p.DeepSeek.APIBase == "" { return ModelConfig{}, false } return ModelConfig{ ModelName: "deepseek", - Model: "openai/deepseek-chat", + Model: "deepseek/deepseek-chat", APIKey: p.DeepSeek.APIKey, APIBase: p.DeepSeek.APIBase, Proxy: p.DeepSeek.Proxy, @@ -253,14 +253,14 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { }, { providerNames: []string{"volcengine", "doubao"}, - protocol: "openai", + protocol: "volcengine", buildConfig: func(p ProvidersConfig) (ModelConfig, bool) { if p.VolcEngine.APIKey == "" && p.VolcEngine.APIBase == "" { return ModelConfig{}, false } return ModelConfig{ ModelName: "volcengine", - Model: "openai/doubao-pro", + Model: "volcengine/doubao-pro", APIKey: p.VolcEngine.APIKey, APIBase: p.VolcEngine.APIBase, Proxy: p.VolcEngine.Proxy, diff --git a/pkg/config/migration_test.go b/pkg/config/migration_test.go index 01a11f6d3..dad5b32d9 100644 --- a/pkg/config/migration_test.go +++ b/pkg/config/migration_test.go @@ -205,8 +205,8 @@ func TestConvertProvidersToModelList_PreservesUserModel_DeepSeek(t *testing.T) { } // Should use user's model, not default - if result[0].Model != "openai/deepseek-reasoner" { - t.Errorf("Model = %q, want %q (user's configured model)", result[0].Model, "openai/deepseek-reasoner") + if result[0].Model != "deepseek/deepseek-reasoner" { + t.Errorf("Model = %q, want %q (user's configured model)", result[0].Model, "deepseek/deepseek-reasoner") } } @@ -302,8 +302,8 @@ func TestConvertProvidersToModelList_UsesDefaultWhenNoUserModel(t *testing.T) { } // Should use default model - if result[0].Model != "openai/deepseek-chat" { - t.Errorf("Model = %q, want %q (default)", result[0].Model, "openai/deepseek-chat") + if result[0].Model != "deepseek/deepseek-chat" { + t.Errorf("Model = %q, want %q (default)", result[0].Model, "deepseek/deepseek-chat") } } @@ -335,8 +335,8 @@ func TestConvertProvidersToModelList_MultipleProviders_PreservesUserModel(t *tes t.Errorf("OpenAI Model = %q, want %q (default)", mc.Model, "openai/gpt-4o") } case "deepseek": - if mc.Model != "openai/deepseek-reasoner" { - t.Errorf("DeepSeek Model = %q, want %q (user's)", mc.Model, "openai/deepseek-reasoner") + if mc.Model != "deepseek/deepseek-reasoner" { + t.Errorf("DeepSeek Model = %q, want %q (user's)", mc.Model, "deepseek/deepseek-reasoner") } } } @@ -350,7 +350,7 @@ func TestConvertProvidersToModelList_ProviderNameAliases(t *testing.T) { }{ {"gpt", "openai/gpt-4-custom", ProviderConfig{APIKey: "key"}}, {"claude", "anthropic/claude-custom", ProviderConfig{APIKey: "key"}}, - {"doubao", "openai/doubao-custom", ProviderConfig{APIKey: "key"}}, + {"doubao", "volcengine/doubao-custom", ProviderConfig{APIKey: "key"}}, {"tongyi", "qwen/qwen-custom", ProviderConfig{APIKey: "key"}}, {"kimi", "moonshot/kimi-custom", ProviderConfig{APIKey: "key"}}, } @@ -430,8 +430,8 @@ func TestConvertProvidersToModelList_NoProviderField_SingleProvider(t *testing.T } // Model should use the user's model with protocol prefix - if result[0].Model != "openai/glm-4.7" { - t.Errorf("Model = %q, want %q", result[0].Model, "openai/glm-4.7") + if result[0].Model != "zhipu/glm-4.7" { + t.Errorf("Model = %q, want %q", result[0].Model, "zhipu/glm-4.7") } }