API v1Local, en tu máquina
Una API de chat, un endpoint.
Envía mensajes a Khary y recibe texto en JSON o en streaming. Una ruta y errores que dicen qué hacer.
curl
curl -X POST https://khary.ai/api/chat \
-H "Content-Type: application/json" \
-d '{"model":"khary-chat","messages":[{"role":"user","content":"Hola"}],"max_tokens":200}'fetch
const res = await fetch("https://khary.ai/api/chat", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ model: "khary-chat", messages: [{ role: "user", content: "Hola" }] }),
});
const { reply } = await res.json();requests
import requests
r = requests.post("https://khary.ai/api/chat",
json={"model": "khary-chat", "messages": [{"role": "user", "content": "Hola"}]})
print(r.json()["reply"])Empieza
Tres pasos hasta tu primera respuesta.
1
Arranca el modelo
En la carpeta Khary AI: python -m llm.serve. Escucha en 127.0.0.1:8766.
Necesita un checkpoint2
Envía la petición
POST a /api/chat con la lista de mensajes.
application/json3
Lee la respuesta
Recibes reply y el uso de tokens, o un flujo de eventos con stream: true.
JSON o Server-Sent EventsPlayground
Pruébalo sin escribir código.
Esta caja llama de verdad a /api/chat y muestra la respuesta tal cual llega.
Referencia
POST /api/chat
Genera la respuesta del asistente para una conversación.
| Campo | Tipo | Descripción |
|---|---|---|
| model | string | Siempre khary-chat. |
| messages | array | De 1 a 40 mensajes con role (user o assistant) y content (hasta 8.000 caracteres). |
| system | string | Opcional. Instrucciones que van antes de la conversación (hasta 2.000 caracteres). |
| max_tokens | integer | De 1 a 480. Por defecto 200. |
| temperature | number | De 0 a 1,5. 0 elige siempre el token más probable. Por defecto 0,7. |
| top_k | integer | Muestrea entre los k tokens más probables. Por defecto 50. |
| stream | boolean | true para recibir la respuesta token a token (Server-Sent Events). Por defecto false. |
streaming
# Con "stream": true la respuesta es text/event-stream:
data: {"delta": "Hola"}
data: {"delta": ", ¿en qué"}
data: {"done": true, "usage": {"prompt_tokens": 7, "completion_tokens": 12}, "ms": 840}Límites
Cuánto puedes pedir.
Límites técnicos del modelo actual. Las peticiones se atienden de una en una.
| Contexto | 512 tokens (se recorta lo más antiguo) |
| Respuesta máxima | 480 tokens |
| Mensajes por petición | 40 |
| Peticiones por minuto | 12 por IP |
| Mensajes al día | 40 por IP (plan Gratis) |
| Concurrencia | 1 generación a la vez |
Errores
Qué significan y qué hacer.
| Código | Qué pasó | Qué hacer |
|---|---|---|
| 400 | La petición no es válida. | Revisa que messages tenga el formato indicado y los rangos de cada campo. |
| 502 | El servidor del modelo no está en marcha. | Inícialo con python -m llm.serve en la carpeta Khary AI. |
| 503 | No hay un modelo entrenado cargado. | Entrena el modelo (python -m llm.train) para que exista checkpoints/latest.pt. |
Estado
Estado en vivo.
Se comprueba cada pocos segundos contra los servicios locales.
Modelo (llm.serve)Comprobando…
Khary-Scout (API)Comprobando…