Inférence d'IA
Démarrage rapide
Obtenez votre première réponse en quelques lignes. L'API d'inférence est compatible avec OpenAI : vous pouvez donc faire pointer n'importe quel SDK OpenAI vers l'URL de base ci-dessous et vous authentifier avec votre clé API.
https://api.nebux.cloud/v1Installation
npm install openaiimport OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key",
baseURL: "https://api.nebux.cloud/v1",
});
const completion = await client.chat.completions.create({
model: "qwen3-14b",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Recommend me a book" },
{ role: "assistant", content: "Try The Shadow of the Wind" },
{ role: "user", content: "And a similar one?" },
],
});
console.log(completion.choices[0].message.content);{
"id": "chatcmpl-8f3a2b1c9d",
"object": "chat.completion",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "If you liked it, try Nada, by Carmen Laforet."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 47,
"completion_tokens": 13,
"total_tokens": 60
}
}Authentification
Toutes les requêtes doivent inclure votre clé API dans l'en-tête Authorization, sous forme de token Bearer.
Générez et gérez vos clés API depuis le tableau de bord. Gérer les clés API
Gardez votre clé API secrète. Ne l'exposez jamais dans du code côté client et ne l'ajoutez jamais à votre gestionnaire de versions.
Authorization: Bearer your-api-keyChat completions
Génère une réponse du modèle pour une conversation. Envoyez une liste de messages et recevez la réponse de l'assistant.
Paramètres
modelstringobligatoireID du modèle à utiliser.
messagesarrayobligatoireLa conversation jusqu'ici, sous forme de liste de messages.
rolestringLe rôle de l'auteur du message.
systemDéfinit le comportement et le contexte de l'assistant.userUn message de l'utilisateur final.assistantUne réponse précédente du modèle.toolLe résultat d'un appel d'outil, renvoyé au modèle.contentstringLe contenu textuel du message.
namestringUn nom facultatif pour distinguer les participants ayant le même rôle.
temperaturenumberfacultatifTempérature d'échantillonnage, entre 0 et 2. Des valeurs plus élevées rendent la sortie plus aléatoire ; des valeurs plus basses, plus ciblée et déterministe.
top_pnumberfacultatifÉchantillonnage par noyau : ne considère que les tokens qui composent la masse de probabilité top_p. Utilisez ce paramètre ou temperature, pas les deux.
max_tokensnumberfacultatifLe nombre maximal de tokens à générer dans la réponse.
stopstring | arrayfacultatifJusqu'à quatre séquences sur lesquelles la génération s'arrête. La séquence d'arrêt n'est pas incluse dans la sortie.
frequency_penaltynumberfacultatifEntre -2 et 2. Les valeurs positives pénalisent les tokens selon le nombre de fois où ils sont déjà apparus, ce qui réduit les répétitions.
presence_penaltynumberfacultatifEntre -2 et 2. Les valeurs positives pénalisent les tokens déjà apparus, ce qui incite le modèle à aborder de nouveaux sujets.
seednumberfacultatifS'il est défini, le modèle échantillonne de la façon la plus déterministe possible, pour que des requêtes répétées avec les mêmes paramètres renvoient des résultats similaires.
nnumberfacultatifNombre de réponses à générer par requête.
streambooleanfacultatifTransmet la réponse sous forme de Server-Sent Events. Voir Streaming.
response_formatobjectfacultatifContraint le format de sortie, p. ex. à du JSON. Voir Mode JSON.
toolsarrayfacultatifUne liste de fonctions que le modèle peut appeler. Voir Outils.
chat_template_kwargsobjectfacultatifActive le raisonnement pour cette requête. Voir Raisonnement.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key",
baseURL: "https://api.nebux.cloud/v1",
});
const completion = await client.chat.completions.create({
model: "qwen3-14b",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Recommend me a book" },
{ role: "assistant", content: "Try The Shadow of the Wind" },
{ role: "user", content: "And a similar one?" },
],
});
console.log(completion.choices[0].message.content);{
"id": "chatcmpl-8f3a2b1c9d",
"object": "chat.completion",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "If you liked it, try Nada, by Carmen Laforet."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 47,
"completion_tokens": 13,
"total_tokens": 60
}
}Streaming
Définissez stream sur true pour recevoir la réponse sous forme de Server-Sent Events : les tokens arrivent progressivement, au fur et à mesure de leur génération. Le stream se termine par une ligne data: [DONE].
Paramètres
streambooleanobligatoireDéfinissez-le sur true pour transmettre la réponse sous forme de Server-Sent Events.
stream_optionsobjectfacultatifOptions qui ne s'appliquent qu'en streaming.
include_usagebooleanÉmet un fragment final supplémentaire avec l'usage de tokens de toute la requête.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key",
baseURL: "https://api.nebux.cloud/v1",
});
const stream = await client.chat.completions.create({
model: "qwen3-14b",
messages: [{ role: "user", content: "Which running shoes do you recommend?" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}data: {
"id": "chatcmpl-8f3a2b1c9d",
"object": "chat.completion.chunk",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [{ "index": 0, "delta": { "role": "assistant" }, "finish_reason": null }]
}
data: {
"id": "chatcmpl-8f3a2b1c9d",
"object": "chat.completion.chunk",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [{ "index": 0, "delta": { "content": "For asphalt," }, "finish_reason": null }]
}
data: {
"id": "chatcmpl-8f3a2b1c9d",
"object": "chat.completion.chunk",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [{ "index": 0, "delta": { "content": " a neutral shoe with good cushioning" }, "finish_reason": null }]
}
data: {
"id": "chatcmpl-8f3a2b1c9d",
"object": "chat.completion.chunk",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [{ "index": 0, "delta": {}, "finish_reason": "stop" }]
}
data: [DONE]Raisonnement
Laissez le modèle réfléchir avant de répondre. Le raisonnement est désactivé par défaut : envoyez chat_template_kwargs avec enable_thinking à true pour l'activer sur une requête. Il revient dans reasoning, à côté de content et non à l'intérieur : vous pouvez donc l'afficher, le journaliser ou l'ignorer. Il est facturé en tokens de sortie comme le reste de la réponse, et une réponse raisonnée peut en consommer plusieurs fois plus.
Paramètres
chat_template_kwargsobjectobligatoireArguments supplémentaires pour le gabarit de prompt du modèle. Seul enable_thinking est pris en charge.
enable_thinkingbooleantrue demande au modèle de raisonner avant de répondre. Par défaut, false.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key",
baseURL: "https://api.nebux.cloud/v1",
});
const res = await client.chat.completions.create({
model: "qwen3-14b",
messages: [
{ role: "user", content: "A coffee is 1.20. What are 7 with 15% off?" },
],
// chat_template_kwargs is outside the OpenAI library's types,
// so it travels as an extra request parameter.
// The other option is calling POST https://api.nebux.cloud/v1/chat/completions
// directly.
// @ts-expect-error
chat_template_kwargs: {"enable_thinking": true},
});
console.log(res.choices[0].message.content);{
"id": "chatcmpl-6b1d05e37a",
"object": "chat.completion",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"reasoning": "7 x 1.20 = 8.40. A 15% discount leaves 85%, so 8.40 x 0.85 = 7.14.",
"content": "7.14 EUR"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 22,
"completion_tokens": 61,
"total_tokens": 83
}
}Mode JSON
Définissez response_format sur json_object pour contraindre le modèle à émettre du JSON syntaxiquement valide. Demandez aussi au modèle de produire du JSON dans un message système ou utilisateur.
Paramètres
response_formatobjectobligatoireUn objet qui précise le format que le modèle doit produire.
typestringDéfinissez-le sur json_object pour activer le mode JSON.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key",
baseURL: "https://api.nebux.cloud/v1",
});
const completion = await client.chat.completions.create({
model: "qwen3-14b",
messages: [
{ role: "system", content: "Classify each comment as good or bad, keeping its id. Reply as JSON." },
{ role: "user", content: "1: Great! 2: Awful 3: Good 4: Slow" },
],
response_format: { type: "json_object" },
});
console.log(JSON.parse(completion.choices[0].message.content));{
"id": "chatcmpl-2a7c4e9f10",
"object": "chat.completion",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "{\"good\": [{\"id\": 1, \"comment\": \"Great!\"}, {\"id\": 3, \"comment\": \"Good\"}], \"bad\": [{\"id\": 2, \"comment\": \"Awful\"}, {\"id\": 4, \"comment\": \"Slow\"}]}"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 58,
"completion_tokens": 51,
"total_tokens": 109
}
}Outils
Fournissez une liste de fonctions que le modèle peut appeler. Quand le modèle décide d'en utiliser une, il renvoie l'appel dans tool_calls au lieu d'une réponse textuelle ; vous exécutez la fonction et vous renvoyez le résultat dans un message tool.
Paramètres
toolsarrayobligatoireUne liste de fonctions que le modèle peut appeler.
typestringLe type d'outil. Pour l'instant, seul function est pris en charge.
functionobjectLa définition de la fonction.
namestringLe nom de la fonction à appeler.
descriptionstringUne description de ce que fait la fonction, dont le modèle se sert pour décider quand l'appeler.
parametersobjectLes paramètres de la fonction, décrits sous forme d'objet JSON Schema.
tool_choicestring | objectfacultatifContrôle l'usage des outils : auto, none, required, ou une fonction précise à imposer.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key",
baseURL: "https://api.nebux.cloud/v1",
});
const completion = await client.chat.completions.create({
model: "qwen3-14b",
messages: [{ role: "user", content: "What's the weather in València?" }],
tools: [
{
type: "function",
function: {
name: "get_weather",
description: "Get the current weather for a location",
parameters: {
type: "object",
properties: { location: { type: "string" } },
required: ["location"],
},
},
},
],
});
console.log(completion.choices[0].message.tool_calls);{
"id": "chatcmpl-5b1d8e2a34",
"object": "chat.completion",
"created": 1719763200,
"model": "qwen3-14b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "call_a1b2c3",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\": \"València\"}"
}
}
]
},
"finish_reason": "tool_calls"
}
],
"usage": {
"prompt_tokens": 82,
"completion_tokens": 19,
"total_tokens": 101
}
}Erreurs
Les requêtes en échec renvoient un code d'état HTTP standard et un corps JSON contenant un objet error qui décrit ce qui s'est mal passé.
Codes d'état
400invalid_request_errorLa requête était mal formée ou un paramètre n'était pas valide.401invalid_api_keyLa clé API est absente ou non valide.404model_not_foundLe modèle demandé n'existe pas ou n'est pas disponible pour votre organisation.429rate_limit_exceededVous avez dépassé votre limite de requêtes. Réessayez après une courte attente.500server_errorUne erreur inattendue s'est produite pendant le traitement de la requête.503engine_overloadedLe service est temporairement surchargé. Réessayez après une courte attente.{
"error": {
"message": "Incorrect API key provided.",
"type": "invalid_request_error",
"param": null,
"code": "invalid_api_key"
}
}Fonctionnalités non prises en charge
Cette API est compatible avec l'interface chat completions d'OpenAI. Les fonctionnalités OpenAI suivantes ne sont pas disponibles.
- L'API Embeddings.
- L'API Assistants (assistants, threads et runs).
- L'ajustement fin (fine-tuning).
- L'API Batch.
- L'API Files et les envois de fichiers, ainsi que les vector stores.
- Les endpoints audio (synthèse vocale et transcription).
- La génération d'images.
- L'API Moderations.
- L'API Realtime.