Referencia
Jev API Docs
Referencia del endpoint de decisión Jev en este sitio. Jev es el modelo System One de TypeSafe AI; este sitio es un servicio de API independiente que aloja el acceso a él. Envía un estado y un mapa de preguntas y obtén una respuesta tipada para cada una.
Actualizado
Endpoint
Envía POST /api/v1/decisions en este host. No hay ruta chat-completions ni respuesta en streaming. GET /api/v1/models lista el id del modelo.
POST https://jev-api.org/api/v1/decisions
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonAutenticación
Pon la clave del panel en Authorization: Bearer. Una clave ausente o rechazada devuelve 401. El playground crea una clave de la cuenta al ejecutar.
Inicio rápido
Pon JEV_API_KEY a una clave de tu panel y envía la solicitud de abajo. Las cuentas nuevas reciben 2 créditos, suficiente para 2 llamadas con éxito.
curl https://jev-api.org/api/v1/decisions \
-H "Authorization: Bearer $JEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": "Thanks for the refund. Still annoyed it took three emails.",
"questions": {
"sentiment": {
"type": "choice",
"instructions": "What is the overall sentiment of this message?",
"criteria": {
"positive": "Satisfied or thankful overall.",
"mixed": "Both satisfied and unhappy.",
"negative": "Unhappy overall."
}
},
"needs_follow_up": {
"type": "noul",
"instructions": "Should a person reply to this message?"
}
}
}'Cuerpo de la solicitud
model es jev-1.13 o jev-latest. state es una cadena, objeto JSON o array de texto, hasta 60,000 caracteres. questions es un mapa de 1 a 6 ids snake_case. El id es solo la etiqueta bajo la que vuelve tu respuesta, no una pregunta. La pregunta real va en instructions, como texto de 1 a 2,000 caracteres.
{
"model": "jev-1.13",
"state": "Thanks for the refund. Still annoyed it took three emails.",
"questions": {
"sentiment": {
"type": "choice",
"instructions": "What is the overall sentiment of this message?",
"criteria": {
"positive": "Satisfied or thankful overall.",
"mixed": "Both satisfied and unhappy.",
"negative": "Unhappy overall."
}
},
"needs_follow_up": {
"type": "noul",
"instructions": "Should a person reply to this message?"
}
}
}Tipos de pregunta
Noul
type noul solo necesita instructions. El campo noul es la probabilidad de 0 a 1 de que la afirmación sea cierta. No hay un campo confidence aparte. Si envías criteria en una pregunta noul, este endpoint la ignora.
Choice
type choice necesita instructions y criteria: un objeto de 2 a 8 ids snake_case mapeados a descripciones de hasta 300 caracteres. La respuesta incluye choice, probabilities de cada opción y confidence.
Score
type score necesita instructions y criteria como un array ordenado de 2 a 10 niveles, el más bajo primero. La respuesta incluye score, legend, probabilities y confidence.
Respuesta
Un cuerpo correcto tiene model, answers con tus ids de pregunta, usage con input_tokens y output_tokens, y credits_used. model informa jev-1.13 aunque envíes jev-latest. Abajo hay una respuesta de ejemplo a la solicitud del inicio rápido, con usage omitido.
{
"model": "jev-1.13",
"answers": {
"sentiment": {
"type": "choice",
"choice": "mixed",
"probabilities": { "mixed": 0.79, "negative": 0.2, "positive": 0.01 },
"confidence": 0.61
},
"needs_follow_up": { "type": "noul", "noul": 0.83 }
},
"credits_used": 1
}Cómo leer probabilidades y confidence
Noul es la probabilidad de que la afirmación en instructions sea cierta. Choice y Score devuelven una probabilidad por opción o nivel, más confidence.
El segundo es la señal para pasar a una persona. Cuando confidence es bajo o dos opciones están cerca, envía el caso a una persona o haz una pregunta más concreta. No bajes el umbral antes de mirar esos casos ajustados.
Límites
| Elemento | Este endpoint |
|---|---|
| Endpoint | POST /api/v1/decisions, clave Bearer |
| Modelo | jev-1.13 (jev-latest es un alias) |
| Preguntas por llamada | 1 a 6 |
| Opciones de Choice | 2 a 8 |
| Niveles de Score | 2 a 10, el más bajo primero |
| State | Cadena, objeto JSON o array, hasta 60,000 caracteres |
| Instructions | Texto, de 1 a 2,000 caracteres |
| Facturación | 1 crédito por llamada con éxito; las fallidas son gratis |
| Streaming | No disponible |
Diferencias con la API de TypeSafe
TypeSafe AI sirve Jev en POST https://api.typesafe.ai/v1/systemone con una clave de TypeSafe y factura por token de entrada. El cuerpo de la solicitud aquí tiene la misma forma: model, state y questions de tipo noul, choice o score. Lo que cambia:
- Ruta y clave: POST /api/v1/decisions en jev-api.org, con una clave del panel de este sitio. Las claves de TypeSafe no funcionan aquí, y las de este sitio no funcionan en TypeSafe.
- Id del modelo: envía jev-1.13 o jev-latest. Un id versionado como jev-1.13.0 devuelve 422.
- Límites: de 1 a 6 preguntas por llamada y de 2 a 8 opciones de Choice. TypeSafe documenta hasta 255 opciones de Choice.
- Campos: instructions debe ser texto y cada opción de Choice necesita una descripción. TypeSafe también acepta instructions como objeto o array y descripciones de opción null.
- Facturación: 1 crédito por llamada con éxito, sea cual sea el número de tokens.
Errores
- 401 — clave ausente o rechazada.
- 402 — la clave es válida y el saldo no cubre la llamada. Un fallo upstream no usa un crédito.
- 422 — el cuerpo no pasó la validación. El mensaje nombra el campo.
- 429 — el servicio de decisión está limitado. Reintenta más tarde.
- 502 — el servicio no devolvió respuestas. No se usa un crédito.
Id del modelo
Esta API sirve jev-1.13. Envía ese id si un umbral depende de una distribución. En esta API, jev-latest es un alias del mismo id.