picoclaw/pkg/config/migration.go

207 lines
5.1 KiB
Go
Raw Normal View History

// PicoClaw - Ultra-lightweight personal AI agent
// License: MIT
//
// Copyright (c) 2026 PicoClaw contributors
package config
// ConvertProvidersToModelList converts the old ProvidersConfig to a slice of ModelConfig.
// This enables backward compatibility with existing configurations.
func ConvertProvidersToModelList(cfg *Config) []ModelConfig {
if cfg == nil {
return nil
}
var result []ModelConfig
p := cfg.Providers
// OpenAI
if p.OpenAI.APIKey != "" || p.OpenAI.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "openai",
Model: "openai/gpt-4o",
APIKey: p.OpenAI.APIKey,
APIBase: p.OpenAI.APIBase,
Proxy: p.OpenAI.Proxy,
AuthMethod: p.OpenAI.AuthMethod,
})
}
// Anthropic
if p.Anthropic.APIKey != "" || p.Anthropic.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "anthropic",
Model: "anthropic/claude-3-sonnet",
APIKey: p.Anthropic.APIKey,
APIBase: p.Anthropic.APIBase,
Proxy: p.Anthropic.Proxy,
AuthMethod: p.Anthropic.AuthMethod,
})
}
// OpenRouter
if p.OpenRouter.APIKey != "" || p.OpenRouter.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "openrouter",
Model: "openrouter/auto",
APIKey: p.OpenRouter.APIKey,
APIBase: p.OpenRouter.APIBase,
Proxy: p.OpenRouter.Proxy,
})
}
// Groq
if p.Groq.APIKey != "" || p.Groq.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "groq",
Model: "groq/llama-3.1-70b-versatile",
APIKey: p.Groq.APIKey,
APIBase: p.Groq.APIBase,
Proxy: p.Groq.Proxy,
})
}
// Zhipu
if p.Zhipu.APIKey != "" || p.Zhipu.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "zhipu",
Model: "openai/glm-4",
APIKey: p.Zhipu.APIKey,
APIBase: p.Zhipu.APIBase,
Proxy: p.Zhipu.Proxy,
})
}
// VLLM
if p.VLLM.APIKey != "" || p.VLLM.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "vllm",
Model: "openai/auto",
APIKey: p.VLLM.APIKey,
APIBase: p.VLLM.APIBase,
Proxy: p.VLLM.Proxy,
})
}
// Gemini
if p.Gemini.APIKey != "" || p.Gemini.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "gemini",
Model: "openai/gemini-pro",
APIKey: p.Gemini.APIKey,
APIBase: p.Gemini.APIBase,
Proxy: p.Gemini.Proxy,
})
}
// Nvidia
if p.Nvidia.APIKey != "" || p.Nvidia.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "nvidia",
Model: "nvidia/meta/llama-3.1-8b-instruct",
APIKey: p.Nvidia.APIKey,
APIBase: p.Nvidia.APIBase,
Proxy: p.Nvidia.Proxy,
})
}
// Ollama
if p.Ollama.APIKey != "" || p.Ollama.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "ollama",
Model: "ollama/llama3",
APIKey: p.Ollama.APIKey,
APIBase: p.Ollama.APIBase,
Proxy: p.Ollama.Proxy,
})
}
// Moonshot
if p.Moonshot.APIKey != "" || p.Moonshot.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "moonshot",
Model: "moonshot/kimi",
APIKey: p.Moonshot.APIKey,
APIBase: p.Moonshot.APIBase,
Proxy: p.Moonshot.Proxy,
})
}
// ShengSuanYun
if p.ShengSuanYun.APIKey != "" || p.ShengSuanYun.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "shengsuanyun",
Model: "openai/auto",
APIKey: p.ShengSuanYun.APIKey,
APIBase: p.ShengSuanYun.APIBase,
Proxy: p.ShengSuanYun.Proxy,
})
}
// DeepSeek
if p.DeepSeek.APIKey != "" || p.DeepSeek.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "deepseek",
Model: "openai/deepseek-chat",
APIKey: p.DeepSeek.APIKey,
APIBase: p.DeepSeek.APIBase,
Proxy: p.DeepSeek.Proxy,
})
}
// Cerebras
if p.Cerebras.APIKey != "" || p.Cerebras.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "cerebras",
Model: "cerebras/llama-3.3-70b",
APIKey: p.Cerebras.APIKey,
APIBase: p.Cerebras.APIBase,
Proxy: p.Cerebras.Proxy,
})
}
// VolcEngine (Doubao)
if p.VolcEngine.APIKey != "" || p.VolcEngine.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "volcengine",
Model: "openai/doubao-pro",
APIKey: p.VolcEngine.APIKey,
APIBase: p.VolcEngine.APIBase,
Proxy: p.VolcEngine.Proxy,
})
}
// GitHub Copilot
if p.GitHubCopilot.APIKey != "" || p.GitHubCopilot.APIBase != "" || p.GitHubCopilot.ConnectMode != "" {
result = append(result, ModelConfig{
ModelName: "github-copilot",
Model: "github-copilot/gpt-4o",
APIBase: p.GitHubCopilot.APIBase,
ConnectMode: p.GitHubCopilot.ConnectMode,
})
}
// Antigravity
if p.Antigravity.APIKey != "" || p.Antigravity.AuthMethod != "" {
result = append(result, ModelConfig{
ModelName: "antigravity",
Model: "antigravity/gemini-2.0-flash",
APIKey: p.Antigravity.APIKey,
AuthMethod: p.Antigravity.AuthMethod,
})
}
// Qwen
if p.Qwen.APIKey != "" || p.Qwen.APIBase != "" {
result = append(result, ModelConfig{
ModelName: "qwen",
Model: "qwen/qwen-max",
APIKey: p.Qwen.APIKey,
APIBase: p.Qwen.APIBase,
Proxy: p.Qwen.Proxy,
})
}
return result
}