Agent Framework ile A2A: .NET'te agentları protokol üzerinden sunmak
Microsoft Agent Framework ile bir AI agent'ı A2A protokolü üzerinden ASP.NET Core sunucusunda yayınlanıyor ve başka bir uygulamadan yerel bir agent gibi çağrılıyor. Agent kartı, oturum yönetimi ve JSON-RPC bağlaması adım adım gösteriliyor.
Kilit noktalar
- Sunucuda Microsoft.Agents.AI.Hosting.A2A.AspNetCore, istemcide Microsoft.Agents.AI.A2A paketleri kullanılıyor (1.25.0-preview.261014.1).
- AgentCard içindeki SupportedInterfaces adresi ve bağlama türü, map edilen endpoint ile birebir eşleşmelidir.
- MapA2AJsonRpc ve MapA2AHttpJson ile iki bağlama da sunulabilir; örnek yalnızca JSON-RPC kullanıyor.
- Oturumlar varsayılan olarak tutulmaz; AgentSessionStore kaydetmezseniz takip mesajları önceki konuşmayı hatırlamaz.
- Bir host üzerinde yalnızca bir agent kartı servis edilebilir; /.well-known/agent-card.json tek kart sunar.
- İstemci tarafında A2ACardResolver kartı okur ve agentCard.AsAIAgent() ile uzak agent'ı yerel bir AIAgent gibi kullanır.
Agent-to-Agent (A2A), agent'ların birbirini keşfedip mesajlaşabildiği açık bir protokoldür. Bu yazıda Microsoft Agent Framework ile hazırlanmış bir agent'ın ASP.NET Core üzerinden A2A sunucusu olarak nasıl yayınlanacağı ve bu agent'a farklı bir konsol uygulamasından nasıl erişileceği anlatılıyor. Sunucu tarafında agent kartı, /.well-known/agent-card.json adresinde servis edilir; JSON-RPC bağlaması için MapA2AJsonRpc kullanılır ve oturumların korunması için bir AgentSessionStore tanımlanması gerekir.
İstemci tarafında A2ACardResolver ile kart okunur ve kart bir AIAgent nesnesine dönüştürülür; böylece uzak agent yerel bir agent ile aynı şekilde çağrılır. Örnekte paketler 1.25.0-preview sürümündedir ve AgentSessionStore kullanımı deneysel olduğu için MAAI001 uyarısının bastırılması gerekir. Yazar ayrıca sunucunun yanıtı Task yerine doğrudan message olarak döndürdüğünü belirtiyor.
Gerçek dünyada kullanımı
- Farklı ekipler veya servisler tarafından geliştirilen agent'ların tek bir ASP.NET Core uygulaması üzerinden birbirini çağırması.
- Mevcut bir agent'ı başka bir framework ile yazılmış istemcilere (A2A destekleyen herhangi bir istemci) açmak.
- Ana uygulamanın içinde çalışan bir planlayıcı agent'ın uzak bir hava durumu veya aktivite agent'ını kullanması.
Neden önemli
Uzak bir agent'ı AIAgent olarak kullanabilmek, dağıtık agent mimarilerinde çağrı kodunu değiştirmeden yerel ve uzak agent'lar arasında geçiş yapmanıza olanak tanır. Oturum saklamayı ve kart ayarlarını açıkça yapılandırmanız gerekir.