SDKs
OpenAI, Vercel AI SDK, Mastra, Python — alle drop-in.
Alles spricht das OpenAI-Schema. Behalte dein Framework und tausche nur die baseURL — oder nutze das offizielle @cleverrouter/sdk für typisierte Modell-IDs und Adapter.
import OpenAI from 'openai';
export const client = new OpenAI({
apiKey: process.env.CLEVERROUTER_API_KEY!,
baseURL: 'https://cleverouter.eu/v1',
defaultHeaders: {
'X-CleverRouter-Strategy': 'default',
},
});
const completion = await client.chat.completions.create({
model: 'mistral/mistral-small-3.2',
messages: [{ role: 'user', content: 'Bonjour' }],
});Auch LangChain und LlamaIndex sind kompatibel — setze openai_api_base bzw. api_base auf https://cleverouter.eu/v1.
bun add ai @cleverrouter/sdkimport { createCleverRouterAI } from '@cleverrouter/sdk/ai-sdk';
export const cr = createCleverRouterAI({
apiKey: process.env.CLEVERROUTER_API_KEY!,
});import { generateText, streamText } from 'ai';
import { cr } from './provider';
const { text } = await generateText({
model: cr('mistral/mistral-small-3.2'),
prompt: 'Hallo aus der EU.',
});
// oder gestreamt
const result = await streamText({
model: cr('mistral/mistral-small-3.2'),
prompt: 'Schreib einen Haiku.',
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}generateObject mit Zod, tool(), streamUI — alles funktioniert wie im Vercel-AI-SDK üblich.
bun add @mastra/core @cleverrouter/sdkimport { Agent } from '@mastra/core/agent';
import { createCleverRouterMastra } from '@cleverrouter/sdk/mastra';
const cr = createCleverRouterMastra({
apiKey: process.env.CLEVERROUTER_API_KEY!,
});
export const supportAgent = new Agent({
name: 'support',
model: cr('mistral/mistral-large-2'),
instructions: 'Du bist Customer-Support. Antworte präzise, immer auf Deutsch.',
});Memory, Tools und Workflows sind unverändert — Mastra ruft CleverRouter genauso auf wie OpenAI.
uv add openaiimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["CLEVERROUTER_API_KEY"],
base_url="https://cleverouter.eu/v1",
default_headers={"X-CleverRouter-Strategy": "default"},
)
completion = client.chat.completions.create(
model="mistral/mistral-small-3.2",
messages=[{"role": "user", "content": "Hallo aus der EU."}],
)Async-Variante mit AsyncOpenAI, Streaming mit stream=True — identisch zur offiziellen OpenAI-Doku.
Strategie pro Client
defaultHeaders (TS) bzw. default_headers (Python) ist der einfachste Weg, eine Routing-Strategie global zu setzen. Pro Request kann der Header dann gezielt überschrieben werden.