I keep seeing people ask "how do I try Chinese LLMs" and then bounce off because signup requires a Chinese phone number and RMB payment. Here's the shortcut I use — a single OpenAI-compatible endpoint that routes to all the major ones.
What You'll Be Able to Do
By the end of this, you'll call DeepSeek-V4 Pro, Qwen3 235B, Kimi 2.6, and MiniMax 2.7 using code you probably already have — the standard OpenAI Python SDK.
Step 1: Get an API Key
Sign up at www.novapai.ai. New accounts get $10 in free credits — enough to run everything in this tutorial several times over.
Step 2: Install the SDK
bashpip install openai
That's the only dependency. No provider-specific SDKs needed.
Step 3: Point It at the Gateway
pythonfrom openai import OpenAI
client = OpenAI(
base_url="https://www.novapai.ai/v1",
api_key="nv-your-key-here"
)
This one change is the entire migration. Everything else is standard OpenAI SDK usage.
Step 4: Call Any Model
pythonresponse = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{"role": "system", "content": "You are a senior Python developer."},
{"role": "user", "content": "Write a decorator that retries a function 3 times with exponential backoff."}
]
)
print(response.choices[0].message.content)
Swap the model string and you're calling a different provider entirely:
pythonmodels_to_try = ["deepseek-v4-pro", "qwen3-235b", "kimi-2.6", "minimax-2.7"]
for model in models_to_try:
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": "Explain async/await in 3 sentences."}]
)
print(f"\n--- {model} ---")
print(resp.choices[0].message.content)
Step 5: Streaming (If You Need It)
pythonstream = client.chat.completions.create(
model="qwen3-235b",
messages=[{"role": "user", "content": "Write a haiku about distributed systems."}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Works exactly like it does with OpenAI directly — no special handling required.
Step 6: Using the Anthropic Format Instead
If your codebase is built around Claude's message format, the same endpoint accepts that too:
pythonimport requests
response = requests.post(
"https://www.novapai.ai/v1/chat/completions",
headers={"Authorization": "Bearer nv-your-key-here"},
json={
"model": "kimi-2.6",
"messages": [{"role": "user", "content": "Summarize the CAP theorem in 2 sentences."}]
}
)
print(response.json())
You don't have to pick one format for your whole app — both work at the same endpoint.
Quick Reference: Which Model for What
Based on what I've used each for:
ModelGood fordeepseek-v4-proCode generation, refactoring, technical reasoningqwen3-235bGeneral-purpose tasks, multilingual, structured JSON outputkimi-2.6Long-context work — summarizing large documents (150K+ tokens)minimax-2.7Low-latency tasks — classification, quick responses
A Minimal Router (Optional but Useful)
If you're calling multiple models based on task type, this is the pattern I use:
pythonROUTING = {
"code": "deepseek-v4-pro",
"long_context": "kimi-2.6",
"fast": "minimax-2.7",
"general": "qwen3-235b",
}
def call(task_type: str, prompt: str):
model = ROUTING.get(task_type, "qwen3-235b")
return client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}]
).choices[0].message.content
What This Doesn't Do
Worth being upfront: this is a gateway, not a hosting service. You're not fine-tuning models here, and the model catalog is focused on a handful of leading Chinese LLMs rather than the hundreds you'd find on a broader aggregator. If you need that breadth, look elsewhere. If you specifically want clean access to DeepSeek, Qwen, Kimi, and MiniMax without the usual signup friction, this is built for exactly that.
Try It
$10 in free credits at www.novapai.ai is enough to run every example above multiple times. Base URL is https://www.novapai.ai/v1 — same endpoint for both API access and account management.
If you build a router or benchmark with this, curious to hear what you find.
Top comments (0)