Skip to Content
ModelosJev (TypeSafe)Descripción general

Jev

TypeSafe Jev es un modelo de decisión: no genera texto y solo responde a preguntas definidas de antemano. La petición incluye el contenido que se debe evaluar y un conjunto de preguntas; el modelo devuelve para cada pregunta una respuesta estructurada junto con su probabilidad, a partir de la cual el programa puede ejecutar directamente su lógica de ramificación.

Casos de uso

ClaveUse Jev cuando el programa deba ejecutar una lógica distinta según el resultado de la decisión; use un modelo de chat cuando necesite generar texto destinado a la lectura.

Adecuado para:

  • Clasificación y enrutamiento: equipo responsable de un ticket, categoría de intención del usuario.
  • Decisiones de sí o no: si contiene datos personales, si se trata de una solicitud de reembolso, si es una inyección de prompt.
  • Puntuación y ordenación: grado de urgencia, relevancia, intensidad del sentimiento y filtrado de resultados de búsqueda.
  • Control de calidad de las salidas de LLM: si la respuesta es pertinente, si infringe las normas.

No adecuado para:

  • La generación de texto, resúmenes, traducciones o código.
  • Las decisiones sobre imágenes (Jev solo admite texto y JSON como entrada; para imágenes, use GPT-6 Luna).
  • Las preguntas abiertas cuyas respuestas no puedan definirse de antemano como opciones o niveles.

Comparación con el enfoque «modelo de chat + salida JSON»:

JevModelo de chat + salida JSON
Contenido devueltoLimitado a las opciones o niveles definidos de antemanoPuede devolver valores fuera de las opciones; requiere validación adicional
IncertidumbreCada respuesta incluye una probabilidad; choice y score incluyen además la confianzaNormalmente no ofrece probabilidades utilizables
Varias preguntasSe responden en una sola petición, con una entrada comúnDeben agruparse en un mismo prompt o repartirse en varias llamadas
FacturaciónSolo tokens de entrada; la salida no se facturaEntrada y salida facturadas a la tarifa del modelo de chat

Inicio rápido

1. Preparar los datos de conexión: cree una API Key en la consola de OfoxAI  y utilice los datos siguientes:

Datos de conexión
Base URLhttps://api.ofox.ai/v1
ID de modelotypesafe/jev-latestTambién puede escribirse jev-latest
Ruta del endpoint/v1/decisionsPOST, no /v1/chat/completions

2. Instalar el SDK: para realizar la llamada con el SDK oficial de Python de OpenAI, instale una versión que incluya client.decisions:

Terminal
pip install -U openai
AtenciónSi durante la ejecución aparece AttributeError: 'OpenAI' object has no attribute 'decisions', la versión del SDK es demasiado antigua; ejecute el comando anterior para actualizarla (versión openai 3.31.0 verificada). Sin el SDK, la llamada también puede realizarse con el comando cURL siguiente.

3. Realizar la llamada:

quickstart.py
import os from openai import OpenAI client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"]) r = client.decisions.create( model="typesafe/jev-latest", input="Customer message: I was charged twice, nobody has answered my two emails, and I need a refund today.", questions=[{"type": "predicate", "name": "is_frustrated", "instructions": "Is the customer frustrated?"}], ) print(r.answers[0].probability) # 0.98

Ejemplo de respuesta:

{ "model": "typesafe/jev-latest", "answers": [{ "type": "predicate", "name": "is_frustrated", "probability": 0.98 }], "usage": { "prompt_tokens": 302, "completion_tokens": 23, "total_tokens": 325 } }

probability indica la probabilidad de que la respuesta sea «sí»; un valor de 0.98 significa que el modelo considera muy probable que el cliente esté insatisfecho. Para aplicarlo a su propio caso de uso, sustituya input por el contenido real y questions por las preguntas reales.

Tipos de pregunta

Seleccione el tipo de pregunta según la forma del resultado requerido:

Resultado requeridoTipo de preguntaCampos que se deben proporcionarCampos devueltos
Sí o nopredicateLa pregunta; opcionalmente criteria para precisar el significado de «sí» y «no»probability: probabilidad de «sí»
Una opción entre variaschoicechoices: de 2 a 255 opcioneschoice, probabilidad de cada opción, confidence
Un gradoscorelevels: de 2 a 10 niveles, de menor a mayorscore, probabilidad de cada nivel, confidence

