LLM WikiAccess-protected knowledge portal

WIKI

Microsoft Agent Framework 1.0: AutoGen과 Semantic Kernel이 하나의 프로덕션 SDK로 수렴하는 방법

두 프레임워크가 하나로 합쳐지기까지 2020년대 중반 Microsoft는 에이전트 AI 영역에서 두 개의 라이브러리를 동시에 운영했다. AutoGen 은 멀티에이전트 오케스트레이션 연구에서 출발한 라이브러리였다. Semantic Kernel 은 LLM 기반 엔터프라이즈 애플리케이션을 위한 프로덕션 SDK였다. 두 프레임워크는 역할이 달랐지만, 어느 것을 선택해야 하는지 불분명했다. 프로덕션 안정성이 필요하면 Semantic K

경로human/study/content/ai-frontier/10-microsoft-agent-framework-1-0-autogen-semantic-kernel.md
카테고리Study
태그#agent #ai-review #autogen #crawler #framework #kernel #semantic #study

두 프레임워크가 하나로 합쳐지기까지

2020년대 중반 Microsoft는 에이전트 AI 영역에서 두 개의 라이브러리를 동시에 운영했다. AutoGen은 멀티에이전트 오케스트레이션 연구에서 출발한 라이브러리였다. Semantic Kernel은 LLM 기반 엔터프라이즈 애플리케이션을 위한 프로덕션 SDK였다. 두 프레임워크는 역할이 달랐지만, 어느 것을 선택해야 하는지 불분명했다. 프로덕션 안정성이 필요하면 Semantic Kernel, 멀티에이전트 실험이 필요하면 AutoGen — 이런 비공식 규칙이 통용됐다.

2025년 10월 Microsoft는 AutoGen을 유지 모드(maintenance mode)로 전환했다. 새 기능 개발을 중단하고 커뮤니티 관리 체제로 이행했다. 대신 두 프레임워크를 통합한 Microsoft Agent Framework(MAF)를 공개 프리뷰로 출시했다. 2026년 4월 3일, MAF 1.0 GA(General Availability)가 릴리스됐다. .NET과 Python 양쪽 SDK를 Microsoft.Agents.AI 네임스페이스로 통합하고, MCP(Model Context Protocol)와 A2A(Agent-to-Agent) 프로토콜을 기본으로 지원한다.

이 장은 2026년 7월 15일 기준으로 작성했다. Microsoft Agent Framework 1.0.0은 2026-04-03에 GA 릴리스됐다. A2A 프로토콜 v1.0은 2026년 초 안정화됐다. AutoGen 0.4는 유지 모드이며 신규 프로젝트에는 MAF가 권장된다. 세부 API 경로는 버전마다 변경될 수 있으므로 공식 Learn 문서를 병행해 확인한다.


3계층 아키텍처

MAF 1.0의 설계는 세 계층으로 나뉜다. 각 계층의 책임은 명확히 분리되어 있고, 상위 계층은 하위 계층 위에서 동작한다.

Microsoft Agent Framework 1.0 — 3계층 아키텍처 ① Foundation 계층 — Semantic Kernel 계보 LLM 커넥터 Azure OpenAI OpenAI · Claude Gemini · Bedrock 메모리·플러그인 Vector store Kernel functions Skill library 미들웨어 파이프라인 Content safety Logging · Telemetry Compliance hook 상태 관리 Session context Checkpoint/Resume HITL pause/approve ② 오케스트레이션 계층 — AutoGen 계보 에이전트 유형 ChatAgent AzureAIAgent OpenAIAssistantAgent 사용자 정의 Agent AgentRuntime 메시지 라우팅 에이전트 생명주기 OTel span 발행 비동기 Actor 모델 워크플로 패턴 Sequential Concurrent Handoff Group Chat Magentic-One (조건 분기·팬아웃·수렴·스트리밍·체크포인트 내장) ③ 통합 계층 (Integration) MCP Model Context Protocol 도구 디스커버리·호출 표준화된 도구 계약 A2A Protocol 에이전트 간 통신 크로스 런타임(.NET↔Python) HTTP 기반 오픈 표준 Azure 서비스 Azure AI Foundry App Service 호스팅 Managed Identity 관측성 OpenTelemetry 에이전트 트레이스 메시지 흐름 추적 LLM 프로바이더 (6종) Azure OpenAI · OpenAI Anthropic Claude Amazon Bedrock Google Gemini Ollama (로컬) 프로바이더 교체 = 1줄 변경 타임라인 2025-10: AutoGen 유지 모드 전환 2025-10: MAF 공개 프리뷰 2026-04-03: MAF 1.0 GA
Microsoft Agent Framework 1.0 — 3계층 아키텍처와 외부 연결

