From 24215342e4d1cd47205d16d43ed58a016eaebc50 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Wed, 17 Sep 2025 20:53:08 +0200 Subject: [PATCH] zai coding provider (#63) * zai coding provider * chore: change to openai endpoint --- internal/providers/configs/zai-coding.json | 38 ++++++++++++++++++++++ internal/providers/providers.go | 8 +++++ pkg/catwalk/provider.go | 2 ++ 3 files changed, 48 insertions(+) create mode 100644 internal/providers/configs/zai-coding.json diff --git a/internal/providers/configs/zai-coding.json b/internal/providers/configs/zai-coding.json new file mode 100644 index 0000000000000000000000000000000000000000..25d33239b0f84dd579e8e20bc9981443e2edf24f --- /dev/null +++ b/internal/providers/configs/zai-coding.json @@ -0,0 +1,38 @@ +{ + "name": "Z.AI Coding", + "id": "zai-coding", + "api_key": "$ZAI_API_KEY", + "api_endpoint": "https://api.z.ai/api/coding/paas/v4", + "type": "openai", + "default_large_model_id": "glm-4.5", + "default_small_model_id": "glm-4.5-air", + "models": [ + { + "id": "glm-4.5", + "name": "GLM-4.5", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 98304, + "can_reason": true, + "has_reasoning_efforts": true, + "default_reasoning_effort": "medium", + "supports_attachments": false + }, + { + "id": "glm-4.5-air", + "name": "GLM-4.5-Air", + "cost_per_1m_in": 0, + "cost_per_1m_out": 0, + "cost_per_1m_in_cached": 0, + "context_window": 131072, + "default_max_tokens": 98304, + "can_reason": true, + "has_reasoning_efforts": true, + "default_reasoning_effort": "medium", + "supports_attachments": false + } + ] +} diff --git a/internal/providers/providers.go b/internal/providers/providers.go index 76a1200f64e9d544629e5ef74d2f2eb1f73ef07d..a56d86f49d61b2433114af134c49f5a415c31b2f 100644 --- a/internal/providers/providers.go +++ b/internal/providers/providers.go @@ -33,6 +33,9 @@ var xAIConfig []byte //go:embed configs/zai.json var zAIConfig []byte +//go:embed configs/zai-coding.json +var zAICodingConfig []byte + //go:embed configs/bedrock.json var bedrockConfig []byte @@ -73,6 +76,7 @@ var providerRegistry = []ProviderFunc{ veniceProvider, chutesProvider, deepSeekProvider, + zAICodingProvider, } // GetAll returns all registered providers. @@ -125,6 +129,10 @@ func zAIProvider() catwalk.Provider { return loadProviderFromConfig(zAIConfig) } +func zAICodingProvider() catwalk.Provider { + return loadProviderFromConfig(zAICodingConfig) +} + func openRouterProvider() catwalk.Provider { return loadProviderFromConfig(openRouterConfig) } diff --git a/pkg/catwalk/provider.go b/pkg/catwalk/provider.go index 589d0ff6704ca1f0c0f2fde57bffb832e47198d9..1fcde28764f72299a7b5b5583801481dc02d8dee 100644 --- a/pkg/catwalk/provider.go +++ b/pkg/catwalk/provider.go @@ -26,6 +26,7 @@ const ( InferenceProviderVertexAI InferenceProvider = "vertexai" InferenceProviderXAI InferenceProvider = "xai" InferenceProviderZAI InferenceProvider = "zai" + InferenceProviderZAICoding InferenceProvider = "zai-coding" InferenceProviderGROQ InferenceProvider = "groq" InferenceProviderOpenRouter InferenceProvider = "openrouter" InferenceProviderLambda InferenceProvider = "lambda" @@ -74,6 +75,7 @@ func KnownProviders() []InferenceProvider { InferenceProviderVertexAI, InferenceProviderXAI, InferenceProviderZAI, + InferenceProviderZAICoding, InferenceProviderGROQ, InferenceProviderOpenRouter, InferenceProviderLambda,