Dynamiska arbetsflöden i värdbaserade Azure Functions-kompetenser

Dynamiska arbetsflöden är en funktion i Azure Functions-hostade färdigheter. De låter en hostad färdighet starta ett hållbart, flerstegsarbetsflöde av verktygsanrop och väntetider utan att du behöver skriva Durable Functions-orkestreringskod.

För den mest aktuella och omfattande runtime-dokumentationen, se Dynamiska arbetsflöden i Azure Functions Agents Runtime.

Important

Azure Functions värdbaserade kunskaper är för närvarande i förhandsversion. Funktioner, konfigurationsnamn och anslutningsprogram som stöds kan ändras innan allmän tillgänglighet.

Istället för att anropa verktyg ett i taget genom konversationsloopen, låter dynamiska arbetsflöden AI-modellen generera en strukturerad plan över verktygssamtal. Körningsmiljön kör planen som en Durable Functions-orkestrering som kan förgrena sig, vänta, överleva omstarter och kan övervakas, medan endast slutresultatet hamnar i den hostade skillens kontext.

Varför dynamiska arbetsflöden

Det finns fyra grundläggande begränsningar för hostade verktyg för att anropa färdigheter direkt i modellloopen:

  • Tokenkostnad. Varje mellanliggande verktygsresultat läggs till modellens kontext. En flerstegsplan kan spendera tokens på rådata som modellen bara behöver sammanfatta.
  • Latens. Varje direkt verktygssamtal är en ny modellrundtur. Långvarigt eller förgrenat arbete körs seriellt genom modellloopen i stället för att köra oberoende arbetsuppgifter parallellt.
  • Hållbarhet. Inline-arbete kan gå förlorat om arbetaren startar om, och det finns inget förstklassigt sätt att sova på en timer eller vänta på en långvarig extern signal.
  • Observerbarhet. Operatörer kan inte enkelt lista, inspektera eller ställa in arbete ombord utan att gå igenom chattsessionen.

Dynamiska arbetsflöden åtgärdar dessa begränsningar genom att flytta planutförandet till en hållbar orkestrering. Den värdbaserade kompetensen startar arbetsflödet, tar emot ett arbetsflödes-ID och kan avsluta sin tur. Orkestreraren kör verktyg som är säkra för arbetsflöden och beständiga timers. Chattgränssnittet och driftsgränssnitten kan följa arbetsflödet oberoende av varandra, och den värdbaserade färdigheten återupptas när arbetsflödet är slutfört.

Hur dynamiska arbetsflöden relaterar till programmatisk verktygskallning

Dynamiska arbetsflöden liknar i form Anthropics mönster för programmässiga verktygsanrop. I det mönstret skapar modellen en strukturerad plan för verktygsanrop, och körmiljön exekverar den utanför den normala chattloopen där verktyg anropas ett i taget. Denna metod kan minska tokenanvändning och latens eftersom mellanliggande resultat ligger utanför modellkontexten, och en modellförfattad plan kan representera flera verktygsanrop.

Dynamiska arbetsflöden applicerar det mönstret på Azure Functions och lägger till ett hållbarhets- och operationslager:

Capability Programinriktat verktygsanropsmönster Dynamiska arbetsflöden
Planformade verktygsanrop Ja Ja
Lägre tokenanvändning och latens för multiverktygsarbete Ja Ja
Hållbar genomförande vid arbetsomstarter No Ja, genom att använda Durable Functions
Beständiga vänteperioder och timers No Ja
Lista utanför loopen, inspektera, avbryt och avsluta No Ja
Operatörens synlighet i Durable Task Scheduler No Ja, när konfigurerat

När man ska använda dynamiska arbetsflöden

Använd dynamiska arbetsflöden när en hostad färdighet behöver utföra arbete som sträcker sig längre än en enda chattur eller ett direkt verktygsanrop. Bra alternativ inkluderar:

  • Fan-out/fan-in-mönster som samlar bevis från flera oberoende källor parallellt, såsom loggar, mätvärden och distributionshistorik.
  • Köra isolerade specialisthostade färdigheter parallellt och kombinera deras svar.
  • Att köra en flerstegsplan där senare steg beror på tidigare verktygsresultat.
  • Att vänta på en hållbar timer utan att hålla en arbetare sysselsatt.
  • Att hålla stora mellanresultat utanför den värdsatta färdighetens konversationskontext tills ett slutresultat eller en sammanfattning finns tillgänglig.
  • Spårning och styrning av långvarigt arbete utanför modellloopen.

Tip

Om arbetet kan slutföras i ett enda verktygsanrop eller kräver omedelbar användarrespons vid varje steg, använd direkt verktygsanrop istället för ett dynamiskt arbetsflöde.

Hur ett arbetsflöde fungerar

Följande diagram visar huvudkomponenterna i den dynamiska arbetsflödesarkitekturen:

