Aller au contenu principal

Tâches de longue durée de l'agent superviseur

Cette page explique comment gérer les tâches longue durée en utilisant la continuation de tâche avec Supervisor Agent.

Lorsqu'un agent superviseur travaille sur des tâches complexes qui nécessitent de nombreux appels d'outils, la tâche peut exiger plus de temps qu'une seule requête d'API ne le permet. Pour gérer cela, le superviseur prend en charge le mode de tâche à exécution longue, qui découpe automatiquement les tâches longues en plusieurs cycles de requête/réponse afin que l'agent puisse continuer à travailler sans expirer.

Comment cela fonctionne

  1. Le superviseur commence à traiter votre demande, en appelant les outils et en raisonnant selon les besoins.
  2. Avant que la requête n'expire, le superviseur interrompt l'exécution et émet un événement task_continue_request dans la réponse en streaming.
  3. Pour reprendre la tâche, votre application envoie une demande de suivi qui inclut à la fois le task_continue_request et un task_continue_response correspondant.
  4. Le superviseur reprend là où il s'est arrêté et continue de travailler. Ce cycle se répète si nécessaire jusqu'à ce que la tâche soit terminée.

Utiliser des tâches de longue durée dans Playground

Dans AI Playground, Playground gère automatiquement la continuation des tâches. Lorsque l'agent a besoin de plus de temps, Playground envoie la réponse de continuation en votre nom. Vous voyez une seule conversation ininterrompue.

Gérer la continuation des tâches dans l'API

Pour activer les tâches de longue durée, incluez "long_task": true dans le databricks_options de votre requête :

JSON
{
"input": [{ "role": "user", "content": "Your message here" }],
"databricks_options": {
"long_task": true
},
"stream": true
}

Lorsque vous utilisez directement l'API de streaming, votre application doit détecter task_continue_request événements et envoyer une demande de suivi pour poursuivre la tâche.

Détectez l'événement de point de contrôle dans la réponse de streaming.

Le superviseur émet un événement tel que le suivant lorsqu'il doit continuer :

JSON
{
"type": "response.output_item.done",
"item": {
"type": "task_continue_request",
"id": "continue_<unique-id>",
"step": 16
},
"id": "resp_<response-id>"
}

Le champ step indique le nombre total d'étapes d'appel d'outil terminées jusqu'à présent.

Envoyer une demande de suivi pour reprendre

Incluez l'task_continue_request d’origine et un task_continue_response correspondant dans les messages de votre prochaine demande :

JSON
{
"messages": [
"...previous messages...",
{
"type": "task_continue_request",
"id": "continue_<unique-id>",
"step": 16
},
{
"type": "task_continue_response",
"continue_request_id": "continue_<unique-id>"
}
],
"databricks_options": {
"long_task": true
},
"stream": true
}

Le continue_request_id doit correspondre au id du task_continue_request.

Limitations connues

  • Si un seul appel d'outil ou de modèle dure plus longtemps que le délai d'attente de l'API, la requête peut toujours expirer car le point de contrôle de continuation ne peut être Trigger qu'entre les étapes.
  • La prise en charge complète des agents à exécution longue, y compris les délais d'expiration pendant les appels d'outils individuels ou les appels de modèles, n'est pas encore disponible.