diff --git a/internal/providers/configs/zhipu-coding.json b/internal/providers/configs/zhipu-coding.json new file mode 100644 index 0000000000000000000000000000000000000000..936eb6aa55683655167c777e7f1a604114f43ced --- /dev/null +++ b/internal/providers/configs/zhipu-coding.json @@ -0,0 +1,98 @@ +{ + "name": "Zhipu Coding", + "id": "zhipu-coding", + "api_key": "$ZHIPU_API_KEY", + "api_endpoint": "https://open.bigmodel.cn/api/coding/paas/v4", + "type": "openai-compat", + "default_large_model_id": "glm-4.7", + "default_small_model_id": "glm-4.7-flash", + "models": [ + { + "id": "glm-5", + "name": "GLM-5", + "cost_per_1m_in": 1.0, + "cost_per_1m_out": 3.2, + "cost_per_1m_in_cached": 0.2, + "context_window": 204800, + "default_max_tokens": 65536, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.7", + "name": "GLM-4.7", + "cost_per_1m_in": 0.42, + "cost_per_1m_out": 2.2, + "cost_per_1m_in_cached": 0.11, + "context_window": 204800, + "default_max_tokens": 102400, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.7-flash", + "name": "GLM-4.7 Flash", + "cost_per_1m_in": 0.07, + "cost_per_1m_out": 0.4, + "cost_per_1m_in_cached": 0.01, + "context_window": 200000, + "default_max_tokens": 65550, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.6", + "name": "GLM-4.6", + "cost_per_1m_in": 0.39, + "cost_per_1m_out": 1.9, + "cost_per_1m_in_cached": 0.11, + "context_window": 204800, + "default_max_tokens": 102400, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.6v", + "name": "GLM-4.6V", + "cost_per_1m_in": 0.3, + "cost_per_1m_out": 0.9, + "context_window": 131072, + "default_max_tokens": 65536, + "can_reason": true, + "supports_attachments": true + }, + { + "id": "glm-4.5", + "name": "GLM-4.5", + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 2.2, + "cost_per_1m_in_cached": 0.11, + "context_window": 131072, + "default_max_tokens": 49152, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.5-air", + "name": "GLM-4.5-Air", + "cost_per_1m_in": 0.13, + "cost_per_1m_out": 0.85, + "cost_per_1m_in_cached": 0.03, + "context_window": 131072, + "default_max_tokens": 49152, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.5v", + "name": "GLM-4.5V", + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 1.8, + "cost_per_1m_in_cached": 0.11, + "context_window": 65536, + "default_max_tokens": 8192, + "can_reason": true, + "supports_attachments": true + } + ] +} diff --git a/internal/providers/configs/zhipu.json b/internal/providers/configs/zhipu.json new file mode 100644 index 0000000000000000000000000000000000000000..c502541c170e11716a24f7ca6bd3cd129c4b22bd --- /dev/null +++ b/internal/providers/configs/zhipu.json @@ -0,0 +1,98 @@ +{ + "name": "Zhipu", + "id": "zhipu", + "api_key": "$ZHIPU_API_KEY", + "api_endpoint": "https://open.bigmodel.cn/api/paas/v4", + "type": "openai-compat", + "default_large_model_id": "glm-4.7", + "default_small_model_id": "glm-4.7-flash", + "models": [ + { + "id": "glm-5", + "name": "GLM-5", + "cost_per_1m_in": 1.0, + "cost_per_1m_out": 3.2, + "cost_per_1m_in_cached": 0.2, + "context_window": 204800, + "default_max_tokens": 65536, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.7", + "name": "GLM-4.7", + "cost_per_1m_in": 0.42, + "cost_per_1m_out": 2.2, + "cost_per_1m_in_cached": 0.11, + "context_window": 204800, + "default_max_tokens": 102400, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.7-flash", + "name": "GLM-4.7 Flash", + "cost_per_1m_in": 0.07, + "cost_per_1m_out": 0.4, + "cost_per_1m_in_cached": 0.01, + "context_window": 200000, + "default_max_tokens": 65550, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.6", + "name": "GLM-4.6", + "cost_per_1m_in": 0.39, + "cost_per_1m_out": 1.9, + "cost_per_1m_in_cached": 0.11, + "context_window": 204800, + "default_max_tokens": 102400, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.6v", + "name": "GLM-4.6V", + "cost_per_1m_in": 0.3, + "cost_per_1m_out": 0.9, + "context_window": 131072, + "default_max_tokens": 65536, + "can_reason": true, + "supports_attachments": true + }, + { + "id": "glm-4.5", + "name": "GLM-4.5", + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 2.2, + "cost_per_1m_in_cached": 0.11, + "context_window": 131072, + "default_max_tokens": 49152, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.5-air", + "name": "GLM-4.5-Air", + "cost_per_1m_in": 0.13, + "cost_per_1m_out": 0.85, + "cost_per_1m_in_cached": 0.03, + "context_window": 131072, + "default_max_tokens": 49152, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "glm-4.5v", + "name": "GLM-4.5V", + "cost_per_1m_in": 0.6, + "cost_per_1m_out": 1.8, + "cost_per_1m_in_cached": 0.11, + "context_window": 65536, + "default_max_tokens": 8192, + "can_reason": true, + "supports_attachments": true + } + ] +} diff --git a/internal/providers/providers.go b/internal/providers/providers.go index b3af97a0f1a3664dc2f81265e45652396014a140..438a3bb4ddee6170318bfb986cc59d963269e5bc 100644 --- a/internal/providers/providers.go +++ b/internal/providers/providers.go @@ -36,6 +36,12 @@ var xAIConfig []byte //go:embed configs/zai.json var zAIConfig []byte +//go:embed configs/zhipu.json +var zhipuConfig []byte + +//go:embed configs/zhipu-coding.json +var zhipuCodingConfig []byte + //go:embed configs/bedrock.json var bedrockConfig []byte @@ -90,6 +96,8 @@ var providerRegistry = []ProviderFunc{ vertexAIProvider, xAIProvider, zAIProvider, + zhipuProvider, + zhipuCodingProvider, kimiCodingProvider, groqProvider, openRouterProvider, @@ -161,6 +169,14 @@ func zAIProvider() catwalk.Provider { return loadProviderFromConfig(zAIConfig) } +func zhipuProvider() catwalk.Provider { + return loadProviderFromConfig(zhipuConfig) +} + +func zhipuCodingProvider() catwalk.Provider { + return loadProviderFromConfig(zhipuCodingConfig) +} + func openRouterProvider() catwalk.Provider { return loadProviderFromConfig(openRouterConfig) } diff --git a/pkg/catwalk/provider.go b/pkg/catwalk/provider.go index aa2561ad6401c430b34ff45bc46d492f5ac050ec..ba0b1b4b25c89da698d3f6f374cb360155c5c330 100644 --- a/pkg/catwalk/provider.go +++ b/pkg/catwalk/provider.go @@ -30,6 +30,8 @@ const ( InferenceProviderVertexAI InferenceProvider = "vertexai" InferenceProviderXAI InferenceProvider = "xai" InferenceProviderZAI InferenceProvider = "zai" + InferenceProviderZhipu InferenceProvider = "zhipu" + InferenceProviderZhipuCoding InferenceProvider = "zhipu-coding" InferenceProviderGROQ InferenceProvider = "groq" InferenceProviderOpenRouter InferenceProvider = "openrouter" InferenceProviderCerebras InferenceProvider = "cerebras" @@ -97,6 +99,8 @@ func KnownProviders() []InferenceProvider { InferenceProviderVertexAI, InferenceProviderXAI, InferenceProviderZAI, + InferenceProviderZhipu, + InferenceProviderZhipuCoding, InferenceProviderGROQ, InferenceProviderOpenRouter, InferenceProviderCerebras,