Foundation 계층: Semantic Kernel이 제공하는 것

Foundation 계층은 Semantic Kernel이 수년간 쌓아온 프로덕션 안정성을 그대로 흡수한다.

LLM 커넥터: MAF 1.0은 6개 LLM 프로바이더를 기본 지원한다. Azure OpenAI, OpenAI, Anthropic Claude, Amazon Bedrock, Google Gemini, Ollama. 프로바이더 교체는 커넥터 초기화 1줄 변경으로 가능하도록 설계됐다. 프롬프트나 에이전트 로직은 건드리지 않아도 된다.

미들웨어 파이프라인: 에이전트 실행 루프에 로직을 주입하는 계층. 프롬프트를 수정하지 않고도 콘텐츠 안전 필터, 감사 로그, 컴플라이언스 훅을 추가할 수 있다. 규제 업종에서 "AI가 특정 주제를 절대 응답해서는 안 된다"는 요건을 코드에서 분리해 관리하는 지점이 이 계층이다.

상태 관리: 세션 컨텍스트, 체크포인트, 재개(pause/resume), Human-in-the-Loop(HITL) 승인 흐름이 이 계층에서 제공된다. 장기 실행 에이전트가 중간에 사람의 승인을 기다리다가 재개할 때 상태가 보존된다.


오케스트레이션 계층: AutoGen 계보의 멀티에이전트 추상화

에이전트 유형

MAF 1.0은 세 가지 기본 에이전트 유형을 제공한다.

세 유형 모두 동일한 인터페이스를 구현하므로, 한 유형으로 작성된 오케스트레이션 패턴은 다른 유형으로 교체해도 동작한다.

AgentRuntime: 에이전트를 연결하는 런타임

AgentRuntime은 AutoGen 0.4의 Actor 모델 개념을 계승한 핵심 구성요소다. 각 에이전트는 주소를 가진 Actor로 등록되고, 런타임은 에이전트 간 메시지 라우팅과 생명주기를 관리한다. 에이전트가 응답할 때마다 OpenTelemetry 스팬을 자동으로 발행해 분산 추적 도구에서 에이전트 실행 흐름을 시각화할 수 있다.

워크플로 패턴

MAF 1.0은 다섯 가지 오케스트레이션 패턴을 안정적으로 지원한다.

패턴동작적합한 상황
Sequential에이전트가 순서대로 결과를 다음 에이전트에 전달단계별 처리, 리뷰 체인
Concurrent여러 에이전트가 동시에 실행, 결과 수렴병렬 분석, 독립적인 서브태스크
Handoff특정 조건이 되면 다음 에이전트에게 제어를 넘김전문화된 에이전트로의 에스컬레이션
Group Chat여러 에이전트가 협업해 답변을 도출토론·검토·다각도 분석
Magentic-One오케스트레이터 에이전트가 계획을 세우고 전문 에이전트에게 태스크를 배분복잡한 다단계 추론, 자율 태스크 실행

모든 패턴은 스트리밍, 체크포인트, Human-in-the-Loop 승인, pause/resume을 내장 지원한다. 그래프 기반 워크플로 엔진 위에서 패턴을 조합할 수 있어, 예컨대 Concurrent 단계 후 Magentic-One 단계를 이어 붙이는 복합 파이프라인을 만들 수 있다.


MCP와 A2A: 에이전트가 도구와 서로를 찾는 방법

MCP (Model Context Protocol)

MCP는 LLM 에이전트가 외부 도구를 표준화된 방식으로 디스커버리·호출하는 프로토콜이다. MAF 1.0은 MCP를 기본 통합 계층으로 채택했다. MCP 서버에 등록된 도구는 에이전트 설정에 MCP 엔드포인트만 추가하면 에이전트가 자동으로 발견하고 호출할 수 있다.

