Inferència d'IA

Inici ràpid

Obtín la teua primera resposta en unes poques línies. L'API d'inferència és compatible amb OpenAI, així que pots apuntar qualsevol SDK d'OpenAI a la URL base de davall i autenticar-te amb la teua clau d'API.

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

Instal·lació

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);
RESPOSTA
{
  "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
  }
}

Autenticació

Totes les peticions han d'incloure la teua clau d'API en el header Authorization com a Bearer token.

Genera i gestiona les teues claus d'API des del tauler. Gestiona les claus d'API

Mantín la teua clau d'API en secret. Mai l'exposes en codi del costat del client ni la puges a control de versions.

Header
Authorization: Bearer your-api-key

Chat completions

Genera una resposta del model per a una conversa. Envia una llista de missatges i rep la resposta de l'assistent.

Paràmetres

modelstringobligatori

ID del model a usar.

messagesarrayobligatori

La conversa fins ara, com una llista de missatges.

rolestring

El rol de l'autor del missatge.

systemDefinix el comportament i el context de l'assistent.
userUn missatge de l'usuari final.
assistantUna resposta anterior del model.
toolEl resultat d'una crida a una eina, tornat al model.
contentstring

El contingut de text del missatge.

namestring

Un nom opcional per a distingir participants amb el mateix rol.

temperaturenumberopcional

Temperatura de mostreig entre 0 i 2. Valors més alts fan l'eixida més aleatòria; valors més baixos, més enfocada i determinista.

top_pnumberopcional

Mostreig per nucli: considera només els tokens que formen la massa de probabilitat top_p. Usa este paràmetre o temperature, no els dos.

max_tokensnumberopcional

El nombre màxim de tokens a generar en la resposta.

stopstring | arrayopcional

Fins a quatre seqüències on s'atura la generació. La seqüència de parada no s'inclou en l'eixida.

frequency_penaltynumberopcional

Entre -2 i 2. Els valors positius penalitzen els tokens segons quantes vegades ja han aparegut, reduint la repetició.

presence_penaltynumberopcional

Entre -2 i 2. Els valors positius penalitzen els tokens que ja han aparegut, animant el model a introduir nous temes.

seednumberopcional

Si es definix, el model mostreja de la manera més determinista possible perquè peticions repetides amb els mateixos paràmetres tornen resultats semblants.

nnumberopcional

Quantes respostes generar per petició.

streambooleanopcional

Transmet la resposta com a Server-Sent Events. Consulta Streaming.

response_formatobjectopcional

Restringix el format d'eixida, p. ex. a JSON. Consulta Mode JSON.

toolsarrayopcional

Una llista de funcions que el model pot invocar. Consulta Eines.

chat_template_kwargsobjectopcional

Activa el raonament en esta petició. Consulta Raonament.

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);
RESPOSTA
{
  "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

Posa stream a true per a rebre la resposta com a Server-Sent Events, amb els tokens arribant de manera incremental a mesura que es generen. El stream acaba amb una línia data: [DONE].

Paràmetres

streambooleanobligatori

Posa a true per a transmetre la resposta com a Server-Sent Events.

stream_optionsobjectopcional

Opcions que només apliquen quan es transmet.

include_usageboolean

Emet un fragment final addicional amb l'ús de tokens de tota la petició.

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 ?? "");
}
RESPOSTA
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]

Raonament

Deixa que el model pense abans de respondre. Ve desactivat per defecte: envia chat_template_kwargs amb enable_thinking a true per a activar-lo en una petició. El raonament torna en reasoning, al costat de content i no dins, així que pots mostrar-lo, registrar-lo o ignorar-lo. Es factura com a tokens d'eixida igual que la resta de la resposta, i una resposta raonada pot gastar-ne diverses vegades més.

Paràmetres

chat_template_kwargsobjectobligatori

Arguments extra per a la plantilla de prompt del model. Només s'admet enable_thinking.

enable_thinkingboolean

true li demana al model que raone abans de respondre. Per defecte, 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);
RESPOSTA
{
  "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

Posa response_format a json_object per a forçar que el model emeta JSON sintàcticament vàlid. Indica també al model que produïsca JSON en un missatge de sistema o d'usuari.

Paràmetres

response_formatobjectobligatori

Un objecte que especifica el format que el model ha de produir.

typestring

Posa json_object per a activar el 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));
RESPOSTA
{
  "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
  }
}

Eines

Proporciona una llista de funcions que el model pot invocar. Quan el model decidix usar-ne una, torna la crida en tool_calls en compte d'una resposta de text; tu executes la funció i envies el resultat de tornada com a missatge tool.

Paràmetres

toolsarrayobligatori

Una llista de funcions que el model pot invocar.

typestring

El tipus d'eina. Actualment només s'admet function.

functionobject

La definició de la funció.

namestring

El nom de la funció a invocar.

descriptionstring

Una descripció del que fa la funció, usada pel model per a decidir quan invocar-la.

parametersobject

Els paràmetres de la funció, descrits com un objecte JSON Schema.

tool_choicestring | objectopcional

Controla l'ús d'eines: auto, none, required, o una funció concreta per a forçar-la.

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);
RESPOSTA
{
  "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
  }
}

Errors

Les peticions fallides tornen un codi d'estat HTTP estàndard i un cos JSON amb un objecte error que descriu què ha anat malament.

Codis d'estat

400invalid_request_errorLa petició estava mal formada o un paràmetre no era vàlid.
401invalid_api_keyFalta la clau d'API o no és vàlida.
404model_not_foundEl model sol·licitat no existix o no està disponible per a la teua organització.
429rate_limit_exceededHas superat el teu límit de peticions. Reintenta després d'una breu espera.
500server_errorS'ha produït un error inesperat en processar la petició.
503engine_overloadedEl servei està temporalment sobrecarregat. Reintenta després d'una breu espera.
RESPOSTA
{
  "error": {
    "message": "Incorrect API key provided.",
    "type": "invalid_request_error",
    "param": null,
    "code": "invalid_api_key"
  }
}

Funcionalitats no suportades

Esta API és compatible amb la interfície de chat completions d'OpenAI. Les funcionalitats d'OpenAI següents no estan disponibles.

  • L'API d'Embeddings.
  • API d'Assistants (assistants, threads i runs).
  • Ajust fi (fine-tuning).
  • L'API de Batch.
  • L'API de Files i pujades, i els vector stores.
  • Endpoints d'àudio (síntesi de veu i transcripció).
  • Generació d'imatges.
  • L'API de Moderations.
  • L'API de Realtime.