### Étape 2 : donner la clé à ton ordinateur (Terminal) export OPENROUTER_API_KEY=sk-or-... ### Étape 3 : installer le skill dans Claude Code (Terminal, 2 commandes) claude plugin marketplace add typesafe-ai/skills claude plugin install typesafe@typesafe-ai ### Étape 3, variante : dans un autre agent (Codex, Cursor…) npx skills add typesafe-ai/skills --skill typesafe-ai ### Étape 3 : appeler le skill dans Claude Code /typesafe:typesafe-ai ### Étape 4 : la consigne de départ recommandée par TypeSafe (traduite) Utilise le skill TypeSafe. Regarde mon projet et dis-moi où un appel à Jev rendrait les choses plus rapides ou moins chères. Pose-moi des questions avant de construire. ### Test de branchement par OpenRouter (chemin 2) curl https://openrouter.ai/api/alpha/decisions \ -H "Authorization: Bearer $OPENROUTER_API_KEY" \ -H "Content-Type: application/json" \ -d @- <<'EOF' { "model": "typesafe/jev-1.13", "state": "Bonjour, je n'arrive pas à payer ma facture depuis trois jours, le lien de paiement ne marche pas. C'est urgent.", "questions": { "service": { "type": "choice", "instructions": "Quel service doit traiter ce message ?", "criteria": { "facturation": "Paiement, facture, remboursement", "technique": "Bug, site, connexion", "commercial": "Prix, devis, nouvelle commande", "autre": "Rien de tout cela" } }, "urgent": { "type": "noul", "instructions": "Le client exprime une urgence." } } } EOF ### Installer le kit Python pip install typesafe-sdk ### Installer le kit JavaScript npm install @typesafe-ai/sdk ### Exemple en Python from typesafe_sdk import Choice, Noul, TypeSafeClient client = TypeSafeClient() reponse = client.system_one( state="Bonjour, je n'arrive pas à payer ma facture depuis trois jours. C'est urgent.", questions={ "service": Choice( instructions="Quel service doit traiter ce message ?", criteria={ "facturation": "Paiement, facture, remboursement", "technique": "Bug, site, connexion", "commercial": "Prix, devis, nouvelle commande", "autre": "Rien de tout cela", }, ), "urgent": Noul(instructions="Le client exprime une urgence."), }, ) print(reponse.answers["service"].choice, reponse.answers["service"].confidence) print(reponse.answers["urgent"].noul) ### Variante : le kit TypeSafe qui passe par OpenRouter import os from typesafe_sdk import TypeSafeClient client = TypeSafeClient( api_key=os.environ["OPENROUTER_API_KEY"], base_url="https://openrouter.ai/api", ) ### Donner ta clé de la passerelle à ton ordinateur (Terminal) export AI_GATEWAY_API_KEY=ta_cle_de_passerelle ### Installer la bibliothèque npm install ai@latest ### Contenu du fichier decision.mts import { experimental_decide as decide } from 'ai'; const resultat = await decide({ model: 'typesafe-ai/jev', state: "Bonjour, je n'arrive pas à payer ma facture depuis trois jours. C'est urgent.", questions: { urgent: { type: 'boolean', instructions: 'Le client exprime une urgence.' }, }, }); console.log(JSON.stringify(resultat.answers, null, 2)); ### Lancer le test node decision.mts