Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les flux de travail dynamiques sont une fonctionnalité des compétences hébergées sur Azure Functions. Ils permettent à une compétence hébergée de lancer un flux de travail durable et en plusieurs étapes d’appels d’outils et d’attentes sans que vous ayez à écrire du code d’orchestration Durable Functions.
Pour obtenir la documentation du runtime la plus récente et la plus complète, consultez Workflows dynamiques dans le runtime des agents Azure Functions.
Important
Azure Functions Hosted Skills est actuellement en aperçu. Les fonctionnalités, les noms de configuration et les connecteurs pris en charge peuvent changer avant la disponibilité générale.
Au lieu d’appeler les outils un par un via la boucle de conversation, les flux de travail dynamiques permettent au modèle IA de générer un plan structuré d’appels d’outils. Le runtime exécute le plan en tant qu’orchestration Durable Functions, qui peut se ramifier, attendre, survivre aux redémarrages et rester observable, tandis que seul le résultat final intègre le contexte de la compétence hébergée.
Pourquoi les flux de travail dynamiques
Il existe quatre limitations fondamentales au fait que des compétences hébergées appellent directement des outils dans la boucle du modèle :
- Le coût des jetons. Chaque résultat intermédiaire de l’outil est ajouté au contexte du modèle. Un plan multiétape peut consommer des jetons pour traiter des données brutes dont le modèle n’a besoin que d’un résumé.
- Latence. Chaque appel direct à l’outil constitue un nouveau cycle d’échange avec le modèle. Les traitements longs ou à embranchements multiples s’exécutent de façon séquentielle dans la boucle du modèle, au lieu d’exécuter les tâches indépendantes en parallèle.
- Durabilité. Le travail en ligne peut être perdu si l’ouvrier redémarre, et il n’y a pas de moyen de mettre en veille sur un minuteur ou d’attendre un signal externe de longue durée.
- Observabilité. Les opérateurs ne peuvent pas facilement lister, inspecter ou annuler le travail en vol sans passer par la session de chat.
Les flux de travail dynamiques répondent à ces limites en faisant passer l’exécution du plan à une orchestration durable. La compétence hébergée lance le workflow, reçoit un identifiant du workflow et peut terminer son tour. L’orchestrateur exécute des outils compatibles avec le flux de travail et des temporisateurs persistants. L’interface de chat et les interfaces opérationnelles peuvent chacune suivre le flux de travail de manière autonome, et la compétence hébergée reprend le relais une fois le flux de travail terminé.
Comment les flux de travail dynamiques se rapportent à l’appel d’outils programmatiques
Les flux de travail dynamiques sont similaires dans leur forme au patron d'appel d'outils programmatiques d'Anthropic. Dans ce schéma, le modèle crée un plan d’outil structuré et l’exécution l’exécute en dehors de la boucle de discussion normale outil par outil. Cette approche peut réduire l’utilisation et la latence des jetons car les résultats intermédiaires restent en dehors du contexte du modèle, et un plan rédigé par le modèle peut représenter plusieurs appels d’outils.
Les flux de travail dynamiques appliquent ce schéma à Azure Functions et ajoutent une couche de durabilité et d’opérations :
| Capacité | Modèle programmatique d’appel d’outils | Flux de travail dynamiques |
|---|---|---|
| Appels d’outils en forme de plan | Yes | Yes |
| Consommation de tokens et latence réduites pour l’utilisation de plusieurs outils | Yes | Yes |
| Exécution durable à travers les redémarrages des workers | Non | Oui, en utilisant Durable Functions |
| Attentes et temporisateurs persistants | Non | Yes |
| Liste hors boucle, inspection, annulation et terminaison | Non | Yes |
| Visibilité de l’opérateur dans Durable Task Scheduler | Non | Oui, une fois configuré |
Quand utiliser des flux de travail dynamiques
Utilisez des flux de travail dynamiques lorsqu’une compétence hébergée doit exécuter un travail plus important qu’un simple chat ou un appel direct. Les bons ajustements sont les suivants :
- Des schémas fan-out/fan-in qui rassemblent en parallèle des éléments probants provenant de plusieurs sources indépendantes, telles que les journaux, les métriques et l’historique des déploiements.
- Gérer en parallèle des compétences hébergées par des spécialistes isolés et combiner leurs réponses.
- Exécuter un plan en plusieurs étapes où les étapes suivantes dépendent des résultats antérieurs de l’outil.
- Attendre un retardateur durable sans occuper un worker.
- Garder les gros résultats intermédiaires hors du contexte de conversation de la compétence hébergée jusqu’à ce qu’un résultat final ou un résumé soit disponible.
- Suivre et contrôler des tâches de longue durée en dehors de la boucle du modèle.
Tip
Si le travail peut se terminer en un seul appel d’outil ou nécessite une réponse immédiate de l’utilisateur à chaque étape, utilisez un appel direct d’outil plutôt qu’un flux de travail dynamique.
Comment fonctionne un flux de travail
Le schéma suivant montre les principaux composants de l’architecture de flux de travail dynamique :
Un flux de travail dynamique suit cette séquence :
- Un événement déclenche la compétence hébergée, ou un utilisateur envoie une requête via l’interface du chat.
- La compétence hébergée s’appelle
start_workflowavec un plan de workflow généré par le modèle IA. - L’exécution démarre le plan sous forme d’orchestration Durable Functions et renvoie immédiatement un ID de workflow.
- L’orchestrateur exécute en parallèle les activités d’outil prêtes et crée des temporisateurs persistants pour les étapes
wait. Il peut également déléguer des tâches à des compétences hébergées par des sous-agents, chacune s’exécutant dans une session isolée et sans état. - Lorsque le flux de travail atteint un état terminal, l’exécution notifie la compétence hébergée, qui appelle
get_workflow_statuset résume la sortie finale.
Lorsque la compétence hébergée utilise l’interface de chat intégrée, l’interface interroge également le statut du workflow et affiche une fiche de progression.
Les résultats intermédiaires restent dans le stockage du flux de travail. La compétence hébergée ne voit que l’ID du workflow au début et le statut final lorsqu’elle récupère le résultat. La compétence hébergée ne sonde pas pendant que le workflow s’exécute.
Outils de gestion des flux de travail
Lorsque vous activez les flux de travail, l’exécution ajoute ces outils à la compétence hébergée :
| Tool | Purpose |
|---|---|
start_workflow |
Lance un plan de workflow validé et renvoie immédiatement un ID de workflow. |
get_workflow_status |
Obtient le statut actuel et la sortie finale d’un flux de travail. |
list_workflows |
Liste les flux de travail appartenant à la session en cours. |
cancel_workflow |
Demande une annulation coordonnée. |
terminate_workflow |
Termine brusquement l’instance de workflow. |
La compétence hébergée appelle ces outils. Les utilisateurs ne les appellent pas directement dans le code de l’application.
Sous-agents de flux de travail
Une compétence hébergée activée par un workflow peut donner accès à des compétences hébergées spécialisées dans sa workflows.subagents configuration. Chaque spécialiste correspond à un autre fichier .agent.md de la même application hébergée de compétences.
Le sujet de première ligne suivant permet au coordinateur d’utiliser deux spécialistes :
---
name: PR Status Portfolio Coordinator
description: Reviews pull requests and produces an actionable report.
workflows:
enabled: true
subagents:
- agent: pr_status_analyst
when: Review one pull request and summarize its current status
- agent: actionable_report_writer
when: Combine pull-request summaries into an actionable portfolio report
---
La valeur agent est le slug du nom de fichier du spécialiste. Par exemple, pr_status_analyst fait référence à pr_status_analyst.agent.md. La valeur optionnelle when aide le modèle à décider quand utiliser le spécialiste. L’environnement d’exécution vérifie chaque spécialiste au regard de cette autorisation explicite avant de planifier le workflow.
Le modèle peut générer une tâche de workflow sub_agent avec id, agent et un task autonome. Une tâche sous-agent peut aussi utiliser depends_on, when, et for_each.
{
"id": "analyze_pr",
"type": "sub_agent",
"agent": "pr_status_analyst",
"task": "Review the supplied pull request and summarize its current status."
}
Chaque invocation de sous-agent est sans état et isolée :
- Le spécialiste utilise son propre modèle, instructions, outils, serveurs MCP, compétences et délais d’attente.
- Le spécialiste ne reçoit pas l’historique des conversations du coordinateur, le bac à sable, les outils de gestion des flux de travail ou les outils de délégation du temps de chat.
- Une défaillance ou un délai d’attente spécialisé fait échouer le flux de travail parent.
- Les outils spécialisés devraient tolérer la réexécution car une défaillance de travailleur peut faire fonctionner un sous-agent plus d’une fois.
Pour un exemple de bout en bout qui exécute en parallèle des tâches d’analyse de PR et combine leurs résumés dans un rapport, voir l’exemple de sous-agents de flux de travail.
Back-end de stockage
Les flux de travail dynamiques utilisent Durable Functions en interne et prennent en charge les mêmes backends de stockage. Par défaut, les workflows utilisent le compte stockage Azure que votre application de fonctions possède déjà. Pour les charges de travail, vous pouvez passer au Durable Task Scheduler (DTS), qui fournit un tableau de bord avec l’état de tâche par instance, l’historique des essais et les contrôles pour le travail en vol. Le guide pratique couvre les deux options.
Considerations
Gardez à l’esprit ces limitations actuelles lorsque vous utilisez des flux de travail dynamiques :
- Les gestionnaires d’outils sûrs en flux de travail doivent être synchrones et retourner des valeurs sérialisables en JSON.
- Le modèle d’IA génère le plan de flux de travail à l’exécution. On ne peut pas définir de modèles de workflow statiques dans YAML ou Markdown.
- Vous ne pouvez pas configurer des politiques de réessayage et de délai par tâche.
- La gestion des sorties volumineuses et l’intégration à MCP Tasks ne sont pas disponibles.
Étapes suivantes
Configurez des outils sûrs pour les flux de travail et exécutez votre flux de travail localement :
Contenu connexe
- Workflows dynamiques dans Azure Functions Agents Runtime
- Compétences hébergées par Azure Functions
- Développez une application d’IA événementielle avec des compétences hébergées sur Azure Functions
- Exemple de triage des incidents de flux de travail
- Exemple de sous-agents de workflow
- Vue d’ensemble de Durable Functions