Post

Azure Functions Dynamic Workflows — 모델은 계획만, 실행은 Durable이

Azure Functions Hosted Skills의 Dynamic Workflows는 LLM이 DAG 계획을 한 번 쓰고 Durable Functions가 추론 루프 밖에서 실행해 토큰과 지연을 줄인다.

Azure Functions Dynamic Workflows — 모델은 계획만, 실행은 Durable이

이 글은 Microsoft Azure SDK 블로그의 Dynamic Workflows 발표를 읽고 정리·재구성한 것입니다. 수치는 모두 원문 저자의 자체 측정이며, 기능은 퍼블릭 프리뷰입니다.

결론부터

에이전트가 도구를 열 번 부르면 결과가 열 번 모델로 돌아가 컨텍스트가 불어납니다. Dynamic Workflows는 이걸 뒤집습니다. LLM은 작업 계획을 DAG로 한 번만 쓰고, 실행은 내장 Durable Functions 엔진이 추론 루프 밖에서 맡습니다. 중간 도구 결과가 모델로 돌아가지 않으니 토큰과 지연이 크게 줄어듭니다. 이름이 비슷한 10/2의 “Copilot Dynamic workflows”와는 다른 기능으로, Azure Functions에서 직접 에이전트를 만드는 쪽의 이야기입니다.

① 도구 결과가 모델로 돌아오느냐의 차이 일반 추론 루프 LLM 도구 ×N 호출 때마다 결과가 컨텍스트에 쌓임 Dynamic Workflows LLM DAG 계획 1회 Durable 엔진 실행 중간 결과는 모델로 안 돌아감
모델의 일은 "계획 쓰기"로 줄고, 반복 실행은 엔진이 가져간다.

어떻게 켜고 쓰나

  • .agent.md 머리말에 workflows: enabled: true를 넣으면 켜집니다.
  • 도구는 @workflow_tool 데코레이터를 붙인 Python 함수입니다. dict 인자 하나를 받고 JSON 직렬화 가능한 값을 돌려줘야 합니다.
  • LLM에게는 start_workflow, get_workflow_status, list_workflows, cancel_workflow, terminate_workflow 같은 관리 도구가 주어집니다. start_workflow는 ID만 돌려주는 fire-and-forget입니다.
  • DAG 요소는 depends_on(의존 없는 작업은 병렬), for_each, when, 재시도·타임아웃, 서브 에이전트, 최대 24시간 Durable 타이머입니다.
  • 설치는 Copilot의 Customize > Plugins에서 azure-functions-skills 플러그인을 쓰는 방법(권장)이나, azurefunctions-agents-runtime 패키지로 직접 구성하는 방법이 있습니다. Python 3.13 이상, Functions Core Tools v4, 로컬 실행용 Azurite가 필요합니다.

숫자는 이렇게 나왔다

원문 벤치마크는 서비스 N개를 점검해 보고서를 쓰는 합성 시나리오이고, 모델은 Foundry의 gpt-5.4-mini입니다. 세 번 실행의 중앙값입니다.

서비스 수토큰(일반 → 워크플로)지연(일반 → 워크플로)
112,744 → 5,60938.6초 → 7.1초
1099,097 → 6,781 (93.1% 감소)247.1초 → 12.7초 (95.1% 감소)

일반 방식은 서비스가 하나 늘 때마다 토큰이 약 1만씩 늘지만, 워크플로 방식은 1개에서 10개로 가도 1,172 늘었을 뿐입니다. 결정적 검사에서 24개 출력이 모두 기대 보고서와 일치했습니다.

쓰기 전에 알아둘 제약

  • 계획은 고정: 실행 중 DAG를 바꿀 수 없고, 사용자에게 되묻는 것도 안 됩니다.
  • 한도: 계획당 노드 50개, 병렬 10개, 세션당 활성 워크플로 10개.
  • MCP 도구는 직접 못 씀: Python @workflow_tool로 감싸야 합니다.
  • 최소 1회 실행: 같은 작업이 반복될 수 있어, 원문은 시도 간에 유지되는 idempotency_key로 부수 효과를 한 번만 일어나게 하라고 안내합니다.
  • 서브 에이전트는 한 단계만 가능하고, 결과는 작게 유지해야 합니다.

내 생각

수치가 인상적이지만 구조화된 보고서 작업에 한정된 측정이고, 원문도 자유 형식 작업에서는 다를 수 있다고 인정합니다. 그래서 “모든 에이전트에 쓰라”가 아니라, 도구 호출이 많고 순서를 미리 정할 수 있는 작업에 후보로 두는 게 맞아 보입니다. 퍼블릭 프리뷰라 API가 바뀔 수 있다는 점도 감안해야 합니다.

영상으로 보기

기초부터 짚고 싶다면 이 영상을 먼저 보세요. (AI 에이전트 기초 EP.01 — AI 에이전트란?)

📺 Peanut Radio AI 유튜브 채널 — AI 시대의 IT, 기초부터 실무까지

참고

This post is licensed under CC BY 4.0 by the author.