Ejemplos: «¿Se trata de una solicitud de reembolso?» corresponde a predicate; «¿Qué equipo debe atender el ticket?», a choice; «¿Cuál es el grado de urgencia?», a score. Las tres preguntas pueden incluirse en la misma petición, que devuelve todas las respuestas a la vez.

Una vez determinado el tipo de pregunta, revise las preguntas y las opciones conforme a Diseño de preguntas.

Errores frecuentes

SíntomaCausaSolución
AttributeError: 'OpenAI' object has no attribute 'decisions'Versión del SDK de OpenAI demasiado antiguaEjecutar pip install -U openai y reintentar
400 endpoint_not_supported, con el mensaje Please use /v1/decisions insteadSe llamó a Jev como modelo de chat mediante /v1/chat/completionsLlamar a /v1/decisions
400 Invalid request payloadSe utilizó el formato nativo de TypeSafe (state, questions como objeto) en /v1/decisionsUtilizar input y questions como array, o llamar a /typesafe/v1/systemone
400 questions are required for decisionquestions está vacíoProporcionar al menos una pregunta
400 question "a" has kind choice and requires criteria optionsUna pregunta choice no incluye choicesAñadir las opciones
400 Too many score levels. Must have at most 10 levels.Una pregunta score tiene más de 10 nivelesCombinar niveles
400 max_tokens_exceededLa entrada supera los 64K tokensDividir los documentos largos o enviar solo las partes pertinentes
400, con input_image y Typesafe cannot read en el mensaje de errorSe envió una imagen a JevQuitar la imagen o utilizar un modelo que admita imágenes
404 model_not_foundID de modelo incorrectoUtilizar typesafe/jev-latest
La petición se completa, pero la respuesta es claramente errónea y con confianza altaLas opciones de choice no cubren la situación realAñadir una opción «ninguna de las anteriores» y completar las descripciones de las opciones; consulte Diseño de preguntas
Las respuestas no incluyen name y no pueden asociarse a las preguntasLas preguntas no definen nameDefinir un name para cada pregunta

La lista completa de errores figura en Decisions API · Errores frecuentes.

Documentación oficial

Preguntas frecuentes

¿Qué diferencia hay entre Jev y un LLM que genera JSON?

Jev responde únicamente dentro de las opciones y niveles proporcionados y no devuelve valores fuera de ese ámbito; cada respuesta incluye una probabilidad, y choice y score incluyen además la confianza, que puede utilizarse directamente para configurar umbrales. El JSON generado por un LLM requiere validación adicional y normalmente no ofrece probabilidades utilizables.

¿Se debe utilizar /v1/decisions o /typesafe/v1/systemone?

Para proyectos nuevos se recomienda /v1/decisions, que puede llamarse directamente con el SDK de OpenAI. Los proyectos que ya utilizan el SDK de TypeSafe o su código de ejemplo oficial pueden utilizar /typesafe/v1/systemone modificando únicamente la URL base.

¿Cómo se factura Jev?

Solo se facturan los tokens de entrada; la salida no se factura. Los precios figuran en la página del modelo. Las preguntas de una misma petición comparten la misma entrada, por lo que agruparlas en una sola petición permite reducir costes.

¿Una confianza alta implica que la respuesta sea necesariamente correcta?

No necesariamente. Cuando las opciones no cubren la situación real, el modelo elige igualmente una de las opciones existentes, posiblemente con una confianza alta. Por ello, las preguntas choice deben incluir una opción de reserva como «ninguna de las anteriores», y los resultados deben validarse con muestras etiquetadas manualmente.

¿Qué significa un score de 1.43?

El score es un valor ponderado por la probabilidad de cada nivel, y los niveles se numeran a partir de 0. El valor 1.43 se sitúa entre el nivel 1 y el nivel 2, más cerca del nivel 1; la probabilidad de cada nivel figura en probabilities.

¿Se admiten contenidos en idiomas distintos del inglés?

Sí. En las pruebas, un contenido en chino se procesó correctamente con preguntas redactadas tanto en chino como en inglés.

¿Jev admite imágenes?

No. Jev solo acepta texto y JSON. Para decisiones sobre imágenes, utilice GPT-6 Luna (openai/gpt-6-luna), que admite imágenes como entrada, con el mismo formato de petición.

Última actualización: