Vue d’ensemble
Le contenu du message est un historique linéaire de l’exécution de l’agent. Il est conçu pour être analysé par le client afin d’afficher une interface utilisateur riche avec des étapes, des entrées/sorties d’outils et des interactions utilisateur, tout en restant une chaîne unique stockable.Balises d’Étape (Step Tags)
Les étapes représentent des actions ou des phases de haut niveau dans le plan de l’agent.<<STEP_START>>: Marque le début d’un bloc d’étape.<<STEP_END>>: Marque la fin d’un bloc d’étape.<<SINGLE_STEP_FLAG>>: Un indicateur optionnel à l’intérieur d’un bloc d’étape indiquant qu’il s’agit d’une action d’agent à étape unique.
Balises d’Exécution d’Outil (Tool Execution Tags)
Lorsque l’agent utilise un outil, les détails de l’exécution sont intégrés directement dans le flux de contenu à l’aide d’un ensemble spécifique de balises. Cela permet d’avoir un enregistrement précis de quel outil a été appelé, avec quels arguments, et quel a été le résultat.Note : Ces balises représentent l’historique de l’exécution de l’outil. Pour afficher la progression en temps réel (comme un indicateur de chargement ou des journaux) pendant l’exécution de l’outil, vous devez écouter les événements SSE décrits dans le guide Gestion du Streaming d’Outils.
Structure et Étapes de Gestion
-
Début :
<<TOOL_STEP_START/nom_outil:id_execution>>- Action : Initialisez un conteneur UI pour l’outil.
- Temps réel : Commencez à écouter les événements
tool_updatecorrespondant à cetid_execution(voir Gestion du Streaming d’Outils).
-
Entrée :
<<TOOL_STEP_INPUT_START>>… entrée JSON …<<TOOL_STEP_INPUT_END>>- Action : Analysez le contenu JSON pour afficher les arguments spécifiques passés à l’outil.
-
Résultat :
<<TOOL_STEP_RESULT_START>>… résultat JSON …<<TOOL_STEP_RESULT_END>>- Action : Analysez le contenu JSON pour afficher la sortie finale.
- Temps réel : Ce résultat statique remplace tous les états de chargement transitoires ou les journaux dérivés des événements SSE.
-
Fin :
<<TOOL_STEP_END/nom_outil:id_execution>>- Action : Marquez l’exécution de l’outil comme terminée dans l’interface utilisateur.
Balises de Point de Contrôle (Checkpoint Tags)
Les points de contrôle marquent des points significatifs dans l’historique de la conversation, souvent utilisés pour la navigation ou la restauration de l’état.<<CHECKPOINT_START>>: Commence un bloc de point de contrôle.Checkpoint: nom: Le nom du point de contrôle (à l’intérieur du bloc).<<CHECKPOINT_END>>: Termine le bloc de point de contrôle.
Balises de Demande d’Entrée (Input Request Tags)
Lorsque l’agent a besoin d’informations de la part de l’utilisateur, il s’arrête et attend une entrée. Cette interaction est enregistrée à l’aide de balises spécifiques.<<INPUT_REQUIRED_START>>: Commence le bloc de demande d’entrée.<<INPUT_REQUIRED_END>>: Termine le bloc.<<USER_INPUT_PROVIDED_START>>: (Optionnel) Si l’utilisateur a déjà répondu, son entrée est stockée ici.<<USER_INPUT_PROVIDED_END>>: Termine la section d’entrée utilisateur.
Balises d’Erreur (Error Tags)
Si une erreur survient pendant l’exécution de l’agent, elle est enregistrée dans le contenu du message à l’aide de balises spécifiques.<<ERROR_START>>: Marque le début d’un message d’erreur.<<ERROR_END>>: Marque la fin du message d’erreur.<<ERROR_JSON_START>>: Marque le début d’un objet d’erreur JSON détaillé (traceback, métadonnées).<<ERROR_JSON_END>>: Marque la fin de l’objet d’erreur JSON.
Balises de Pensée (Thinking Tags)
Les modèles qui prennent en charge la “Chaîne de Pensée” (Chain of Thought) ou le raisonnement afficheront leur monologue interne enveloppé dans des balises de pensée.<<thinking>>: Commence le bloc de pensée.<</thinking>>: Termine le bloc de pensée.
Stratégie d’Analyse
Pour afficher ce contenu, vous avez deux options principales :Option 1 : Utiliser le SDK Ubik Agent (Recommandé)
Les SDKubik-agent (JS/TS) et ubik-agent-py (Python) (actuellement en cours de développement) analysent automatiquement ces balises et fournissent un modèle d’objet structuré ou une chaîne Markdown propre prête à être affichée. C’est la méthode préférée pour la plupart des applications.
Option 2 : Analyse Manuelle (Avancé)
Si vous construisez une interface utilisateur personnalisée et traitez vous-même la chaîne de contenu brute, vous devrez combiner deux sources de données :- Délimiteurs de Texte : Analysez les blocs
<<TOOL_STEP_INPUT_START>>et<<TOOL_STEP_RESULT_START>>du contenu du message pour afficher l’état final de l’outil. - Événements SSE : Écoutez les événements
tool_updateettool_partial_updatepour afficher la progression en temps réel (chargement, journaux) avant que l’outil ne se termine.
- Correspondance Regex : Utilisez des expressions régulières pour trouver ces blocs.
- Machine à États : Itérez à travers la chaîne, en maintenant un état (par exemple,
in_step,in_tool,in_thinking) pour afficher le composant UI approprié pour chaque section. - Analyse JSON : Pour les entrées/sorties d’outils et les entrées utilisateur, extrayez le texte entre les balises et analysez-le en tant que JSON.
Résumé de Référence des Balises
Voici une référence rapide de toutes les balises dans leur ordre d’apparition typique au cours du cycle de vie d’un agent :| Phase | Balise | Description |
|---|---|---|
| Étape | <<STEP_START>> | Commence une étape de haut niveau. |
| Pensée | <<thinking>> … <</thinking>> | Monologue interne (optionnel). |
| Début Outil | <<TOOL_STEP_START/nom:id>> | Commence un bloc d’exécution d’outil. |
| Entrée Outil | <<TOOL_STEP_INPUT_START>> … <<TOOL_STEP_INPUT_END>> | Arguments JSON pour l’outil. |
| Résultat Outil | <<TOOL_STEP_RESULT_START>> … <<TOOL_STEP_RESULT_END>> | Sortie JSON de l’outil. |
| Fin Outil | <<TOOL_STEP_END/nom:id>> | Termine le bloc d’exécution d’outil. |
| Fin Étape | <<STEP_END>> | Termine l’étape de haut niveau. |
| Point de Contrôle | <<CHECKPOINT_START>> … <<CHECKPOINT_END>> | Marque un point de sauvegarde. |
| Entrée | <<INPUT_REQUIRED_START>> … <<INPUT_REQUIRED_END>> | Pause pour attendre une entrée utilisateur. |
| Réponse Utilisateur | <<USER_INPUT_PROVIDED_START>> … <<USER_INPUT_PROVIDED_END>> | Enregistre la réponse de l’utilisateur. |
| Erreur | <<ERROR_START>> … <<ERROR_END>> | Enveloppe les messages d’erreur. |

