Docs · Intégration
SDK TypeSafe
Jevis reproduit le contrat /v1/systemone à l'identique. Les SDK officiels de TypeSafe fonctionnent sans adaptateur : on change l'URL de base et la clé.
Installer
pip install typesafe-sdk # ou : uv add typesafe-sdkConfigurer
Passer l'URL de la gateway et une clé jaas_… émise par la console. Le reste du code ne change pas.
app.py
from typesafe_sdk import Choice, TypeSafeClient
with TypeSafeClient(
base_url="https://jevis.example.com", # la seule ligne qui change
api_key="jaas_a1b2c3d4_…", # clé émise par la console
) as client:
response = client.system_one(
state={"document": "Prélevé deux fois ce mois-ci, merci de corriger."},
questions={
"department": Choice(
instructions="Quel service doit traiter ce ticket ?",
criteria={"billing": None, "shipping": None},
),
},
)
print(response.choices["department"].choice)Le SDK envoie son modèle par défaut (
jev-latest) si on n'en précise pas. Ce n'est pas une erreur : Jevis renvoie le model tel quel et choisit le backend d'après le schéma.Questions inline
Le SDK envoie les questions dans la requête. Jevis calcule leur empreinte structurelle (types et clés, sans les textes) et la compare aux schémas publiés autorisés pour l'application.
- Reformuler une instruction : aucun impact.
- Ajouter une option à un
choice, un niveau à unscore, une question : il faut publier une nouvelle version de schéma, sinon l'appel est refusé.
Extensions x_
Les extensions (x_template, x_schema en entrée ; x_decision_id, x_abstain… en sortie) sont hors du contrat TypeSafe. Pour les utiliser, appeler l'API en HTTP direct, avec n'importe quel client. De même pour renvoyer l'outcome :
curl -X POST https://jevis.example.com/v1/decisions/019a1b2c-…/outcome \
-H "Authorization: Bearer $JEVIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"answers": { "department": "billing", "urgent": true, "tone": 2 },
"source": "agent-ui"
}'Erreurs
Les codes HTTP suivent TypeSafe, avec deux ajouts propres à Jevis.
| HTTP | Jevis | Remarque |
|---|---|---|
| 401 | invalid_api_key | Comme TypeSafe. |
| 403 | schema_not_granted | Propre à Jevis : schéma non attribué à l'application. |
| 422 | validation_error | Comme TypeSafe, plus invalid_schema et template_render_error. |
| 429 | rate_limited · quota_exceeded | Comme TypeSafe, avec Retry-After. |
| 503 | backend_unavailable | TypeSafe utilise 529 pour la surcharge ; Jevis répond 503. |