Diagram som visar en värdbaserad färdighet som startar ett dynamiskt arbetsflöde som kör verktygsaktiviteter, timers och subagenter via en Durable orchestrator.

Ett dynamiskt arbetsflöde körs genom denna sekvens:

  1. En händelse triggar den hostade färdigheten, eller en användare skickar en förfrågan via chattgränssnittet.
  2. Den hostade färdigheten anropar start_workflow med en arbetsflödesplan genererad av AI-modellen.
  3. Körmiljön startar planen som en Durable Functions-orkestrering och returnerar omedelbart ett ID för arbetsflödet.
  4. Orkestratorn kör färdiga verktygsaktiviteter parallellt och skapar beständiga timers för wait steg. Den kan också delegera arbete till subagenthostade färdigheter, som alla körs i en isolerad, tillståndslös session.
  5. När arbetsflödet når ett sluttillstånd meddelar körtiden den värdbaserade färdigheten, som anropar get_workflow_status och sammanfattar slutresultatet.

När den hostade färdigheten använder det inbyggda chattgränssnittet, pollar UI:t även arbetsflödesstatus och visar ett framstegskort.

Mellanresultat lagras i arbetsflödeslagret. Den hostade färdigheten ser bara arbetsflödes-ID:t vid starttillfället och slutstatusen när den hämtar resultatet. Den värdbaserade färdigheten genomsöker inte medan arbetsflödet körs.

Verktyg för arbetsflödeshantering

När du aktiverar arbetsflöden lägger körmiljön till dessa verktyg i den värdbaserade färdigheten:

Tool Purpose
start_workflow Startar en validerad arbetsflödesplan och returnerar omedelbart ett arbetsflödes-ID.
get_workflow_status Får aktuell status och slutresultat för ett arbetsflöde.
list_workflows Listar arbetsflöden som ägs av den aktuella sessionen.
cancel_workflow Begär samarbetsvillig avbokning.
terminate_workflow Avslutar arbetsflödesinstansen abrupt.

Den värdbaserade färdigheten anropar dessa verktyg. Användare anropar dem inte direkt i applikationskoden.

Arbetsflödessubagenter

En arbetsflödesaktiverad hostad färdighet kan ge åtkomst till specialiserade hostade färdigheter i sin workflows.subagents konfiguration. Varje specialist är ytterligare en .agent.md-fil i samma värdbaserade kompetensapp.

Följande frontuppgift gör att koordinatorn kan använda två specialister:

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

Värdet agent är specialistens slugg för filnamnet. Till exempel pr_status_analyst syftar på pr_status_analyst.agent.md. Det valfria when värdet hjälper modellen att avgöra när specialisten ska användas. Runtimen validerar varje specialist mot detta explicita beviljande innan arbetsflödet schemalägs.

Modellen kan generera en sub_agent arbetsflödesuppgift med id, agent, och en självständig task. En subagentuppgift kan också använda depends_on, when, och for_each.

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

Varje subagentanrop är tillståndslös och isolerad:

  • Specialisten använder sin egen modell, instruktioner, verktyg, MCP-servrar, färdigheter och timeout.
  • Specialisten får inte koordinatorns samtalshistorik, sandlåda, arbetsflödeshanteringsverktyg eller delegeringsverktyg för chatttid.
  • Ett specialistfel eller timeout misslyckas med det ursprungliga arbetsflödet.
  • Specialiserade verktyg bör tåla omkörning eftersom ett arbetarfel kan göra att en subagent körs mer än en gång.

För ett end-to-end-exempel som kör parallella PR-analytikeruppgifter och kombinerar deras sammanfattningar till en rapport, se arbetsflödesunderagentens exempel.

Lagringsserverdel

Dynamiska arbetsflöden använder Durable Functions internt och stödjer samma lagringsbackends. Som standard använder arbetsflöden Azure Storage-kontot som din funktionsapp redan har. För produktionsarbetsbelastningar kan du byta till Durable Task Scheduler (DTS), som tillhandahåller en instrumentpanel med uppgiftsstatus per instans, omprövningshistorik och kontroller för arbete under flygning. Instruktionsguiden täcker båda alternativen.

Considerations

Tänk på dessa nuvarande begränsningar när du använder dynamiska arbetsflöden:

  • Arbetsflödessäkra verktygshanterare måste vara synkrona och returnera JSON-serialiserbara värden.
  • AI-modellen genererar arbetsflödesplanen under körning. Du kan inte definiera statiska arbetsflödesmallar i YAML eller Markdown.
  • Du kan inte konfigurera policyer för återförsök per uppgift och timeout.
  • Hantering av stora mängder utdata och integrering med MCP Tasks är inte tillgängliga.

Nästa steg

Konfigurera arbetsflödessäkra verktyg och kör ditt arbetsflöde lokalt: