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.
https://api.nebux.cloud/v1Instal·lació
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
}
}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.
Authorization: Bearer your-api-keyChat completions
Genera una resposta del model per a una conversa. Envia una llista de missatges i rep la resposta de l'assistent.
Paràmetres
modelstringobligatoriID del model a usar.
messagesarrayobligatoriLa conversa fins ara, com una llista de missatges.
rolestringEl 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.contentstringEl contingut de text del missatge.
namestringUn nom opcional per a distingir participants amb el mateix rol.
temperaturenumberopcionalTemperatura 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_pnumberopcionalMostreig 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_tokensnumberopcionalEl nombre màxim de tokens a generar en la resposta.
stopstring | arrayopcionalFins a quatre seqüències on s'atura la generació. La seqüència de parada no s'inclou en l'eixida.
frequency_penaltynumberopcionalEntre -2 i 2. Els valors positius penalitzen els tokens segons quantes vegades ja han aparegut, reduint la repetició.
presence_penaltynumberopcionalEntre -2 i 2. Els valors positius penalitzen els tokens que ja han aparegut, animant el model a introduir nous temes.
seednumberopcionalSi es definix, el model mostreja de la manera més determinista possible perquè peticions repetides amb els mateixos paràmetres tornen resultats semblants.
nnumberopcionalQuantes respostes generar per petició.
streambooleanopcionalTransmet la resposta com a Server-Sent Events. Consulta Streaming.
response_formatobjectopcionalRestringix el format d'eixida, p. ex. a JSON. Consulta Mode JSON.
toolsarrayopcionalUna llista de funcions que el model pot invocar. Consulta Eines.
chat_template_kwargsobjectopcionalActiva el raonament en esta petició. Consulta Raonament.
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
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
streambooleanobligatoriPosa a true per a transmetre la resposta com a Server-Sent Events.
stream_optionsobjectopcionalOpcions que només apliquen quan es transmet.
include_usagebooleanEmet un fragment final addicional amb l'ús de tokens de tota la petició.
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]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_kwargsobjectobligatoriArguments extra per a la plantilla de prompt del model. Només s'admet enable_thinking.
enable_thinkingbooleantrue li demana al model que raone abans de respondre. Per defecte, 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
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_formatobjectobligatoriUn objecte que especifica el format que el model ha de produir.
typestringPosa json_object per a activar el 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
}
}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
toolsarrayobligatoriUna llista de funcions que el model pot invocar.
typestringEl tipus d'eina. Actualment només s'admet function.
functionobjectLa definició de la funció.
namestringEl nom de la funció a invocar.
descriptionstringUna descripció del que fa la funció, usada pel model per a decidir quan invocar-la.
parametersobjectEls paràmetres de la funció, descrits com un objecte JSON Schema.
tool_choicestring | objectopcionalControla l'ús d'eines: auto, none, required, o una funció concreta per a forçar-la.
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
}
}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.{
"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.