Microsoft의 .NET 팀은 CopilotKit과 협력해 AI 에이전트가 애플리케이션 및 사용자 지향 인터페이스와 통신하는 방식을 정의하는 표준인 AG-UI 프로토콜용 공식 .NET SDK 패키지를 발표했다. 이 패키지는 TypeScript 및 Python 패키지와 함께 AG-UI 저장소에 게시됐으며, MIT 라이선스로 NuGet을 통해 제공된다.
실질적인 변화는 이제 모든 .NET 서비스가 특정 에이전트 프레임워크에 특화된 구현에 의존하지 않고 AG-UI를 통해 직접 통신할 수 있다는 점이다. 또한 약칭 MAF로 알려진 Microsoft Agent Framework의 AG-UI 지원도 새로운 SDK 패키지를 기반으로 구축됐다.
패키지는 무엇을 추가하는가?
AG-UI는 장시간 실행되는 에이전트 애플리케이션에서 흔히 발생하는 문제를 해결하는 것을 목표로 한다. 에이전트는 토큰을 점진적으로 전송하거나, 도구를 호출하거나, 작업을 하위 에이전트에 위임하거나, 요청을 실행하는 동안 애플리케이션 상태를 변경할 수 있다. 공통 프로토콜이 없으면 프런트엔드는 각 프레임워크 또는 서비스마다 서로 다른 이벤트 형식을 이해해야 한다.
이 프로토콜은 이러한 상호작용을 RUN_STARTED, TEXT_MESSAGE_CONTENT, STATE_DELTA, RUN_FINISHED 등을 포함한 형식화된 이벤트로 변환한다. 클라이언트 측은 웹 애플리케이션, 터미널, 모바일 애플리케이션 또는 Slack과 Teams 같은 대화형 플랫폼에서 이를 어떻게 표시할지 결정한다.
서버 및 클라이언트 지원
패키지는 상호 보완적인 두 가지 경로를 포함한다. AGUI.Server는 에이전트를 AG-UI 호환 엔드포인트로 변환하고, AGUI.Client는 .NET 애플리케이션이 프로토콜을 지원하는 모든 에이전트에 연결할 수 있도록 한다. 통합은 Microsoft.Extensions.AI 내 대화 추상화 계층인 IChatClient를 기반으로 한다.
서버 측에서 ToChatRequestContext 함수는 수신된 AG-UI 요청을 클라이언트가 기대하는 메시지와 옵션으로 분해한 다음, AsAGUIEventStreamAsync가 응답 스트림을 프로토콜 이벤트로 변환한다. 이 변환은 실행 시작 및 종료 이벤트를 생성하고, 다른 메시지나 도구 호출로 넘어가기 전에 열려 있는 텍스트 또는 추론 블록을 닫는 작업도 수행한다.
Microsoft Agent Framework 사용자는 엔드포인트 설정 코드를 줄여 주는 AddAGUIServer() 및 MapAGUIServer() 함수를 제공하는 ASP.NET Core 통합을 사용할 수 있다.
SDK 구성 요소 및 호환성
패키지는 NuGet을 통해 게시된 다섯 가지 구성 요소로 구성된다.
- AGUI.Abstractions: 이벤트, 메시지, 도구, 상태 및 중단에 관한 프로토콜 모델.
- AGUI.Formatting: 기본적으로 Server-Sent Events를 지원하는 유선 데이터 형식 지정.
- AGUI.Protobuf: 이벤트 유형의 하위 집합을 다루는 선택적 Protobuf 지원.
- AGUI.Client: AG-UI 스트림 소비.
- AGUI.Server: AG-UI 스트림 생성.
SSE는 기본 형식으로 유지되며 SDK에 언급된 모든 이벤트 유형을 지원하는 반면, Protobuf 지원은 하위 집합으로 제한된다.
Agent Framework 사용자에게 무엇이 바뀌는가?
기존 사용자의 기본 프로그래밍 모델은 바뀌지 않으며 이벤트 형식도 호환성을 유지한다. 이는 현재 프런트엔드가 업그레이드된 서버에서도 계속 작동할 수 있음을 의미한다. 다만 일부 인터페이스 이름은 변경됐다. AddAGUI() 및 MapAGUI() 대신 AddAGUIServer() 및 MapAGUIServer()가 사용되며, 네임스페이스와 클래스는 AGUI.Client, AGUI.Server, AGUI.Abstractions 패키지로 이동했다.
클라이언트는 .NET Framework 4.7.2 이상에서 AG-UI 소비를 지원하지만, 엔드포인트 노출에는 현재 버전의 .NET이 필요하다.
이 발표가 중요한 이유는 무엇인가?
이번 릴리스는 .NET 서비스가 애플리케이션마다 이벤트 스트리밍 계층을 다시 구축하지 않고도 여러 인터페이스를 처리할 수 있는 통합 경로를 제공한다. 또한 C#, Python, TypeScript로 작성된 구성 요소 간 역할 교환을 가능하게 하면서 통합 계층을 IChatClient 기반으로 유지한다. 이는 하나의 에이전트를 웹 인터페이스, 내부 애플리케이션 또는 다양한 대화 채널에 연결하려는 조직에 특히 가치가 높다.
그러나 SDK가 서버 구축이나 이벤트 표시 방식의 선택 필요성을 없애는 것은 아니다. SDK는 프로토콜을 담당하는 반면, 웹 구조와 엔드포인트는 여전히 애플리케이션의 책임이다. 또한 Protobuf 지원은 모든 이벤트를 포괄하지 않으므로 SSE가 여전히 완전한 기본 선택지로 남는다.