2. Une expérience reproductible au coût borné
Sections
Réglages de lecture
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
Code et termes techniques en anglais
Désactivé : la voix de la page lit tout, sans pause entre deux voix.
Aucune voix pour cette langue dans ce navigateur.
Plus de voix
D’autres voix : Microsoft Edge propose des voix naturelles en ligne, et Windows (Paramètres › Heure et langue › Voix), macOS et Android en installent d’autres.
L’expérience commence par une question falsifiable :
Peut-on insérer une recommandation probabiliste typée dans une gate façon Gaia sans laisser le fournisseur créer de l’autorité ni un coût non borné?
L’hypothèse est précise : la même politique déterministe doit accepter une réponse fermée valide, refuser une option inventée, refuser des probabilités mal formées et router vers un humain quand l’autorité explicite manque. Un appel live mesurerait ensuite seulement le comportement du modèle.
Phase A — point de référence hors ligne
Section intitulée « Phase A — point de référence hors ligne »cd code/typesafe-ai-system-onepython typesafe_lab.py mockpython -m unittest -vMesuré localement le 20 septembre 2026 avec Python 3.14.2 :
{ "mode": "mock", "model": "mock-jev-course/1", "decision": "human_review:no_explicit_authority", "request_sha256": "67c1ee4bcd36b497f60872c0715d435b364c3b7743ad06f9be543071af044a1b"}
Ran 14 tests in 0.078sOKCes tests prouvent uniquement les propriétés locales : validation de la fixture, refus sans autorité, refus d’un Choice inconnu et somme des probabilités égale à 1. Ils ne prouvent ni que TypeSafe a produit la fixture, ni que le seuil de 0,9 est calibré, ni que l’option connue est juste.
Phase B — probe facultative à un appel
Section intitulée « Phase B — probe facultative à un appel »Ne collez pas la clé dans un argument de commande. Définissez TYPESAFE_API_KEY par le mécanisme secret de votre système, puis lancez :
python typesafe_lab.py live --out live-result.jsonLe script :
- refuse avant tout accès réseau si la variable manque;
- construit une seule requête pour
jev-1.13.0; - compte les octets UTF-8 de la requête comme proxy local de taille, pas comme estimation des tokens facturés;
- refuse au-delà de 2 500 octets ou de son proxy de coût par octets de 0,000105 $ au tarif consulté le 22 septembre 2026;
- envoie exactement une requête avec un timeout de 20 secondes;
- refuse les redirections afin de garder le bearer token lié à l’origine API configurée;
- ne réessaie jamais automatiquement après 429, 529, timeout ou panne réseau;
- n’imprime ni n’écrit l’en-tête d’autorisation;
- valide la réponse et exige le modèle épinglé exact avant le routage;
- exige une autorité prouvée par le code local de confiance, jamais par la réponse Noul du modèle;
- consigne date, modèle concret, usage, digest, proxy avant appel et décision, mais pas la réponse complète du fournisseur.
Le comptage des octets limite la taille locale de la requête. Ce n’est pas une borne démontrée des tokens ni des dollars facturés : le cadrage côté serveur et les contrôles de dépenses du compte sont distincts. Le coût observé doit utiliser usage.input_tokens et le prix officiel au moment de l’appel. Un appel payant exige une autorisation séparée.
Conditions d’arrêt
Section intitulée « Conditions d’arrêt »Arrêtez immédiatement si la clé manque ou apparaît dans une sortie, si la limite locale d’octets/proxy est dépassée, si le contrat est invalide, si le fournisseur renvoie 401/422/429/529 ou un statut inattendu, si le modèle concret diffère, si la décision pourrait autoriser/fusionner/déployer/publier/supprimer, ou si l’entrée contient un secret ou des données non approuvées. La limite d’un appel ne garantit aucun plafond en dollars.
Tableau de preuves à remplir
Section intitulée « Tableau de preuves à remplir »| Champ | Preuve exigée | État actuel |
|---|---|---|
| identité de requête | SHA-256 du script | mock seulement |
| modèle | champ model concret |
live non testé |
| usage et coût | tokens d’entrée × prix courant | live non testé |
| latence | elapsed_ms |
live non testé |
| forme | validateur réussi | mock réussi; live non testé |
| décision | valeur exacte | mock : refus du dispatch |
| qualité métier | résultat face à une étiquette fixée avant l’appel | non testé |
Un appel réussi est une probe de connectivité, pas une évaluation. L’étape utile suivante est un corpus versionné avec cas clairs, frontières et contre-exemples, évalué avant de déplacer les seuils.
Exercices
Section intitulée « Exercices »- Pourquoi épingler
jev-1.13.0au lieu dejev-latest?
Solution
Parce qu’un alias peut changer sans changement de code. Les seuils et mesures appartiennent au modèle concret qui les a produits.
- Le SDK officiel sait réessayer, mais cette probe refuse de le faire. Est-ce un bogue?
Solution
Non. Son budget est exactement un appel. Un retry automatique rendrait le coût et le nombre d’observations ambigus. En production, les tentatives et leur coût maximal doivent rester explicites et testés.
- TypeSafe AI : référence API, modèles et prix, démarrage rapide
- Code :
code/typesafe-ai-system-one