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.

URL de base
https://api.nebux.cloud/v1

Installation

index.ts
npm install openai
index.ts
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);
RÉPONSE
{
  "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.

Header
Authorization: Bearer your-api-key

Chat 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

modelstringobligatoire

ID du modèle à utiliser.

messagesarrayobligatoire

La conversation jusqu'ici, sous forme de liste de messages.

rolestring

Le 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.
contentstring

Le contenu textuel du message.

namestring

Un nom facultatif pour distinguer les participants ayant le même rôle.

temperaturenumberfacultatif

Tempé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_tokensnumberfacultatif

Le nombre maximal de tokens à générer dans la réponse.

stopstring | arrayfacultatif

Jusqu'à 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_penaltynumberfacultatif

Entre -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_penaltynumberfacultatif

Entre -2 et 2. Les valeurs positives pénalisent les tokens déjà apparus, ce qui incite le modèle à aborder de nouveaux sujets.

seednumberfacultatif

S'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.

nnumberfacultatif

Nombre de réponses à générer par requête.

streambooleanfacultatif

Transmet la réponse sous forme de Server-Sent Events. Voir Streaming.

response_formatobjectfacultatif

Contraint le format de sortie, p. ex. à du JSON. Voir Mode JSON.

toolsarrayfacultatif

Une liste de fonctions que le modèle peut appeler. Voir Outils.

chat_template_kwargsobjectfacultatif

Active le raisonnement pour cette requête. Voir Raisonnement.

index.ts
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);
RÉPONSE
{
  "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

streambooleanobligatoire

Définissez-le sur true pour transmettre la réponse sous forme de Server-Sent Events.

stream_optionsobjectfacultatif

Options 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.

index.ts
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 ?? "");
}
RÉPONSE
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_kwargsobjectobligatoire

Arguments supplémentaires pour le gabarit de prompt du modèle. Seul enable_thinking est pris en charge.

enable_thinkingboolean

true demande au modèle de raisonner avant de répondre. Par défaut, false.

index.ts
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);
RÉPONSE
{
  "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_formatobjectobligatoire

Un objet qui précise le format que le modèle doit produire.

typestring

Définissez-le sur json_object pour activer le mode JSON.

index.ts
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));
RÉPONSE
{
  "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

toolsarrayobligatoire

Une liste de fonctions que le modèle peut appeler.

typestring

Le type d'outil. Pour l'instant, seul function est pris en charge.

functionobject

La définition de la fonction.

namestring

Le nom de la fonction à appeler.

descriptionstring

Une description de ce que fait la fonction, dont le modèle se sert pour décider quand l'appeler.

parametersobject

Les paramètres de la fonction, décrits sous forme d'objet JSON Schema.

tool_choicestring | objectfacultatif

Contrôle l'usage des outils : auto, none, required, ou une fonction précise à imposer.

index.ts
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);
RÉPONSE
{
  "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.
RÉPONSE
{
  "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.