Create 根据配置创建相应的提供商
(config *types.ModelConfig)
| 25 | |
| 26 | // Create 根据配置创建相应的提供商 |
| 27 | func (f *MultiProviderFactory) Create(config *types.ModelConfig) (Provider, error) { |
| 28 | providerType := config.Provider |
| 29 | if providerType == "" { |
| 30 | // 默认使用 anthropic |
| 31 | providerType = "anthropic" |
| 32 | } |
| 33 | |
| 34 | factoryLog.Info(context.Background(), "Creating provider", map[string]any{ |
| 35 | "provider_type": providerType, |
| 36 | "model": config.Model, |
| 37 | "base_url": config.BaseURL, |
| 38 | }) |
| 39 | |
| 40 | switch providerType { |
| 41 | // 原有 Providers |
| 42 | case "anthropic": |
| 43 | return NewAnthropicProvider(config) |
| 44 | case "glm", "zhipu", "bigmodel": |
| 45 | return NewGLMProvider(config) |
| 46 | case "deepseek": |
| 47 | return NewDeepseekProvider(config) |
| 48 | |
| 49 | // 新增 OpenAI 兼容 Providers |
| 50 | case "openai": |
| 51 | return NewOpenAIProvider(config) |
| 52 | case "groq": |
| 53 | return NewGroqProvider(config) |
| 54 | case "ollama": |
| 55 | return NewOllamaProvider(config) |
| 56 | case "openrouter": |
| 57 | return NewOpenRouterProviderSimple(config) |
| 58 | case "mistral": |
| 59 | return NewMistralProvider(config) |
| 60 | |
| 61 | // 中国市场 Providers |
| 62 | case "doubao", "bytedance": |
| 63 | return NewDoubaoProviderSimple(config) |
| 64 | case "moonshot", "kimi": |
| 65 | return NewMoonshotProvider(config) |
| 66 | |
| 67 | // Google Providers (专有格式) |
| 68 | case "gemini", "google": |
| 69 | return NewGeminiProvider(config) |
| 70 | |
| 71 | // 自定义 Claude API 中转站(Anthropic 格式) |
| 72 | case "custom_claude": |
| 73 | return NewCustomClaudeProvider(config) |
| 74 | |
| 75 | // 通用 OpenAI 兼容 Provider(用户自定义 API) |
| 76 | case "openai_compatible", "custom": |
| 77 | return NewCustomProvider(config) |
| 78 | |
| 79 | // Gateway Provider(自动推断协议) |
| 80 | case "gateway": |
| 81 | return NewGatewayProvider(config) |
| 82 | |
| 83 | default: |
| 84 | // 如果提供了 BaseURL,尝试作为 OpenAI 兼容 Provider |