@phaseo/agent-sdk lorsque votre application a besoin de plus qu’une génération de texte en un seul appel :
- des boucles d’outils en plusieurs étapes
- des outils d’exécution locaux
- des exécutions pouvant reprendre à partir de l’état renvoyé par le SDK
- des pauses explicites en attente d’une approbation humaine
- des sorties finales typées
- des tours de modèle via la passerelle au moyen du SDK TypeScript existant
Modèle d’état
L’Agent SDK n’enregistre pas les exécutions dans un service hébergé par Phaseo.run()renvoie tout l’état nécessaire pour reprendre plus tard.- Si votre application doit pouvoir reprendre une exécution entre des requêtes ou après un redémarrage du processus, enregistrez l’état renvoyé dans votre propre stockage.
continueRun()accepte directement l’état de l’exécution précédente.
Installation
Contenu du SDK
createAgent()defineTool()createGatewayAgentClient()continueRun()pour reprendre à partir d’un état d’exécution précédemment renvoyéstream()etcontinueStream()pour obtenir des résultats progressifs et rejouables- des fonctions d’aide aux conditions d’arrêt, telles que
stepCountIs(),maxCost()ethasToolCall()
Premier agent
Modèle mental
La boucle d’exécution effectue quatre opérations :- envoie l’état actuel des messages au client de modèle
- exécute les appels d’outils locaux renvoyés
- ajoute les résultats des outils au tour suivant
- renvoie l’état actualisé de l’exécution à la fin de chaque étape
Primitives de base
createAgent()
Utilisez createAgent() pour définir :
- un
idstable - les instructions
- un modèle ou un préréglage
- une courte liste d’outils
- analyse facultative de la sortie
- règles facultatives de vérification humaine
- contrôles facultatifs pour les nouvelles tentatives et l’exécution des outils
defineTool()
Définissez des outils d’exécution locaux avec :
iddescription- des
parametersJSON facultatifs timeoutMsfacultatif- validateurs d’exécution
inputSchemaetoutputSchema execute(),execute: falseou des callbacks avec intervention humainerequireApproval,onError,nextTurnParamset des événements de progression
context.signal, marque l’exécution comme failed et relance l’erreur de délai.
Les schémas peuvent être une fonction ou tout objet exposant parse() ou safeParse(). Les arguments de modèle et résultats d’outil invalides échouent avant de franchir la frontière de l’outil.
Approbation, HITL et outils manuels
Soumettez chaque appel d’outil à effet de bord à un contrôle :run.pause.pendingToolCalls. Reprenez-la avec l’identifiant d’appel exact pour éviter toute confusion entre appels concurrents :
execute: false pour le travail effectué par votre application et fournissez le résultat via toolOutputs. Pour un outil interactif, renvoyez null depuis onToolCalled ; après la reprise, onResponseReceived peut valider ou transformer la réponse humaine fournie.
Outils générant une progression
Un générateur asynchrone peut publier des résultats préliminaires puis renvoyer un résultat final :tool.preliminary_result et dans preliminaryResults de l’étape.
Résultats en streaming
stream() démarre la même machine à états avec un client de modèle en streaming. Ses flux peuvent être rejoués : l’interface, la télémétrie et le code de persistance peuvent donc les lire simultanément :
getReasoningStream(), getItemsStream(), getToolStream() ou getFullStream() pour accéder à des flux plus ciblés. cancel() interrompt l’exécution.
Afficher des éléments d’exécution typés
getItemsStream() produit AgentItem<TOutput>, une union discriminée utilisable sans risque dans une instruction switch :
completed.items après run() ou stream(). La sortie du fournisseur est normalisée en éléments de message, de raisonnement, d’appel d’outil, de résultat d’outil, d’erreur et de sortie finale. Les champs propres au fournisseur restent accessibles via rawProviderItem sur les éléments normalisés.
Conditions d’arrêt et tours dynamiques
Les conditions d’arrêt se combinent dans un tableau. La première condition remplie enregistre sa raison et renvoie une exécutionstopped :
context.setContext() et remplacer les paramètres du tour immédiatement suivant avec nextTurnParams.
createGatewayAgentClient()
Utilisez l’adaptateur relié à la passerelle lorsque les tours du modèle doivent s’exécuter via Phaseo Gateway.
Il peut transmettre des contrôles natifs de la passerelle tels que :
responseFormatpluginsgatewayToolstoolChoicewebSearchOptionsproviderOptionspromptCacheKeyincludeMeta
Persistance gérée par l’application
Si votre application doit reprendre les exécutions, persistez directement leAgentRunResult renvoyé ou fournissez un accesseur state avec les méthodes asynchrones load(runId) et save(result). Une exécution reprise peut alors utiliser runId sans transporter l’enregistrement sérialisé à travers chaque couche.
Le SDK ne fournit volontairement ni adaptateur de persistance ni stockage d’état hébergé.
Vous pouvez donc :
- garder les exécutions en un seul appel entièrement en mémoire dans le processus
- sérialiser les exécutions en pause ou incomplètes dans vos propres enregistrements d’application
- recharger l’état enregistré et le transmettre à
continueRun()ultérieurement
Vérification humaine et reprise
UtilisezhumanReview lorsqu’une exécution doit enregistrer un point de contrôle et attendre une approbation :
Sorties typées
UtilisezparseOutput si votre application souhaite une valeur finale typée :
Contrôles d’exécution
Nouvelles tentatives du modèle
UtilisezmodelRetry pour réessayer après des erreurs temporaires du modèle avant d’enregistrer l’exécution avec l’état failed :
maxRetries compte les tentatives supplémentaires après la première requête au modèle.
L’enregistrement d’étape conservé stocke le nombre final de tentatives dans modelAttempts.
Outils locaux simultanés
Si un tour du modèle peut appeler sans risque plusieurs outils indépendants, définisseztoolExecution.toolConcurrency :
Routage basé sur des préréglages
Utilisezpreset pour gérer les valeurs par défaut de routage, de prompt ou de paramètres dans le tableau de bord plutôt que de les coder en dur dans l’application :
Hooks d’événements
UtilisezonEvent si votre application a besoin de hooks de cycle de vie pour les journaux, la télémétrie ou les flux de travail internes.
Les événements disponibles incluent :
run.startedrun.resumedstep.startedstep.completedstep.failedstep.cancelledmodel.requestedmodel.completedmodel.failedtool.startedtool.completedtool.failedcheckpoint.savedrun.waiting_for_humanrun.cancelledrun.completedrun.failed
step.completed après la persistance de l’étape avec son point de contrôle.
Gestion des erreurs
Les erreurs de la passerelle sont relancées sous la formeAgentGatewayError :
errorDetails.
Exemples inclus
Le package fournit actuellement les exemples suivants :examples/research-brief-agent.tsexamples/support-triage-agent.tsexamples/coding-review-agent.tsexamples/parallel-tool-agent.ts
Périmètre actuel
Le SDK se concentre volontairement sur les primitives de création d’applications :- persistance locale ou gérée par l’application des points de contrôle
- tours de modèle via la passerelle
- outils locaux
- boucles d’agent reprenables
- utilisation normalisée des tokens, coût, avertissements, motifs de fin et résultats d’outils pour chaque étape