Qu'est-ce qu'OpenRouter ? Passerelle LLM unifiée
OpenRouter est une passerelle API unifiée : une clé, un endpoint compatible OpenAI, 400+ modèles. Routage dual model/provider, failover, 25+ modèles gratuits, sans markup token.
Prolifération de clés multi-fournisseurs.
Fragmentation SDK.
Pannes mono-fournisseur.
Quota free 50/1000 par jour.
Frais 5,5 % sur crédits ; BYOK 1 M/mois.
OpenRouter vs API directe
| Axe | OpenRouter | Direct |
|---|---|---|
| Clés | Une | Par éditeur |
| Latence | +10–80 ms | Plus basse |
| Conformité | Passage US | Régions dédiées |
Adapté aux prototypes et A/B multi-modèles. Moins adapté : très gros volumes, API exclusives, latence extrême, exigences de résidence des données.
Exemples de code API
Exemples exécutables :
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-3.5-sonnet",
"messages": [
{ "role": "user", "content": "用一句话解释什么是量子计算" }
]
}'import requests
import os
response = requests.post(
url="https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "google/gemini-2.5-pro",
"messages": [
{"role": "user", "content": "帮我写一个快速排序的 Python 实现"}
],
},
)
print(response.json()["choices"][0]["message"]["content"])from openai import OpenAI
import os
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
completion = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
extra_headers={
"HTTP-Referer": "https://kvmnode.com",
"X-Title": "KVMNODE Blog Demo",
},
)
print(completion.choices[0].message.content)import OpenAI from "openai";
const openai = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
});
const completion = await openai.chat.completions.create({
model: "deepseek/deepseek-chat",
messages: [{ role: "user", content: "Explain OpenRouter in one sentence" }],
});
console.log(completion.choices[0].message.content);const stream = await openai.chat.completions.create({
model: "anthropic/claude-3.5-sonnet",
messages: [{ role: "user", content: "写一首关于秋天的短诗" }],
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}{
"model": "anthropic/claude-3.5-sonnet",
"models": [
"anthropic/claude-3.5-sonnet",
"openai/gpt-4o",
"google/gemini-2.5-pro"
],
"route": "fallback",
"messages": [{ "role": "user", "content": "Hello" }]
}curl https://openrouter.ai/api/v1/models \
-H "Authorization: Bearer $OPENROUTER_API_KEY"Six étapes d'intégration
Inscription openrouter.ai
Créer une clé API
Variable d'environnement
Première requête
Streaming
Chaîne fallback
Tarifs, SEO bilingue, KVMNODE production
Trois données citables : pas de markup token, 5,5 % sur crédits / free tier 50/j sans crédit, 1000/j après $10, 20/min / BYOK 1 M req/mois gratuites.
OpenRouter route les modèles ; un hôte macOS 24/7 reste nécessaire pour les agents CLI. KVMNODE Mac Mini cloud — tarifs, commander, aide.