Flussi di lavoro dinamici nelle competenze ospitate da Funzioni di Azure

I flussi di lavoro dinamici sono una caratteristica delle competenze ospitate da Funzioni di Azure. Consentono a una skill ospitata di avviare un workflow durevole e multistep composto da chiamate a strumenti e attese senza che tu debba scrivere codice di orchestrazione di Durable Functions.

Per la documentazione di runtime più aggiornata e completa, vedere Flussi di lavoro dinamici in Funzioni di Azure Agents Runtime.

Importante

Le skill ospitate in Funzioni di Azure sono attualmente in anteprima. Le funzionalità, i nomi di configurazione e i connettori supportati possono cambiare prima della disponibilità generale.

Invece di chiamare gli strumenti uno alla volta attraverso il ciclo di conversazione, i flussi di lavoro dinamici permettono al modello AI di generare un piano strutturato di chiamate agli strumenti. Il runtime esegue il piano come un'orchestrazione di Durable Functions che può diramarsi, attendere, sopravvivere ai riavvii e rimanere monitorabile, mentre solo il risultato finale entra nel contesto della skill ospitata.

Perché i flussi di lavoro dinamici

Ci sono quattro limitazioni di base nel richiamare le abilità ospitate direttamente nel ciclo del modello:

  • Costo del token. Ogni risultato intermedio viene aggiunto al contesto del modello. Un piano in più fasi può consumare token per dati non elaborati che il modello deve solo riassumere.
  • Latenza. Ogni chiamata diretta a uno strumento comporta un ulteriore ciclo di richiesta al modello. Il lavoro lungo o ramificato viene eseguito in serie attraverso il ciclo del modello invece di eseguire lavori indipendenti in parallelo.
  • Durabilità. Il lavoro in linea può andare perso se il lavoratore riavvia, e non esiste un modo di prima classe per dormire con un timer o aspettare un segnale esterno di lunga durata.
  • Osservabilità. Gli operatori non possono facilmente elencare, ispezionare o cancellare il lavoro a bordo senza passare attraverso la sessione di chat.

I flussi di lavoro dinamici affrontano queste limitazioni spostando l'esecuzione del piano in un'orchestrazione duratura. La skill ospitata avvia il flusso di lavoro, riceve un ID del flusso di lavoro e può terminare il suo turno. L'orchestratore utilizza strumenti sicuri per i flussi di lavoro e timer durevoli. L'interfaccia della chat e le interfacce operative possono tenere traccia del flusso di lavoro in modo indipendente e la skill ospitata riprende quando il flusso di lavoro si conclude.

Come i flussi di lavoro dinamici si relazionano alla chiamata di strumenti programmatici

I flussi di lavoro dinamici sono simili nella forma al pattern di chiamata degli strumenti programmatici di Anthropic. In quello schema, il modello crea un piano strutturato di utilizzo degli strumenti e il runtime lo esegue al di fuori del normale ciclo di chat con gli strumenti, uno per volta. Questo approccio può ridurre l'uso e la latenza dei token perché i risultati intermedi rimangono fuori dal contesto del modello, e un piano autore del modello può rappresentare più chiamate di strumento.

I flussi di lavoro dinamici applicano questo schema ad Funzioni di Azure e aggiungono un livello di durabilità e operazioni:

Capability Schema di invocazione programmatica degli strumenti Flussi di lavoro dinamici
Chiamate agli strumenti basate su un piano Yes Yes
Riduzione del consumo di token e della latenza per i flussi di lavoro con più strumenti Yes Yes
Esecuzione durevole tra i riavvii dei lavoratori No Sì, usando Durable Functions
Attese e timer durevoli No Yes
Elenco, ispezione, annullamento e terminazione outside-the-loop No Yes
Visibilità dell'operatore in Durable Task Scheduler No Sì, una volta configurato

Quando utilizzare i flussi di lavoro dinamici

Usa flussi di lavoro dinamici quando una competenza ospitata deve eseguire lavori più grandi di un singolo turno di chat o di una chiamata diretta con uno strumento. Le funzionalità più adatte includono:

  • Schemi di fan-out/fan-in che raccolgono evidenze da diverse fonti indipendenti in parallelo, come log, metriche e cronologia dei deployment.
  • Gestire competenze isolate specialistiche ospitate in parallelo e combinare le loro risposte.
  • Eseguire un piano a più passi in cui i passaggi successivi dipendono dai risultati precedenti degli strumenti.
  • Aspettare un timer duraturo senza tenere occupato un lavoratore.
  • Mantenere i risultati intermedi di grandi dimensioni fuori dal contesto conversazionale della skill ospitata finché non è disponibile un risultato finale o un riepilogo.
  • Monitorare e controllare attività di lunga durata dall'esterno del ciclo del modello.

Tip

Se il lavoro può completarsi in una singola chiamata di strumento o necessita di una risposta immediata dell'utente a ogni fase, usa la chiamata diretta di strumenti invece di un flusso di lavoro dinamico.

Come funziona un flusso di lavoro

Il seguente diagramma mostra i componenti principali nell'architettura del flusso di lavoro dinamico:

