Proxy compatible OpenAI avec repli configurable par clé entre les fournisseurs.
QNP est une passerelle API compatible OpenAI. Pointez n'importe quel SDK OpenAI vers notre URL de base et votre code existant route à travers Anthropic, OpenAI, Google, Mistral, Groq, et plus — avec basculement automatique.
URL de base de production : {url}
Pour le chat, les noms de modèles qnp ou qnp/auto correspondent au premier modèle de votre chaîne de repli. Sinon, QNP utilise une valeur par défaut basée sur l'intention. L'ordre de votre repli s'applique toujours.
Inscrivez-vous sur qnp.ai/login avec Google, Apple, Passkey ou lien magique par email. Vous bénéficierez d'un niveau gratuit avec 50 requêtes par jour.
Allez sur Tableau de bord → Clés API et créez une nouvelle clé. Configurez votre chaîne de fournisseurs. Copiez la clé — elle commence par qnp- et elle n'est affichée qu'une seule fois.
Utilisez n'importe quel SDK compatible OpenAI ou cURL. Changez simplement l'URL de base et la clé API (voir ci-dessous).
Consultez les journaux des requêtes, les coûts et la latence sur la page Tableau de bord → Journaux. Exportez les données en CSV pour analyse.
curl -X POST "https://qnp.ai/api/v1/chat/completions" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-4o-mini","messages":[{"role":"user","content":"Hello!"}]}'Toutes les requêtes API nécessitent une authentification via votre clé QNP. Deux formats d'en-tête sont pris en charge :
Authorization: Bearer YOUR_KEY # or X-API-Key: YOUR_KEY
Par clé API, vous définissez une chaîne de fournisseurs. QNP essaie chacun à tour de rôle jusqu'à ce que l'un renvoie une réponse réussie.
Exemple : OpenAI (principal) → Anthropic (repli 1) → Groq (repli 2). Si OpenAI renvoie 5xx, le trafic passe à Anthropic.
Configurez le repli dans le tableau de bord sous Clés → [votre clé] → Routage.
Sans configuration de repli, la clé utilise les crédits de la plateforme — facturés sur votre compte.
Point de terminaison de chat compatible OpenAI. Prend en charge le streaming, les appels de fonctions et les entrées visuelles.
curl -X POST "https://qnp.ai/api/v1/chat/completions" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-4o-mini","messages":[{"role":"user","content":"Hello!"}]}'from openai import OpenAI
client = OpenAI(
base_url="https://qnp.ai/api/v1",
api_key="YOUR_KEY"
)
response = client.chat.completions.create(
model="openai/gpt-4o-mini", # routes to your fallback chain
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://qnp.ai/api/v1",
apiKey: "YOUR_KEY",
});
const response = await client.chat.completions.create({
model: "openai/gpt-4o-mini", // routes to your fallback chain
messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);Créez des embeddings vectoriels pour le texte — utile pour la recherche, le regroupement et le RAG.
curl -X POST "https://qnp.ai/api/v1/embeddings" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"text-embedding-3-small","input":"The quick brown fox"}'response = client.embeddings.create(
model="text-embedding-3-small",
input="The quick brown fox"
)
print(response.data[0].embedding[:5])Générez des images via DALL-E et autres modèles d'image.
Répertorier les modèles disponibles pour votre clé API.
curl "https://qnp.ai/api/v1/models" \ -H "Authorization: Bearer YOUR_KEY"
QNP prend en charge le streaming par Server-Sent Events (SSE) pour les complétions de chat. Définissez "stream": true dans le corps de votre requête. La réponse est un flux d'événements data: au format OpenAI.
Chaque événement SSE contient un fragment JSON avec le contenu delta. Le flux se termine par data: [DONE].
curl -X POST "https://qnp.ai/api/v1/chat/completions" \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-4o-mini","stream":true,"messages":[{"role":"user","content":"Hello!"}]}'stream = client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[{"role": "user", "content": "Tell me a story"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")Chargement du catalogue de modèles en direct…
Les limites de débit sont appliquées par clé API. Les plafonds par défaut varient selon le niveau :
| Niveau | Requêtes par jour | RPM (par défaut) | Clés API |
|---|---|---|---|
| Gratuit | 50 RPD | 10 RPM | 5 |
| Pro | Illimité | Illimité | Illimité |
Les limites de débit personnalisées par clé (RPM, TPM) sont configurables dans le tableau de bord.
En cas de limitation de débit, l'API retourne 429 Too Many Requests avec un en-tête Retry-After.
Errors follow OpenAI format: { error: { message, type, code } }
| Code | Signification | Ce qu'il faut faire |
|---|---|---|
| 400 | Mauvaise requête | Vérifiez le format du corps de votre requête et les champs requis. |
| 401 | Non autorisé | Vérifiez que votre clé API est valide et incluse dans l'en-tête. |
| 402 | Crédits insuffisants | Rechargez vos crédits dans le tableau de bord ou passez à Pro. |
| 403 | Interdit | La clé n'a pas l'autorisation pour ce point de terminaison, ou l'IP/référent est bloqué. |
| 404 | Non trouvé | Vérifiez l'URL du point de terminaison et le nom du modèle. |
| 429 | Limite de taux | Attendez et réessayez. Consultez l'en-tête Retry-After. Passez à un niveau supérieur pour des limites plus élevées. |
| 500 | Erreur interne du serveur | Réessayez la demande. Si le problème persiste, contactez le support. |
| 502 | Passerelle incorrecte | Erreur du fournisseur en amont. Votre chaîne de repli réessayera automatiquement. |
| 503 | Service indisponible | Fournisseur temporairement indisponible. Le routage de repli gère cette situation. |
Utilisez n'importe quel SDK compatible OpenAI. Changez simplement l'URL de base et votre clé QNP.
from openai import OpenAI
client = OpenAI(
base_url="https://qnp.ai/api/v1",
api_key="YOUR_KEY"
)
response = client.chat.completions.create(
model="openai/gpt-4o-mini", # routes to your fallback chain
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://qnp.ai/api/v1",
apiKey: "YOUR_KEY",
});
const response = await client.chat.completions.create({
model: "openai/gpt-4o-mini", // routes to your fallback chain
messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://qnp.ai/api/v1",
api_key="YOUR_KEY",
model="openai/gpt-4o-mini" # routes to your fallback chain
)
response = llm.invoke("Hello!")
print(response.content)Cline est un assistant de codage alimenté par l'IA pour VS Code. QNP fonctionne comme fournisseur d'API de Cline.
{url}.qnp-).{model} (ou tout autre modèle pris en charge). Passez qnp/auto si vous souhaitez que QNP choisisse dans votre chaîne de repli.Conseil : configurez votre chaîne de fournisseurs de clés API dans Tableau de bord → Clés API. Le modèle qnp/auto utilise le premier modèle de cette chaîne ; s'il échoue, le suivant est automatiquement essayé.
qnp- et est active./v1 (sans slash final).Le script d'installation détecte et configure automatiquement OpenClaw, Claude Code et Hermes Agent. Utilisez QNP comme fournisseur de modèle pour une solution de repli unifiée et BYOK.
Le script d'installation vous demandera de manière interactive votre clé API et votre URL de base.
curl -fsSL https://qnp.ai/setup.sh | bash
input: ["text","image","audio","video"] pour tous les modèles.