Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 117 additions & 0 deletions internal/providers/configs/alibaba-singapore.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
{
"name": "Alibaba (Singapore)",
"id": "alibaba-singapore",
"api_key": "$ALIBABA_SINGAPORE_API_KEY",
"api_endpoint": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
"type": "openai-compat",
"default_large_model_id": "qwen3.6-plus",
"default_small_model_id": "qwen3.6-flash",
"models": [
{
"id": "qwen3.6-35b-a3b",
"name": "Qwen3.6-35B-A3B",
"cost_per_1m_in": 0.6,
"cost_per_1m_out": 3.6,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 256000,
"default_max_tokens": 64000,
"can_reason": true,
"supports_attachments": true
},
{
"id": "qwen3.6-27b",
"name": "Qwen3.6-27B",
"cost_per_1m_in": 0.248,
"cost_per_1m_out": 1.486,
"cost_per_1m_in_cached": 0,
"cost_per_1m_out_cached": 0,
"context_window": 256000,
"default_max_tokens": 64000,
"can_reason": true,
"supports_attachments": true
},
{
"id": "qwen3.6-flash",
"name": "Qwen3.6-Flash",
"cost_per_1m_in": 0.25,
"cost_per_1m_out": 1.5,
"cost_per_1m_in_cached": 0.025,
"cost_per_1m_out_cached": 0.3125,
"context_window": 1000000,
"default_max_tokens": 64000,
"can_reason": true,
"supports_attachments": true
},
{
"id": "qwen3.6-plus",
"name": "Qwen3.6-Plus",
"cost_per_1m_in": 0.5,
"cost_per_1m_out": 0.3,
"cost_per_1m_in_cached": 0.05,
"cost_per_1m_out_cached": 0.625,
"context_window": 1000000,
"default_max_tokens": 64000,
"can_reason": true,
"supports_attachments": true
},
{
"id": "qwen3.6-max-preview",
"name": "Qwen3.6-Max",
"cost_per_1m_in": 1.3,
"cost_per_1m_out": 7.8,
"cost_per_1m_in_cached": 0.13,
"cost_per_1m_out_cached": 1.165,
"context_window": 256000,
"default_max_tokens": 64000,
"can_reason": true,
"supports_attachments": false
},
{
"id": "deepseek-v4-pro",
"name": "DeepSeek-V4-Pro",
"cost_per_1m_in": 2.4,
"cost_per_1m_out": 4.8,
"cost_per_1m_in_cached": 0.2,
"cost_per_1m_out_cached": 0,
"context_window": 1000000,
"default_max_tokens": 384000,
"can_reason": true,
"reasoning_levels": [
"high",
"xhigh"
],
"default_reasoning_effort": "high",
"supports_attachments": false
},
{
"id": "deepseek-v4-flash",
"name": "DeepSeek-V4-Flash",
"cost_per_1m_in": 0.2,
"cost_per_1m_out": 0.4,
"cost_per_1m_in_cached": 0.04,
"cost_per_1m_out_cached": 0,
"context_window": 1000000,
"default_max_tokens": 384000,
"can_reason": true,
"reasoning_levels": [
"high",
"xhigh"
],
"default_reasoning_effort": "high",
"supports_attachments": false
},
{
"id": "deepseek-v3.2",
"name": "DeepSeek-V3.2",
"cost_per_1m_in": 0.57,
"cost_per_1m_out": 1.71,
"cost_per_1m_in_cached": 0.114,
"cost_per_1m_out_cached": 0.713,
"context_window": 128000,
"default_max_tokens": 64000,
"can_reason": true,
"supports_attachments": false
}
]
}
8 changes: 8 additions & 0 deletions internal/providers/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ import (
//go:embed configs/aihubmix.json
var aiHubMixConfig []byte

//go:embed configs/alibaba-singapore.json
var alibabaSingaporeConfig []byte

//go:embed configs/anthropic.json
var anthropicConfig []byte

Expand Down Expand Up @@ -122,6 +125,7 @@ var providerRegistry = []ProviderFunc{

// The remaining will be in alphabetical order.
aiHubMixProvider,
alibabaSingaporeProvider,
avianProvider,
azureProvider,
bedrockProvider,
Expand Down Expand Up @@ -168,6 +172,10 @@ func aiHubMixProvider() catwalk.Provider {
return loadProviderFromConfig(aiHubMixConfig)
}

func alibabaSingaporeProvider() catwalk.Provider {
return loadProviderFromConfig(alibabaSingaporeConfig)
}

func anthropicProvider() catwalk.Provider {
return loadProviderFromConfig(anthropicConfig)
}
Expand Down
65 changes: 33 additions & 32 deletions pkg/catwalk/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,38 +21,39 @@ type InferenceProvider string

// All the inference providers supported by the system.
const (
InferenceProviderOpenAI InferenceProvider = "openai"
InferenceProviderAnthropic InferenceProvider = "anthropic"
InferenceProviderSynthetic InferenceProvider = "synthetic"
InferenceProviderGemini InferenceProvider = "gemini"
InferenceProviderAzure InferenceProvider = "azure"
InferenceProviderBedrock InferenceProvider = "bedrock"
InferenceProviderVertexAI InferenceProvider = "vertexai"
InferenceProviderXAI InferenceProvider = "xai"
InferenceProviderZAI InferenceProvider = "zai"
InferenceProviderDeepSeek InferenceProvider = "deepseek"
InferenceProviderZhipu InferenceProvider = "zhipu"
InferenceProviderZhipuCoding InferenceProvider = "zhipu-coding"
InferenceProviderGROQ InferenceProvider = "groq"
InferenceProviderOpenRouter InferenceProvider = "openrouter"
InferenceProviderCerebras InferenceProvider = "cerebras"
InferenceProviderVenice InferenceProvider = "venice"
InferenceProviderChutes InferenceProvider = "chutes"
InferenceProviderHuggingFace InferenceProvider = "huggingface"
InferenceAIHubMix InferenceProvider = "aihubmix"
InferenceKimiCoding InferenceProvider = "kimi-coding"
InferenceProviderCopilot InferenceProvider = "copilot"
InferenceProviderCortecs InferenceProvider = "cortecs"
InferenceProviderVercel InferenceProvider = "vercel"
InferenceProviderMiniMax InferenceProvider = "minimax"
InferenceProviderMiniMaxChina InferenceProvider = "minimax-china"
InferenceProviderIoNet InferenceProvider = "ionet"
InferenceProviderQiniuCloud InferenceProvider = "qiniucloud"
InferenceProviderAvian InferenceProvider = "avian"
InferenceProviderNebius InferenceProvider = "nebius"
InferenceProviderNeuralwatt InferenceProvider = "neuralwatt"
InferenceProviderOpenCodeZen InferenceProvider = "opencode-zen"
InferenceProviderOpenCodeGo InferenceProvider = "opencode-go"
InferenceProviderOpenAI InferenceProvider = "openai"
InferenceProviderAnthropic InferenceProvider = "anthropic"
InferenceProviderSynthetic InferenceProvider = "synthetic"
InferenceProviderGemini InferenceProvider = "gemini"
InferenceProviderAzure InferenceProvider = "azure"
InferenceProviderBedrock InferenceProvider = "bedrock"
InferenceProviderVertexAI InferenceProvider = "vertexai"
InferenceProviderXAI InferenceProvider = "xai"
InferenceProviderZAI InferenceProvider = "zai"
InferenceProviderDeepSeek InferenceProvider = "deepseek"
InferenceProviderZhipu InferenceProvider = "zhipu"
InferenceProviderZhipuCoding InferenceProvider = "zhipu-coding"
InferenceProviderGROQ InferenceProvider = "groq"
InferenceProviderOpenRouter InferenceProvider = "openrouter"
InferenceProviderCerebras InferenceProvider = "cerebras"
InferenceProviderVenice InferenceProvider = "venice"
InferenceProviderChutes InferenceProvider = "chutes"
InferenceProviderHuggingFace InferenceProvider = "huggingface"
InferenceAIHubMix InferenceProvider = "aihubmix"
InferenceKimiCoding InferenceProvider = "kimi-coding"
InferenceProviderCopilot InferenceProvider = "copilot"
InferenceProviderCortecs InferenceProvider = "cortecs"
InferenceProviderVercel InferenceProvider = "vercel"
InferenceProviderMiniMax InferenceProvider = "minimax"
InferenceProviderMiniMaxChina InferenceProvider = "minimax-china"
InferenceProviderIoNet InferenceProvider = "ionet"
InferenceProviderQiniuCloud InferenceProvider = "qiniucloud"
InferenceProviderAvian InferenceProvider = "avian"
InferenceProviderNebius InferenceProvider = "nebius"
InferenceProviderNeuralwatt InferenceProvider = "neuralwatt"
InferenceProviderOpenCodeZen InferenceProvider = "opencode-zen"
InferenceProviderOpenCodeGo InferenceProvider = "opencode-go"
InferenceProviderAlibabaSingapore InferenceProvider = "alibaba-singapore"
)

// Provider represents an AI provider configuration.
Expand Down
Loading