Das .NET-Team von Microsoft hat gemeinsam mit CopilotKit ein offizielles .NET-SDK für das AG-UI-Protokoll angekündigt. Dabei handelt es sich um einen Standard, der festlegt, wie KI-Agenten mit Anwendungen und benutzerorientierten Oberflächen kommunizieren. Das Paket wurde im AG-UI-Repository zusammen mit den TypeScript- und Python-Paketen veröffentlicht und ist über NuGet unter der MIT-Lizenz verfügbar.
Die praktische Änderung besteht darin, dass jeder .NET-Dienst nun direkt über AG-UI kommunizieren kann, ohne auf eine für ein bestimmtes Agenten-Framework angepasste Implementierung angewiesen zu sein. Auch die AG-UI-Unterstützung im Microsoft Agent Framework, kurz MAF, basiert nun auf den neuen SDK-Paketen.
Was bietet das Paket?
AG-UI soll ein häufiges Problem bei langlebigen Agentenanwendungen lösen. Agenten können Token schrittweise senden, Tools aufrufen, Aufgaben an Unteragenten delegieren oder den Anwendungsstatus während der Ausführung einer Anfrage ändern. Ohne ein gemeinsames Protokoll müssen Frontends für jedes Framework oder jeden Dienst unterschiedliche Ereignisformate verstehen.
Das Protokoll wandelt diese Interaktionen in typisierte Ereignisse um, darunter RUN_STARTED, TEXT_MESSAGE_CONTENT, STATE_DELTA und RUN_FINISHED. Die Clientseite entscheidet, wie diese dargestellt werden, sei es in einer Webanwendung, einem Terminal, einer mobilen Anwendung oder auf Chatplattformen wie Slack und Teams.
Server- und Clientunterstützung
Das Paket umfasst zwei sich ergänzende Pfade. AGUI.Server wandelt einen Agenten in einen AG-UI-kompatiblen Endpunkt um, während AGUI.Client einer .NET-Anwendung die Verbindung zu jedem Agenten ermöglicht, der das Protokoll unterstützt. Die Integration basiert auf IChatClient, der Chat-Abstraktionsebene innerhalb von Microsoft.Extensions.AI.
Auf der Serverseite zerlegt die Funktion ToChatRequestContext die eingehende AG-UI-Anfrage in die vom Client erwarteten Nachrichten und Optionen. Anschließend wandelt AsAGUIEventStreamAsync den Antwortstrom in Protokollereignisse um. Diese Umwandlung übernimmt außerdem die Erstellung von Ereignissen für den Beginn und das Ende eines Laufs sowie das Schließen offener Text- oder Reasoning-Blöcke, bevor zu einer anderen Nachricht oder einem weiteren Toolaufruf gewechselt wird.
Benutzer des Microsoft Agent Framework können sich auf die ASP.NET-Core-Integration stützen, die die Funktionen AddAGUIServer() und MapAGUIServer() bereitstellt, um den Code für die Einrichtung des Endpunkts zu reduzieren.
SDK-Komponenten und Kompatibilität
Das Paket besteht aus fünf über NuGet veröffentlichten Komponenten:
- AGUI.Abstractions: Protokollmodelle für Ereignisse, Nachrichten, Tools, Status und Unterbrechungen.
- AGUI.Formatting: Formatierung der Daten auf der Leitung, standardmäßig mit Unterstützung für Server-Sent Events.
- AGUI.Protobuf: Optionale Protobuf-Unterstützung für eine Teilmenge der Ereignistypen.
- AGUI.Client: Konsumieren von AG-UI-Streams.
- AGUI.Server: Erzeugen von AG-UI-Streams.
SSE bleibt das Standardformat und unterstützt alle im SDK genannten Ereignistypen, während die Protobuf-Unterstützung auf eine Teilmenge beschränkt ist.
Was ändert sich für Benutzer des Agent Framework?
Das grundlegende Programmiermodell ändert sich für bestehende Benutzer nicht, und auch das Ereignisformat bleibt kompatibel. Das bedeutet, dass bestehende Frontends weiterhin mit einem aktualisierten Server funktionieren können. Einige Schnittstellennamen wurden jedoch geändert: AddAGUIServer() und MapAGUIServer() ersetzen AddAGUI() und MapAGUI(). Außerdem wurden Namespaces und Klassen in die Pakete AGUI.Client, AGUI.Server und AGUI.Abstractions verschoben.
Der Client unterstützt den Konsum von AG-UI ab .NET Framework 4.7.2, während für die Bereitstellung des Endpunkts eine aktuelle .NET-Version erforderlich ist.
Warum ist diese Ankündigung wichtig?
Die Veröffentlichung bietet .NET-Diensten einen einheitlichen Weg, mit mehreren Oberflächen zu arbeiten, ohne für jede Anwendung eine eigene Ereignisstreaming-Schicht neu zu entwickeln. Sie ermöglicht außerdem den Austausch von Rollen zwischen in C#, Python und TypeScript geschriebenen Komponenten, während die Integrationsschicht auf IChatClient basiert. Dies ist besonders wertvoll für Unternehmen, die einen einzelnen Agenten mit Weboberflächen, internen Anwendungen oder verschiedenen Chatkanälen verbinden möchten.
Das SDK macht es jedoch nicht überflüssig, den Server zu erstellen oder eine Methode zur Darstellung der Ereignisse auszuwählen. Es übernimmt das Protokoll, während die Webarchitektur und der Endpunkt in der Verantwortung der Anwendung bleiben. Zudem unterstützt Protobuf nicht alle Ereignisse vollständig, weshalb SSE weiterhin die standardmäßige vollständige Option ist.