Skip to content

golem 多 Provider 适配解剖

golem 的 Provider 系统展示如何抽象多 LLM 厂商接口。

支持的 Provider

golem 支持 7 大 LLM 厂商:

Provider接口特色
OpenAIOpenAI 兼容GPT-4 系列
AnthropicAnthropic 官方Claude 系列
DeepSeekDeepSeek API高性价比
Moonshot/Kimi月之暗面中文优化
Zhipu/GLM智谱中国大模型
MiniMaxMiniMax海螺音频
DashScope/Qwen阿里云通义千问

接口抽象(~150 行)

go
// Provider 接口
type Provider interface {
    Chat(ctx context.Context, req *ChatRequest) (*ChatResponse, error)
    Stream(ctx context.Context, req *ChatRequest) (*ChatStreamReader, error)
}

// 工厂函数
func NewProvider(provider string, apiKey string) (Provider, error) {
    switch provider {
    case "openai":
        return NewOpenAI(apiKey), nil
    case "anthropic":
        return NewAnthropic(apiKey), nil
    case "deepseek":
        return NewDeepSeek(apiKey), nil
    // ... 其他 provider
    default:
        return nil, fmt.Errorf("unsupported provider: %s", provider)
    }
}

配置示例

json
{
  "provider": "anthropic",
  "model": "claude-sonnet-4-6",
  "apiKey": "sk-ant-..."
}

设计要点

  1. 统一接口:所有 Provider 实现相同接口
  2. 工厂模式:通过配置创建实例
  3. Streaming:统一流式输出接口

与 OMO 对比

golemOMO
切换方式配置文件Category 路由
模型选择单模型多模型并行
成本控制手动自动选择性价比

基于 MIT 许可发布