diff --git a/internal/providers/configs/venice.json b/internal/providers/configs/venice.json new file mode 100644 index 0000000000000000000000000000000000000000..7c4eb73ba79dcd83a26926a9d9b359ff1dbba3ef --- /dev/null +++ b/internal/providers/configs/venice.json @@ -0,0 +1,71 @@ +{ + "name": "Venice AI", + "id": "venice", + "type": "openai", + "api_key": "$VENICE_API_KEY", + "api_endpoint": "https://api.venice.ai/api/v1", + "default_large_model_id": "qwen3-235b", + "default_small_model_id": "mistral-31-24b", + "models": [ + { + "id": "qwen3-235b", + "name": "Venice Large", + "cost_per_1m_in": 1.5, + "cost_per_1m_out": 6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 50000, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "qwen3-4b", + "name": "Venice Small", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 32768, + "default_max_tokens": 25000, + "can_reason": true, + "supports_attachments": false + }, + { + "id": "mistral-31-24b", + "name": "Venice Medium", + "cost_per_1m_in": 0.5, + "cost_per_1m_out": 2, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 50000, + "can_reason": false, + "supports_attachments": true + }, + { + "id": "llama-3.2-3b", + "name": "Llama 3.2 3B", + "cost_per_1m_in": 0.15, + "cost_per_1m_out": 0.6, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 131072, + "default_max_tokens": 25000, + "can_reason": false, + "supports_attachments": false + }, + { + "id": "llama-3.3-70b", + "name": "Llama 3.3 70B", + "cost_per_1m_in": 0.7, + "cost_per_1m_out": 2.8, + "cost_per_1m_in_cached": 0, + "cost_per_1m_out_cached": 0, + "context_window": 65536, + "default_max_tokens": 32000, + "can_reason": false, + "supports_attachments": false + } + ] +} diff --git a/internal/providers/providers.go b/internal/providers/providers.go index 2c29c8dedaf43f951e6c4a4595a2621830959bfa..4d6af2278c4a44e309cacc8fac69d1edfebf4f6f 100644 --- a/internal/providers/providers.go +++ b/internal/providers/providers.go @@ -45,6 +45,9 @@ var lambdaConfig []byte //go:embed configs/cerebras.json var cerebrasConfig []byte +//go:embed configs/venice.json +var veniceConfig []byte + // ProviderFunc is a function that returns a Provider. type ProviderFunc func() catwalk.Provider @@ -61,6 +64,7 @@ var providerRegistry = []ProviderFunc{ openRouterProvider, lambdaProvider, cerebrasProvider, + veniceProvider, } // GetAll returns all registered providers. @@ -128,3 +132,7 @@ func lambdaProvider() catwalk.Provider { func cerebrasProvider() catwalk.Provider { return loadProviderFromConfig(cerebrasConfig) } + +func veniceProvider() catwalk.Provider { + return loadProviderFromConfig(veniceConfig) +} diff --git a/pkg/catwalk/provider.go b/pkg/catwalk/provider.go index b9f8fbf3186ece695a12b2e70f8faafc5a27dc3f..6640d0c9bd79429e0ff245b1b3459c79d606c936 100644 --- a/pkg/catwalk/provider.go +++ b/pkg/catwalk/provider.go @@ -30,6 +30,7 @@ const ( InferenceProviderOpenRouter InferenceProvider = "openrouter" InferenceProviderLambda InferenceProvider = "lambda" InferenceProviderCerebras InferenceProvider = "cerebras" + InferenceProviderVenice InferenceProvider = "venice" ) // Provider represents an AI provider configuration. @@ -76,5 +77,6 @@ func KnownProviders() []InferenceProvider { InferenceProviderOpenRouter, InferenceProviderLambda, InferenceProviderCerebras, + InferenceProviderVenice, } }