Referencia
Chat completions
POST /chat/completions: parámetros, respuesta y ejemplos.
Genera la respuesta de Sabiuco a una conversación.
http
POST https://sabiuco.app/api/v1/chat/completionsParámetros del cuerpo (JSON)
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
model | texto | sí | sabiuco, sabiuco-rapido o el id de un asistente tuyo (asst_…). |
messages | lista | sí | La conversación, del mensaje más antiguo al más reciente (máx. 2.000). |
stream | booleano | no | true para recibir la respuesta en trozos. Ver Streaming. |
stream_options.include_usage | booleano | no | Con stream, añade al final un trozo con el consumo. |
max_tokens / max_completion_tokens | entero | no | Tope de tokens de salida, razonamiento incluido. Por defecto 16.384; máximo 524.288. Para respuestas largas usa stream (ver Límites y cuotas). |
temperature | número | no | De 0 a 2. Más bajo es más preciso y repetible; más alto, más creativo. Por defecto 1. |
top_p | número | no | Entre 0 (excluido) y 1. Por defecto 0,95. Ajusta temperature o top_p, no los dos. |
reasoning_effort | texto | no | "none" o "minimal" desactivan el razonamiento; cualquier otro valor lo activa. Si no lo envías, decide el modelo. |
Los parámetros que no aparecen en la tabla se ignoran. n distinto de 1 y tools (llamadas a funciones) todavía no están disponibles y devuelven 400.
Mensajes
Cada mensaje es un objeto con role y content:
role | Para qué sirve |
|---|---|
system | Instrucciones de comportamiento: tono, formato, reglas. developer se acepta como sinónimo. |
user | Lo que dice la persona usuaria. Puede incluir imágenes. |
assistant | Respuestas anteriores de Sabiuco, para mantener el contexto. |
content puede ser texto o una lista de partes:
JSON
{
"role": "user",
"content": [
{ "type": "text", "text": "¿Qué pone en este cartel?" },
{ "type": "image_url", "image_url": { "url": "https://ejemplo.com/cartel.jpg" } }
]
}Respuesta
JSON
{
"id": "chatcmpl-hx…",
"object": "chat.completion",
"created": 1790264396,
"model": "sabiuco",
"choices": [
{ "index": 0, "message": { "role": "assistant", "content": "…" }, "finish_reason": "stop" }
],
"usage": {
"prompt_tokens": 262,
"completion_tokens": 44,
"total_tokens": 306,
"completion_tokens_details": { "reasoning_tokens": 30 }
}
}| Campo | Descripción |
|---|---|
id | Identificador de la respuesta. También llega en la cabecera x-request-id; inclúyelo si contactas con soporte. |
model | El modelo que pediste. |
choices[0].message.content | El texto generado. Nunca incluye el razonamiento interno. |
choices[0].finish_reason | stop si terminó con normalidad; length si llegó a max_tokens. |
usage.prompt_tokens | Tokens de entrada, contando las instrucciones del asistente si lo usas. |
usage.completion_tokens | Tokens de salida, razonamiento incluido. |
usage.completion_tokens_details.reasoning_tokens | Cuántos de los de salida fueron de razonamiento. |
Ejemplo completo
Python
from openai import OpenAI
cliente = OpenAI(base_url="https://sabiuco.app/api/v1", api_key="hx_...")
r = cliente.chat.completions.create(
model="sabiuco",
temperature=0.3,
max_tokens=800,
messages=[
{"role": "system", "content": "Eres un profesor de física. Explica con ejemplos cotidianos."},
{"role": "user", "content": "¿Por qué el cielo es azul?"},
],
)
print(r.choices[0].message.content)
print("Tokens:", r.usage.total_tokens)Identidad del modelo
Sabiuco se presenta siempre como Sabiuco y responde en el idioma de quien le escribe. Si usas un asistente propio, sus instrucciones se aplican antes que las de tus mensajes system.