Passer au contenu principal
L’interrogation des résultats est efficace, mais pour une expérience plus réactive et en temps réel, vous pouvez streamer les événements directement depuis un outil en cours d’exécution. Ce guide montre comment se connecter au flux d’événements d’un outil en utilisant les Server-Sent Events (SSE). Ce guide suppose que vous avez déjà lancé une exécution d’outil comme indiqué dans le guide Exécuter Votre Premier Outil.
1

Exécuter un Outil et Obtenir l'URL de Streaming

Tout d’abord, exécutez un outil comme vous le feriez normalement. La réponse initiale 202 Accepted contiendra une stream_url. C’est l’endpoint que nous utiliserons pour recevoir les événements en direct.
Réponse
{
  "execution_id": "exec_123456789",
  "status": "pending",
  "tool_id": "d1e2f3a4-b5c6-7890-1234-567890abcdef",
  "details_url": "https://app.ubik-agent.com/api/v1/tool-executions/exec_123456789",
  "stream_url": "https://app.ubik-agent.com/api/v1/tool-executions/exec_123456789/stream"
}
Copiez la stream_url pour l’étape suivante.
2

Se Connecter au Flux d'Événements

Maintenant, vous pouvez vous connecter à la stream_url en utilisant n’importe quel client compatible SSE. La connexion restera ouverte, et le serveur enverra les événements au fur et à mesure qu’ils se produisent.
# Utilisez l'option -N pour désactiver la mise en mémoire tampon
curl -X GET "https://app.ubik-agent.com/api/v1/tool-executions/exec_123456789/stream" \
     -H "X-API-KEY: VOTRE_CLE_API" \
     -N
Dans l’exemple JavaScript EventSource, nous passons la clé API comme paramètre de requête. Notre serveur est configuré pour accepter la clé API soit via l’en-tête X-API-KEY, soit via un paramètre de requête nommé api_key pour les connexions SSE, car EventSource ne prend pas en charge les en-têtes personnalisés.
3

Comprendre les Événements

Au fur et à mesure que l’outil s’exécute, vous recevrez une série d’objets JSON. Chaque objet contient un event_type et une charge utile data. Voici les principaux types d’événements :
  • tool_update : Une mise à jour générale de la progression. La charge utile data contient souvent des champs phase et message pour décrire l’état actuel.
  • tool_partial_update : Un fragment de contenu en streaming. La charge utile data contient un champ content avec le morceau de texte.
  • final_result : L’événement final d’une exécution réussie, contenant les outputs complets dans la charge utile data.
  • tool_input_required : Envoyé lorsqu’un outil interactif a besoin d’une entrée de l’utilisateur.
  • error : Indique qu’une erreur est survenue pendant l’exécution.
Exemple de Flux d'Événements
data: {"event_type": "tool_update", "data": {"phase": "retrieval", "message": "Récupération des documents pertinents..."}}

data: {"event_type": "tool_update", "data": {"phase": "generation", "message": "Génération de la réponse..."}}

data: {"event_type": "tool_partial_update", "data": {"content": "Les résultats financiers montrent..."}}

data: {"event_type": "tool_partial_update", "data": {"content": " une augmentation significative du chiffre d'affaires."}}

data: {"event_type": "final_result", "data": {"outputs": {"response": "Les résultats financiers montrent une augmentation significative du chiffre d'affaires."}}}
En utilisant les Server-Sent Events, vous pouvez créer des applications hautement interactives et réactives qui réagissent en temps réel aux processus de longue durée.