Diagramma che mostra una skill ospitata che avvia un Workflow dinamico che esegue attività degli strumenti, timer e subagenti tramite un orchestratore Durable.

Un flusso di lavoro dinamico segue questa sequenza:

  1. Un evento attiva la skill ospitata, oppure un utente invia una richiesta tramite l'interfaccia della chat.
  2. La skill ospitata chiama start_workflow con un piano di workflow generato dal modello di IA.
  3. Il runtime avvia il piano come orchestrazione di Durable Functions e restituisce immediatamente l'ID del flusso di lavoro.
  4. L'orchestratore esegue in parallelo le attività degli strumenti che sono pronte e crea timer persistenti per i passaggi wait. Può anche delegare il lavoro a skill ospitate da subagenti, ciascuna eseguita in una sessione isolata e senza stato.
  5. Quando il flusso di lavoro raggiunge uno stato terminale, il runtime informa la skill ospitata, che chiama get_workflow_status e fornisce un riepilogo dell'output finale.

Quando la skill ospitata utilizza l'interfaccia di chat integrata, l'interfaccia utente interroga periodicamente anche lo stato del flusso di lavoro e mostra una scheda di avanzamento.

I risultati intermedi rimangono nell'archivio del workflow. La skill ospitata vede solo l'ID del workflow all'inizio e lo stato finale quando recupera il risultato. La skill ospitata non esegue il polling durante l'esecuzione del flusso di lavoro.

Strumenti di gestione dei flussi di lavoro

Quando abiliti i workflow, il runtime aggiunge questi strumenti alla skill ospitata:

Tool Purpose
start_workflow Avvia un piano di flusso di lavoro validato e restituisce immediatamente un ID del flusso di lavoro.
get_workflow_status Ottiene lo stato attuale e l'output finale per un workflow.
list_workflows Elenca i flussi di lavoro di proprietà della sessione corrente.
cancel_workflow Richiede la cancellazione cooperativa.
terminate_workflow Termina bruscamente l'istanza del workflow.

La skill ospitata chiama questi strumenti. Gli utenti non li chiamano direttamente nel codice dell'applicazione.

Sottoagenti del workflow

Una skill ospitata abilitata per i Workflow può concedere l'accesso a skill ospitate specialistiche nella relativa configurazione workflows.subagents. Ogni specialista è un altro file .agent.md nella stessa app di skill ospitate.

Il seguente front-matter permette al coordinatore di utilizzare due specialisti:

---
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
---

Il valore agent è lo slug del nome file dello specialista. Ad esempio, pr_status_analyst si riferisce a pr_status_analyst.agent.md. Il valore opzionale when aiuta il modello a decidere quando utilizzare lo specialista. Il runtime verifica ogni specialista in base a questa autorizzazione esplicita prima di pianificare il flusso di lavoro.

Il modello può generare un'attività Workflow sub_agent con id, agent e un elemento task autonomo. Un compito di sottoagente può anche usare depends_on, when, e for_each.

{
  "id": "analyze_pr",
  "type": "sub_agent",
  "agent": "pr_status_analyst",
  "task": "Review the supplied pull request and summarize its current status."
}

Ogni invocazione di subagente è priva di stato e isolata:

  • Lo specialista utilizza il proprio modello, le istruzioni, gli strumenti, i server MCP, le abilità e il timeout.
  • Lo specialista non riceve la cronologia delle conversazioni del coordinatore, il sandbox, gli strumenti di gestione del flusso di lavoro o gli strumenti di delega in chat.
  • Un guasto o un timeout specialistico fallisce il flusso di lavoro genitore.
  • Gli strumenti specialistici dovrebbero tollerare la riesecuzione perché un guasto del lavoratore può far eseguire un sottoagente più di una volta.

Per un esempio end-to-end che esegue compiti paralleli di PR analyst e combina i loro riassunti in un report, vedi l'esempio di subagenti del workflow.

Back-end di archiviazione

I flussi di lavoro dinamici utilizzano internamente Durable Functions e supportano gli stessi backend di storage. Di default, i flussi di lavoro utilizzano l'account Archiviazione di Azure che la tua app di funzioni possiede già. Per i carichi di lavoro in produzione, puoi passare al Durable Task Scheduler (DTS), che fornisce una dashboard con lo stato del task per istanza, la cronologia dei ritentativi e i controlli per il lavoro in flight. La guida pratica copre entrambe le opzioni.

Considerazioni

Tieni a mente queste limitazioni attuali quando usi flussi di lavoro dinamici:

  • I gestori di strumenti sicuri per il flusso di lavoro devono essere sincroni e restituire valori serializzabili in JSON.
  • Il modello di IA genera il piano del flusso di lavoro in fase di esecuzione. Non puoi definire template di workflow statici in YAML o Markdown.
  • Non puoi configurare politiche di ritentativo e timeout per compito.
  • La gestione di output di grandi dimensioni e l'integrazione con MCP Tasks non sono disponibili.

Passaggi successivi

Configura strumenti sicuri per il flusso di lavoro ed esegui il tuo flusso di lavoro localmente: