Decisiones
Decisiones (Jev)
Haz preguntas tipadas sobre tus datos y obtén respuestas con las que tu código puede actuar: la probabilidad de que sea sí, una opción de un conjunto o un punto en una escala, con probabilidades calibradas, normalmente en menos de un segundo. Se sirve en la propia API de TypeSafe, así que sus SDK funcionan sin cambios.
/v1/systemoneJev es el modelo de decisiones de TypeSafe, que llama modelo System One: entiende el lenguaje natural como un modelo de chat, pero en lugar de escribir texto responde a las preguntas que tú defines. jev-latest, jev-1.14.0 y typesafe/jev-1.14 también funcionan como IDs de modelo, y jev-1.13 sigue disponible para prompts ajustados sobre él.
Haz preguntas
# pip install typesafe-sdkfrom typesafe_sdk import Choice, Noul, Score, TypeSafeClientwith TypeSafeClient( base_url="https://api.zurelay.com", api_key="YOUR_ZURELAY_KEY", model="jev-1.14",) as client: response = client.system_one( state={"ticket": "I was charged twice for October, please refund one today."}, questions={ "refund": Noul(instructions="Is the customer asking for money back?"), "team": Choice( instructions="Which team should handle this?", criteria={"billing": "Charges and refunds", "technical": "Bugs and outages"}, ), "urgency": Score( instructions="How urgent is it?", criteria=["can wait", "this week", "today"], ), }, )print(response.nouls["refund"].noul) # 0.98print(response.choices["team"].choice) # billingprint(response.scores["urgency"].score) # 1.9Con los SDK de TypeSafe, define la URL base como https://api.zurelay.com, sin /v1: ellos añaden /v1/systemone por su cuenta. Las variables de entorno TYPESAFE_BASE_URL y TYPESAFE_API_KEY también funcionan. Cualquier cliente HTTP funciona igual: envía tu clave de Zurelay como Bearer token.
La respuesta
{ "id": "req_8Kq2vXbN4tR7mWc1pLs9dYe3", "model": "jev-1.14", "answers": { "refund": { "type": "noul", "noul": 0.98 }, "team": { "type": "choice", "choice": "billing", "probabilities": { "billing": 1.0, "technical": 0.0 }, "confidence": 1.0 }, "urgency": { "type": "score", "score": 1.9, "legend": { "0": "can wait", "1": "this week", "2": "today" }, "probabilities": { "0": 0.0, "1": 0.1, "2": 0.9 }, "confidence": 0.81 } }, "usage": { "input_tokens": 396, "output_tokens": 61, "cost": 0.00001386 }}Cada respuesta llega bajo el nombre que le diste a su pregunta. usage es aquello sobre lo que se facturó la solicitud, y cost lo que costó en dólares estadounidenses. La misma solicitud puede dar una respuesta con uno o dos puntos de diferencia entre una llamada y la siguiente.
Parámetros
modelstringobligatoriojev-1.14,jev-latest(el mismo modelo) ojev-1.13.statestring, object o arrayobligatorio- El contenido sobre el que decidir: un texto, o datos estructurados como un registro, un historial de chat o el estado actual de tu app. Para referirte a un campo en una pregunta, usa su nombre entre comillas invertidas, como `ticket`.
questionsobjectobligatorio- Tus preguntas, cada una bajo un nombre que tú eliges. Las respuestas llegan con esos mismos nombres, y los nombres no se envían al modelo.
typestringobligatorionoul,choiceoscore.instructionsstring, object o arrayobligatorio- La pregunta. Un objeto puede contener la pregunta en un campo y los datos a los que se refiere en otros.
criteriaobject o array- Para un
choice(obligatorio): un objeto de opciones, cada una con una descripción onull, hasta 255. Para unscore(obligatorio): un array de 2 a 10 niveles, del más bajo al primero. Para unnoul(opcional):trueyfalse, qué significan un sí y un no.
Tipos de pregunta
Una misma petición puede combinar los tres tipos, y hacer muchas preguntas cuesta apenas más que una: el estado se lee una sola vez y todas las preguntas se responden en paralelo sobre él.
Límites
- Hasta 64K tokens por petición, sumando el estado y todas las preguntas, y 32K para el estado junto con la pregunta más larga.
- Solo texto: una cadena, un objeto JSON o un array. Convierte antes en texto las imágenes, PDF o audio.
- Sin streaming: las respuestas llegan completas, normalmente en menos de un segundo.
- Una petición mal formada (falta un
instructions, una puntuación con un solo nivel) se rechaza con un400antes de llegar al modelo y no cuesta nada. También una que supere los 64K tokens, con el códigocontext_length_exceeded.
Cómo obtener buenas respuestas
Pagar por las decisiones
Jev se factura por los tokens de entrada que cuenta: tu estado y tus preguntas, más unos 270 tokens propios en cada petición. Las respuestas son gratis, igual que en TypeSafe. Una petición corta de unos 300 tokens cuesta alrededor de $0.00001, así que un millón de ellas cuesta unos $10. Las cabeceras usage y x-zurelay-input-tokens de cada respuesta indican sobre qué se facturó, cada petición aparece en tu registro de peticiones y las que fallan no cuestan nada.
Prueba tu propio contenido y tus preguntas en el Playground del panel: elige Jev, pega el contenido, coloca las preguntas al lado y su botón Get code escribe la misma petición en Python, Node.js o cURL.
¿Tienes dudas o falta algo? Escribe a nuestro equipo de soporte y te responderemos por email, normalmente en menos de un minuto.