MAF 이전에는 각 프레임워크마다 도구 정의 방식이 달랐다. Semantic Kernel의 KernelFunction, AutoGen의 @tool 데코레이터가 별개로 존재했다. MAF는 MCP를 통해 이 도구 계약을 통일했다. MAF 외부의 시스템(예: LangGraph 에이전트, Claude Desktop)도 동일한 MCP 서버를 공유할 수 있다.

A2A (Agent-to-Agent) Protocol

A2A는 서로 다른 런타임의 에이전트가 표준화된 방식으로 통신하는 오픈 프로토콜이다. MAF 1.0이 v1.0으로 채택한 이 프로토콜은 HTTP 위에서 동작하며, 다음 문제를 해결한다.

크로스 런타임 조합: Python으로 작성된 MAF 에이전트가 .NET으로 작성된 MAF 에이전트와 구조화된 메시지로 통신할 수 있다. 더 나아가 다른 프레임워크(LangGraph, CrewAI 등) 에이전트가 A2A를 구현했다면 같은 방식으로 조합할 수 있다.

에이전트 디스커버리: A2A 에이전트는 자신의 능력을 선언하는 Agent Card를 발행한다. A2A v1.0에서 Agent Card는 암호화 서명을 지원해 에이전트 신원 검증이 가능하다. 규제 환경에서 "어느 에이전트가 이 결정을 내렸는가"를 추적하는 데 사용된다.

다자 거버넌스: A2A 프로토콜의 기술 운영위원회에는 AWS, Cisco, Google, IBM Research, Microsoft, Salesforce, SAP, ServiceNow가 참여한다. 단일 벤더 종속이 아닌 산업 표준을 목표로 한다.

A2A를 쓸 때 주의할 점이 있다. HTTP 기반이므로 에이전트 간 호출마다 네트워크 레이턴시가 발생한다. 같은 프로세스 안에서 에이전트를 조합할 때는 A2A보다 AgentRuntime의 직접 메시지 패싱이 빠르다. A2A는 경계를 넘는 조합(다른 팀, 다른 런타임, 다른 언어)에 적합하다.


AutoGen / Semantic Kernel 마이그레이션

AutoGen 0.4에서 MAF로

AutoGen 0.4의 핵심 추상화(AgentChat의 AssistantAgent, RoundRobinGroupChat, SelectorGroupChat)는 MAF의 에이전트 유형과 워크플로 패턴으로 직접 대응한다. Microsoft는 공식 마이그레이션 가이드를 제공하지만, 몇 가지 변화에 주의해야 한다.

AutoGen 0.4는 단일 Python 패키지였다. MAF는 Microsoft.Agents.AI 아래에 여러 패키지로 분할된다. autogen-agentchat에서 임포트하던 클래스 경로가 변경된다. 이벤트 핸들러와 메시지 유형도 새 API에 맞게 조정해야 한다.

AutoGen 0.4의 CancellationToken 기반 타임아웃은 MAF에서도 지원된다. 그러나 AutoGen 0.4의 일부 실험적 기능(커스텀 런타임 구현 등)은 MAF의 안정 API에 포함되지 않았을 수 있다. AutoGen 0.4에서 실험적 기능을 사용하고 있었다면 마이그레이션 전 확인이 필요하다.

Semantic Kernel에서 MAF로

Semantic Kernel을 단독으로 사용하고 있었다면 MAF로의 전환은 점진적으로 가능하다. KernelBuilder, KernelFunction, ChatCompletionAgent 같은 Semantic Kernel API는 MAF 내부에서 그대로 동작한다. MAF는 Semantic Kernel을 대체하는 것이 아니라 그 위에서 오케스트레이션 계층을 추가한다. 기존 Semantic Kernel 플러그인을 MCP 서버로 래핑하면 더 넓은 에이전트 생태계와 호환성을 얻을 수 있다.


운영 고려사항

체크포인트와 HITL 비용

장기 실행 에이전트에서 체크포인트는 상태를 직렬화해 외부 저장소에 기록한다. 체크포인트 저장소로 Azure Storage, SQL 기반 백엔드 등 다양한 옵션이 있다. 체크포인트 빈도가 높을수록 I/O와 저장 비용이 증가한다. HITL 승인이 포함된 워크플로는 사람이 응답하지 않으면 에이전트가 중단된 채로 대기한다. 장기 대기 에이전트가 많아지면 런타임의 메모리 압력과 커넥션 풀 소모를 확인해야 한다.

