Files
goclaw/internal/http/provider_models_catalog.go

137 lines
5.0 KiB
Go

package http
import (
"github.com/nextlevelbuilder/goclaw/internal/providers"
"github.com/nextlevelbuilder/goclaw/internal/store"
)
// bailianModels returns a hardcoded list of models available on the
// Bailian Coding platform (coding-intl.dashscope.aliyuncs.com).
// The platform does not expose a /v1/models endpoint.
func bailianModels() []ModelInfo {
return []ModelInfo{
// qwen3.7-plus: Text Generation + Deep Thinking + Visual Understanding.
{ID: "qwen3.7-plus", Name: "Qwen 3.7 Plus"},
{ID: "qwen3.6-plus", Name: "Qwen 3.6 Plus"},
{ID: "qwen3.5-plus", Name: "Qwen 3.5 Plus"},
{ID: "kimi-k2.5", Name: "Kimi K2.5"},
{ID: "GLM-5", Name: "GLM-5"},
{ID: "MiniMax-M2.5", Name: "MiniMax M2.5"},
{ID: "qwen3-max-2026-01-23", Name: "Qwen 3 Max (2026-01-23)"},
{ID: "qwen3-coder-next", Name: "Qwen 3 Coder Next"},
{ID: "qwen3-coder-plus", Name: "Qwen 3 Coder Plus"},
{ID: "glm-4.7", Name: "GLM 4.7"},
}
}
// minimaxModels returns a hardcoded list of MiniMax models.
// MiniMax does not expose a /v1/models endpoint.
func minimaxModels() []ModelInfo {
return []ModelInfo{
// Chat / text
{ID: store.MiniMaxDefaultModel, Name: "MiniMax M3"},
{ID: "MiniMax-Text-01", Name: "MiniMax Text 01"},
{ID: "MiniMax-M1", Name: "MiniMax M1"},
{ID: "MiniMax-M2.7", Name: "MiniMax M2.7"},
{ID: "MiniMax-M2.7-highspeed", Name: "MiniMax M2.7 Highspeed"},
{ID: "MiniMax-M2.5", Name: "MiniMax M2.5"},
{ID: "MiniMax-M2.5-highspeed", Name: "MiniMax M2.5 Highspeed"},
{ID: "MiniMax-M2.1", Name: "MiniMax M2.1"},
{ID: "MiniMax-M2.1-highspeed", Name: "MiniMax M2.1 Highspeed"},
{ID: "MiniMax-M2", Name: "MiniMax M2"},
// Image generation
{ID: "image-01", Name: "Image 01"},
// Video generation
{ID: "MiniMax-Hailuo-2.3", Name: "Hailuo Video 2.3"},
{ID: "MiniMax-Hailuo-2", Name: "Hailuo Video 2"},
{ID: "T2V-01-Director", Name: "T2V-01 Director"},
// Music generation
{ID: "music-2.5+", Name: "Music 2.5+"},
{ID: "music-2.5", Name: "Music 2.5"},
// TTS
{ID: "speech-02-hd", Name: "Speech 02 HD"},
{ID: "speech-02-turbo", Name: "Speech 02 Turbo"},
}
}
// zaiModels returns a hardcoded list of Z.AI GLM models.
// Z.AI supports OpenAI-compatible chat completions, but /models availability is
// not required for GoClaw's model picker.
func zaiModels() []ModelInfo {
return []ModelInfo{
{ID: store.ZaiDefaultModel, Name: "GLM 5.2"},
{ID: "glm-5.1", Name: "GLM 5.1"},
{ID: "glm-5-turbo", Name: "GLM 5 Turbo"},
{ID: "glm-5", Name: "GLM 5"},
{ID: "glm-4.7", Name: "GLM 4.7"},
{ID: "glm-4.7-flash", Name: "GLM 4.7 Flash"},
{ID: "glm-4.7-flashx", Name: "GLM 4.7 FlashX"},
{ID: "glm-4.6", Name: "GLM 4.6"},
{ID: "glm-4.5", Name: "GLM 4.5"},
{ID: "glm-4.5-air", Name: "GLM 4.5 Air"},
{ID: "glm-4.5-x", Name: "GLM 4.5 X"},
{ID: "glm-4.5-airx", Name: "GLM 4.5 AirX"},
{ID: "glm-4.5-flash", Name: "GLM 4.5 Flash"},
{ID: "glm-4-32b-0414-128k", Name: "GLM 4 32B 0414 128K"},
}
}
// dashScopeModels returns a hardcoded list of DashScope (Qwen) models.
// DashScope does not expose a standard /v1/models endpoint.
func dashScopeModels() []ModelInfo {
return []ModelInfo{
// Qwen3.6 series — Agentic Coding + 1M context
{ID: "qwen3.6-plus", Name: "Qwen 3.6 Plus"},
// Qwen3.5 series — Text Generation + Deep Thinking + Visual Understanding
{ID: "qwen3.5-plus", Name: "Qwen 3.5 Plus"},
{ID: "qwen3.5-flash", Name: "Qwen 3.5 Flash"},
{ID: "qwen3.5-turbo", Name: "Qwen 3.5 Turbo"},
// Qwen3 hosted series — Text + Thinking
{ID: "qwen3-max", Name: "Qwen 3 Max"},
{ID: "qwen3-plus", Name: "Qwen 3 Plus"},
{ID: "qwen3-turbo", Name: "Qwen 3 Turbo"},
// Image generation
{ID: "wan2.6-image", Name: "Wan 2.6 Image"},
{ID: "wan2.1-image", Name: "Wan 2.1 Image"},
// Video generation
{ID: "wan2.6-video", Name: "Wan 2.6 Video"},
}
}
// claudeCLIModels returns the model aliases accepted by the Claude CLI.
func claudeCLIModels() []ModelInfo {
return []ModelInfo{
{ID: "sonnet", Name: "Sonnet"},
{ID: "opus", Name: "Opus"},
{ID: "haiku", Name: "Haiku"},
}
}
// acpModels returns the model aliases for ACP-compatible coding agents.
func acpModels() []ModelInfo {
return []ModelInfo{
{ID: "claude", Name: "Claude"},
{ID: "codex", Name: "Codex"},
{ID: "gemini", Name: "Gemini"},
}
}
// chatGPTOAuthModels returns models available via ChatGPT OAuth integration.
func chatGPTOAuthModels() []ModelInfo {
return withReasoningCapabilities([]ModelInfo{
{ID: "gpt-5.6-sol", Name: "GPT-5.6 Sol"},
{ID: "gpt-5.6-terra", Name: "GPT-5.6 Terra"},
{ID: providers.DefaultCodexModel, Name: "GPT-5.5"},
{ID: "gpt-5.4", Name: "GPT-5.4"},
{ID: "gpt-5.4-mini", Name: "GPT-5.4 Mini"},
{ID: "gpt-5.3-codex", Name: "GPT-5.3 Codex"},
{ID: "gpt-5.3-codex-spark", Name: "GPT-5.3 Codex Spark"},
{ID: "gpt-5.2-codex", Name: "GPT-5.2 Codex"},
{ID: "gpt-5.2", Name: "GPT-5.2"},
{ID: "gpt-5.1-codex", Name: "GPT-5.1 Codex"},
{ID: "gpt-5.1-codex-max", Name: "GPT-5.1 Codex Max"},
{ID: "gpt-5.1-codex-mini", Name: "GPT-5.1 Codex Mini"},
{ID: "gpt-5.1", Name: "GPT-5.1"},
})
}