experimental_context et évite d’injecter des chemins sensibles dans les prompts.
Initialiser un runtime
RuntimeStore<T>accepte des valeurs typées ;get,set,require,deletefonctionnent comme uneMap.onCleanupenregistre une fonction appelée automatiquement à la fin de la requête (y compris en streaming).- Le runtime est cloné pour chaque appel afin d’éviter les fuites d’état.
Outils orientés runtime
createRuntimeTool injecte automatiquement le runtime courant dans la signature execute. Si aucun runtime n’est disponible (par exemple si l’appelant oublie runtime), l’exécution échoue immédiatement.
Ressources déclaratives
registerRuntimeResource centralise l’encodage/décodage et garantit un nettoyage cohérent via dispose. runtime.load invoque le loader, stocke la valeur puis déclenche le cleanup après la réponse.
Bonnes pratiques
- Isolation asynchrone – chaque appel
generate/streams’exécute dans un contexteAsyncLocalStorage. Les outils peuvent récupérer le runtime actif sans paramètre supplémentaire. - Streaming – le runtime reste actif jusqu’à la fermeture du flux ; les
onCleanupsont déclenchés dès que la génération se termine ou échoue. - Runtimes multiples – instanciez plusieurs
RuntimeStorepour séparer les domaines fonctionnels (ex. fichiers, utilisateurs). - Typage fort – paramétrez
RuntimeStore<{ ... }>etcreateRuntimeTool<INPUT, OUTPUT, RuntimeState>pour conserver le typage bout en bout.