A2A 레이턴시 예산

A2A 에이전트 간 호출은 HTTP 요청이다. 에이전트 체인의 깊이가 깊을수록 레이턴시가 누적된다. 동기적으로 조합되는 A2A 에이전트가 5단계라면, 각 홉의 P99 레이턴시가 전체 응답 시간에 그대로 더해진다. 지연에 민감한 경로는 A2A 대신 같은 런타임 내 직접 메시지 패싱으로 설계한다.

미들웨어 파이프라인 순서

미들웨어는 등록 순서대로 실행된다. 콘텐츠 안전 필터를 마지막에 등록하면 필터 이전 단계에서 이미 외부 API를 호출한 뒤 필터링이 일어난다. 규제 요건이 있다면 필터 미들웨어의 실행 순서와 위치를 명시적으로 설계한다.

LLM 프로바이더 교체와 프롬프트 회귀

프로바이더 교체가 1줄로 가능하더라도 모델 응답 특성은 프로바이더마다 다르다. 프로바이더를 바꿀 때는 기존 프롬프트와 파싱 로직이 새 모델의 응답 형식에서도 동작하는지 검증해야 한다. 특히 도구 호출(tool call) 응답 형식, JSON 출력 형식, 거절(refusal) 패턴이 모델마다 다를 수 있다.


채택 판단표

MAF 1.0 — 우선 채택 조건
AutoGen 0.4 또는 Semantic Kernel을 이미 사용 중이면 MAF로의 마이그레이션 경로가 공식 지원된다.
Azure 환경에서 운영하는 엔터프라이즈 에이전트라면 AzureAIAgent + Managed Identity 조합이 가장 자연스럽다.
A2A를 통한 크로스 런타임 에이전트 조합이 필요하면 MAF가 현재 가장 성숙한 A2A 구현체 중 하나다.
규제 업종에서 콘텐츠 안전·감사 로그를 미들웨어로 주입해야 하면 Foundation 계층이 이를 구조적으로 지원한다.
주의가 필요한 상황
AutoGen 0.4의 실험적 기능을 사용 중이라면 MAF 안정 API에 포함됐는지 먼저 확인한다.
A2A 에이전트 체인이 깊어질수록 레이턴시가 누적된다. 동기 체인의 홉 수를 측정하고 예산을 잡는다.
LLM 프로바이더를 교체할 때 프롬프트 회귀 테스트를 먼저 실행한다. API 1줄과 응답 품질은 별개다.
LangGraph와의 비교 기준
Python 생태계만 필요하고 복잡한 그래프 상태 관리(DeltaChannel 등)가 핵심이면 LangGraph가 더 성숙하다.
.NET + Python 혼합 환경, Azure 네이티브, 또는 이미 Semantic Kernel 코드베이스가 있다면 MAF가 더 적합하다.
두 프레임워크 모두 A2A를 구현하므로 향후 에이전트 간 연결은 프레임워크 경계에 종속되지 않을 수 있다.
MAF 1.0 기능별 채택 기준

정리

Microsoft Agent Framework 1.0은 두 개로 나뉘어 있던 Microsoft의 에이전트 AI 전략을 하나로 수렴한 결과물이다.

Semantic Kernel의 안정성 위에 AutoGen의 오케스트레이션을 얹었다. Foundation 계층은 LLM 커넥터, 미들웨어, 상태 관리를 담당하고, 오케스트레이션 계층은 에이전트 유형과 워크플로 패턴을 제공한다.

6개 LLM 프로바이더를 1줄 교체로 전환할 수 있는 구조는 모델 공급망 종속을 줄이는 데 의미 있다. 단, 모델 교체가 프롬프트 동작에 미치는 영향은 별도로 검증해야 한다.

A2A 프로토콜은 에이전트 간 조합의 경계를 프레임워크 밖으로 확장한다. 하지만 HTTP 홉 레이턴시는 실제 운영에서 설계 제약이 된다.

AutoGen 0.4를 유지 모드로 전환하면서 Microsoft는 생태계를 단일 SDK로 정리했다. 기존 AutoGen 또는 Semantic Kernel 코드베이스가 있다면 공식 마이그레이션 가이드와 함께 단계적 이행이 가능하다.

References