Décisions
Décisions (Jev)
Posez des questions typées sur vos données et obtenez des réponses exploitables par votre code : la probabilité d’un oui, une option parmi plusieurs ou une position sur une échelle, avec des probabilités calibrées, généralement en moins d’une seconde. Le service utilise l’API de TypeSafe, ses SDK fonctionnent donc sans modification.
/v1/systemoneJev est le modèle de décision de TypeSafe, qui le qualifie de modèle System One : il comprend le langage naturel comme un modèle de chat, mais au lieu de rédiger du texte, il répond aux questions que vous définissez. jev-latest, jev-1.14.0 et typesafe/jev-1.14 fonctionnent aussi comme identifiants de modèle, et jev-1.13 reste disponible pour les prompts adaptés à ce modèle.
Poser des questions
# 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.9Avec les SDK de TypeSafe, définissez l’URL de base sur https://api.zurelay.com, sans /v1 : ils ajoutent eux-mêmes /v1/systemone. Les variables d’environnement TYPESAFE_BASE_URL et TYPESAFE_API_KEY fonctionnent aussi. Tout client HTTP s’utilise de la même façon : envoyez votre clé Zurelay comme jeton Bearer.
La réponse
{ "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 }}Chaque réponse est renvoyée sous le nom que vous avez donné à sa question. usage indique la base de facturation de la requête, et cost son coût en dollars américains. Pour une même requête, une réponse peut varier d’un ou deux points d’un appel à l’autre.
Paramètres
modelstringrequisjev-1.14,jev-latest(le même modèle) oujev-1.13.statestring, object ou arrayrequis- Le contenu sur lequel décider : du texte ou des données structurées, comme un enregistrement, un historique de conversation ou l’état actuel de votre application. Pour faire référence à un champ dans une question, utilisez son nom entre accents graves, comme `ticket`.
questionsobjectrequis- Vos questions, chacune sous le nom de votre choix. Les réponses sont renvoyées sous les mêmes noms, et ces noms ne sont pas transmis au modèle.
typestringrequisnoul,choiceouscore.instructionsstring, object ou arrayrequis- La question. Un objet peut contenir la question dans un champ et les données auxquelles elle se rapporte dans les autres.
criteriaobject ou array- Pour un
choice(obligatoire) : un objet contenant jusqu’à 255 options, chacune avec une description ounull. Pour unscore(obligatoire) : un tableau de 2 à 10 niveaux, du plus bas au plus haut. Pour unnoul(facultatif) :trueetfalse, qui définissent ce que signifient un oui et un non.
Types de questions
Une même requête peut combiner les trois types, et poser plusieurs questions coûte à peine plus cher qu’une seule : l’état est lu une seule fois, puis toutes les questions sont traitées en parallèle à partir de cet état.
Limites
- Jusqu’à 64K tokens par requête pour l’état et l’ensemble des questions, et 32K pour l’état et la question la plus longue.
- Texte uniquement : une chaîne, un objet JSON ou un tableau. Convertissez d’abord les images, les PDF ou l’audio en texte.
- Pas de streaming : les réponses sont renvoyées en entier, généralement en moins d’une seconde.
- Une requête mal formée (un
instructionsmanquant, un score avec un seul niveau) est rejetée avec un400avant d’atteindre le modèle, sans frais. Il en va de même pour une requête dépassant 64K tokens, avec le codecontext_length_exceeded.
Obtenir de bonnes réponses
Facturation des décisions
Jev est facturé sur les tokens d’entrée qu’il comptabilise : votre état et vos questions, plus environ 270 tokens internes à chaque requête. Les réponses sont gratuites, comme chez TypeSafe. Une courte requête d’environ 300 tokens coûte environ $0.00001, soit environ $10 pour un million de requêtes. Le champ usage et l’en-tête x-zurelay-input-tokens de chaque réponse indiquent la base de facturation, chaque requête figure dans votre journal des requêtes, et les requêtes qui échouent ne coûtent rien.
Testez vos propres contenus et questions dans le Playground du tableau de bord : choisissez Jev, collez le contenu et définissez les questions à côté. Le bouton Obtenir le code génère la même requête en Python, Node.js ou cURL.
Une question ou un élément manquant ? Contactez notre équipe d’assistance et nous vous répondrons par e-mail, généralement en moins d’une minute.