diff --git a/docs/my-website/docs/providers/chuizi.md b/docs/my-website/docs/providers/chuizi.md new file mode 100644 index 00000000000..330a7d35fd0 --- /dev/null +++ b/docs/my-website/docs/providers/chuizi.md @@ -0,0 +1,106 @@ +# Chuizi.AI + +## Overview + +| Property | Details | +|-------|-------| +| Description | Chuizi.AI is a unified AI gateway providing access to 100+ models across 16 providers through a single OpenAI-compatible endpoint. | +| Provider Route on LiteLLM | `chuizi/` | +| Link to Provider Doc | [Chuizi.AI Docs ↗](https://chuizi.ai/docs) | +| Base URL | `https://api.chuizi.ai/v1` | +| Supported Operations | [`/chat/completions`](#sample-usage), [`/completions`](#sample-usage), [`/embeddings`](#sample-usage) | + +
+ +## Required Variables + +```python showLineNumbers title="Environment Variables" +os.environ["CHUIZI_API_KEY"] = "" # your Chuizi.AI API key +``` + +Get your API key from [app.chuizi.ai](https://app.chuizi.ai/login). + +## Usage - LiteLLM Python SDK + +### Non-streaming + +```python showLineNumbers title="Chuizi.AI Non-streaming" +import os +import litellm +from litellm import completion + +os.environ["CHUIZI_API_KEY"] = "" # your Chuizi.AI API key + +messages = [{"content": "What is the capital of France?", "role": "user"}] + +# Claude via Chuizi.AI +response = completion( + model="chuizi/anthropic/claude-sonnet-4-6", + messages=messages +) +print(response) +``` + +### Streaming + +```python showLineNumbers title="Chuizi.AI Streaming" +import os +import litellm +from litellm import completion + +os.environ["CHUIZI_API_KEY"] = "" + +messages = [{"content": "Write a haiku about AI", "role": "user"}] + +response = completion( + model="chuizi/openai/gpt-4.1", + messages=messages, + stream=True +) + +for chunk in response: + print(chunk.choices[0].delta.content or "", end="") +``` + +## Usage - LiteLLM Proxy + +### Config + +```yaml showLineNumbers title="config.yaml" +model_list: + - model_name: claude-sonnet + litellm_params: + model: chuizi/anthropic/claude-sonnet-4-6 + api_key: os.environ/CHUIZI_API_KEY + - model_name: gpt-4.1 + litellm_params: + model: chuizi/openai/gpt-4.1 + api_key: os.environ/CHUIZI_API_KEY + - model_name: deepseek-chat + litellm_params: + model: chuizi/deepseek/deepseek-chat + api_key: os.environ/CHUIZI_API_KEY +``` + +### Start Proxy + +```bash +litellm --config /path/to/config.yaml +``` + +## Available Models + +Models use `provider/model` naming. Some popular models: + +| Model | LiteLLM Route | +|-------|--------------| +| Claude Sonnet 4.6 | `chuizi/anthropic/claude-sonnet-4-6` | +| Claude Opus 4.6 | `chuizi/anthropic/claude-opus-4-6` | +| Claude Haiku 4.5 | `chuizi/anthropic/claude-haiku-4-5` | +| GPT-4.1 | `chuizi/openai/gpt-4.1` | +| o4-mini | `chuizi/openai/o4-mini` | +| Gemini 2.5 Pro | `chuizi/google/gemini-2.5-pro` | +| DeepSeek V3.2 | `chuizi/deepseek/deepseek-chat` | +| DeepSeek R1 | `chuizi/deepseek/deepseek-r1` | + +See the full model list at [chuizi.ai/models](https://chuizi.ai/models). diff --git a/litellm/constants.py b/litellm/constants.py index 1af53b2dae0..865027cff07 100644 --- a/litellm/constants.py +++ b/litellm/constants.py @@ -721,6 +721,7 @@ openai_compatible_endpoints: List = [ "https://nano-gpt.com/api/v1", "https://api.poe.com/v1", "https://llm.chutes.ai/v1/", + "https://api.chuizi.ai/v1", "https://api.v0.dev/v1", "https://api.morphllm.com/v1", "https://api.lambda.ai/v1", @@ -770,6 +771,7 @@ openai_compatible_providers: List = [ "nano-gpt", # Nano-GPT - JSON-configured provider "poe", # Poe - JSON-configured provider "chutes", # Chutes - JSON-configured provider + "chuizi", # Chuizi.AI - unified AI gateway "featherless_ai", "nscale", "nebius", @@ -805,6 +807,7 @@ openai_text_completion_compatible_providers: List = ( "nano-gpt", "poe", "chutes", + "chuizi", "v0", "lambda_ai", "hyperbolic", diff --git a/litellm/litellm_core_utils/get_llm_provider_logic.py b/litellm/litellm_core_utils/get_llm_provider_logic.py index 95bcd4d7186..373f813ac8e 100644 --- a/litellm/litellm_core_utils/get_llm_provider_logic.py +++ b/litellm/litellm_core_utils/get_llm_provider_logic.py @@ -309,6 +309,9 @@ def get_llm_provider( # noqa: PLR0915 elif endpoint == "https://llm.chutes.ai/v1/": custom_llm_provider = "chutes" dynamic_api_key = get_secret_str("CHUTES_API_KEY") + elif endpoint == "https://api.chuizi.ai/v1": + custom_llm_provider = "chuizi" + dynamic_api_key = get_secret_str("CHUIZI_API_KEY") elif endpoint == "https://api.v0.dev/v1": custom_llm_provider = "v0" dynamic_api_key = get_secret_str("V0_API_KEY") diff --git a/litellm/types/utils.py b/litellm/types/utils.py index 3f6e6e5aa5a..0842a7e35be 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -3291,6 +3291,7 @@ class LlmProviders(str, Enum): NANOGPT = "nano-gpt" POE = "poe" CHUTES = "chutes" + CHUIZI = "chuizi" XIAOMI_MIMO = "xiaomi_mimo" LITELLM_AGENT = "litellm_agent" CURSOR = "cursor"