A2A Gateway
Genel Bakış
A2A (Agent2Agent), farklı sağlayıcılara ait AI ajanlarının birbirleriyle standart bir protokol üzerinden görev alışverişi yapmasını sağlayan açık bir protokoldür. Apinizer'da A2A, diğer proxy tipleriyle (REST, SOAP, AI, MCP) aynı seviyede birinci sınıf bir API Proxy tipidir — kendi başına ayrı bir yönetim ekranı veya kimlik doğrulama modeli taşımaz, mevcut API Proxy yaşam döngüsünün (deploy, redeploy, rollback, export/import) tamamını paylaşır.
Önceki sürümlerde bir ajan yayınlamak, kendi CRUD ekranına, tek bir hedef proxy'ye ve kendi kimlik doğrulama moduna (Yok / API Anahtarı) sahip ayrı bir "A2A Inbound Agent" kaydı gerektiriyordu. Bu model tamamen kaldırıldı. Artık ajan yayınlamak, A2A tipinde bir API Proxy oluşturup onun yönlendirme modunu seçmekten ibarettir; kimlik doğrulama da proxy'nin normal politika zincirinden gelir. Ayrıca yeni modelde dış bir A2A ajanına passthrough yapabilme ve birden çok dış ajanı tek proxy arkasında birleştirebilme gibi eski modelde bulunmayan yetenekler eklendi. Ayrıntı için bu sayfanın sonundaki Eski Sürümden Geçiş bölümüne bakın.
Bir A2A Gateway, iki yönlendirme modundan biriyle çalışır:
- Agent Yayınla — proxy, kendi LLM yapılandırmasıyla desteklenen bir A2A ajanı olarak kendini yayınlar
- Passthrough — proxy görevleri dış bir A2A ajanına iletir, yol boyunca skill filtresi ve agent card yeniden yazımı uygular
Menüdeki A2A Gateway girişi, A2A Gateway'lerinizin kart görünümlü listesini açar — AI Gateway'lerle aynı düzen; bir kartı açtığınızda o proxy'nin yönlendirme, politika ve trace/trafik/analitik/görev sekmelerine ulaşırsınız.
Apinizer'ı bunun tersi yönde, yani dış A2A ajanlarına görev gönderen taraf olarak kullanmak için ayrı bir A2A Gateway'e gerek yoktur; bu, herhangi bir AI Gateway'e eklenen A2A Çağrısı (LLM) / A2A Çağrısı (Sabit) politikasıyla yapılır, bkz. Giden Ajan Çağrısı.
A2A protokolü JSON-RPC 2.0 üzerine kuruludur. Apinizer, hem senkron görev gönderimini hem de Sunucu Tarafından Gönderilen Olaylar (SSE) ile akış (streaming) yanıtları destekler.
Hızlı Başlangıç
A2A tipinde bir API Proxy oluşturma akışını başlatın — proxy tipi zaten A2A olarak seçili gelir, bir tip seçim ekranı gösterilmez ve doğrudan minimal bir oluşturma formu açılır. Proxy'ye tek bir istemci relative path'i (örn. /a2a/asistan) atanır — bu tek yol, hem JSON-RPC trafiğini hem de discovery belgesini taşır.
Proxy'nin A2A Routing sekmesinde iki moddan birini seçin: proxy'nin kendi ajanı olarak yayın yapması için Agent Yayınla, dış bir A2A ajanına geçiş yapması için Passthrough. Aşağıdaki Modlar bölümüne bakın.
Agent Yayınla modunda proxy'nin AI Routing sekmesinde bir LLM backend'i tanımlamanız zorunludur — bu ayarlanmadan A2A Routing kaydedilemez. Passthrough modunda arka uç A2A ajanını/ajanlarını satır içi tanımlayın ve gerekiyorsa skill izin listesini daraltın.
Proxy'yi normal bir API Proxy gibi bir ortama deploy edin. Deploy geçmişi, redeploy ve rollback davranışı diğer proxy tipleriyle birebir aynıdır.
Bir A2A istemcisi önce {relativePath}/.well-known/agent-card.json üzerinden ajanı keşfeder, ardından proxy'nin relative path'ine JSON-RPC ile görev gönderir (SendMessage, ...). Discovery belgesi kimlik doğrulamadan muaftır; asıl erişim kontrolü, istek proxy'nin politika zincirinden geçerken uygulanır.
Modlar
Agent Yayınla (Agent Expose)
Proxy kendi Agent Card'ını yayınlar ve görevleri kendi LLM backend'i (AI Routing sekmesindeki yönlendirme) üzerinden işler — başka bir proxy'ye devir (loopback) yoktur. Agent Card ayarlarında açıklama override'ı, girdi/çıktı modaliteleri ve manuel bir skill listesi tanımlanabilir; skill listesi boş bırakılırsa proxy'nin adı ve açıklamasından tek bir varsayılan skill türetilir — kart hiçbir zaman boş/doğrulanmamış yayınlanmaz.
Push bildirimleri bu modda proxy bazında açılıp kapatılabilir; ayrıca cluster-içi (private network) hedeflere push gönderilmesine izin verecek ayrı bir anahtar vardır (bkz. Güvenlik ve Governance).
Passthrough
Proxy'ye gelen her A2A çağrısını, arka uç bir A2A ajanına iletir. Dış ajanın Agent Card'ı, bu proxy'nin kendi adresini ve gerçek kimlik doğrulama şemasını yansıtacak şekilde yeniden yazılarak (hostname + güvenlik şeması rewrite) yayınlanır — istemci hiçbir zaman dış ajanın gerçek adresini görmez. Bir skill izin listesi ile Agent Card'da hangi skill'lerin yayınlanacağı daraltılabilir.
Skill izin listesi (ve aşağıdaki kimlik bazlı erişim listesi) Passthrough modunda yalnızca Agent Card yayınında uygulanır — A2A'nın kablo protokolü, MCP'nin araç çağrısındaki gibi çağrı-anında hangi skill'in hedeflendiğini taşıyan bir alan içermez. Bu nedenle bir görev gönderme çağrısı (SendMessage) çağrı anında skill bazında filtrelenemez: izinsiz bir skill Agent Card'da hiç görünmez, ama o skill adını başka bir yoldan zaten bilen bir çağıran yine de bir görev gönderebilir. Gerçek yetkilendirme bu durumda dış ajanın kendi tarafına kalır.
Passthrough modundaki arka uç A2A ajanı/ajanları, proxy'nin A2A Routing sekmesinde, ayrı bir bağlantı ekranına gitmeden doğrudan tanımlanır:
A2A Routing sekmesinin Passthrough bölümünde Sunucu Ekle ile bir satır açın; ajanın uç nokta adresini, kimlik doğrulama bilgilerini ve gerekiyorsa mTLS ayarlarını aynı satırda girin.
Proxy ilk kez deploy edildiğinde Apinizer, tanımlı ajanın/ajanların Agent Card'ını otomatik getirir; yetenekler ve desteklenen modaliteler doğrulanır.
Gönderilen görevlerin durumunu proxy detayındaki Görevler sekmesinden canlı izleyin.
Arka uç ajan, hedefin gerektirdiği kimlik doğrulama şemasına göre yapılandırılır; OAuth2 client credentials akışı da dahil olmak üzere token gerektiren hedeflere bağlanabilirsiniz — token alımı çalışma zamanında otomatik yapılır.
Passthrough yapılandırması APIops REST API ile de yönetilebilir; bkz. API Referansı: API Proxies — Update A2A Routing.
Arka Uç Ajanı Uygulamak: Listeye Uygula → Kaydet → deploy
Arka uç ajanı, satırın sağından açılan çekmecede eklersiniz veya düzenlersiniz. Çekmecedeki Listeye Uygula düğmesi değişikliği yalnızca tabloya yazar — o adımda sunucuya hiçbir şey gitmez. Kalıcı olması için sekmenin altındaki Kaydet düğmesine basmanız gerekir; kaydedilmemiş değişiklik varken sekmenin üstünde bir uyarı durur ve bu uyarı yalnızca kayıt başarılı olduğunda kalkar. Sıra şudur: Listeye Uygula → Kaydet → deploy. Ortadaki adım atlanırsa tabloda yeni ajan görünür, gateway ise eski yapılandırmayı sunmaya devam eder.
Gateway her zaman en son deploy edilen yapılandırmayı sunar. A2A Routing sekmesini kaydetmek tek başına çağıranların gördüğünü değiştirmez; arka uç ajanlar, yayınlanan skill kataloğu ve yönlendirme modu ancak proxy'yi o ortama yeniden deploy ettiğinizde istemcilere ulaşır. Kaydedilmiş ama deploy edilmemiş değişiklik varken, etkilenen ortamları adlarıyla listeleyen bir uyarı şeridi A2A Routing sekmesinin üstünde görünür.
Giden Ajan Çağrısı
Apinizer üzerinden dış bir A2A ajanına görev göndermek istediğinizde, bu görevi fiilen ileten bileşen A2A Çağrısı (LLM) / A2A Çağrısı (Sabit) politikasıdır (bir AI Gateway'ine eklenir). Hedef ajan, Passthrough modundaki gibi politikanın kendi ekranında satır içi tanımlanır:
Bir AI Gateway'ine A2A Çağrısı (LLM) politikasını ekleyin.
A2A Ajanı (Satır İçi) bölümünde uç nokta adresini, kimlik doğrulama bilgilerini ve gerekiyorsa mTLS ayarlarını girin.
Skill'leri Keşfet butonu ajana bağlanır, Agent Card'ı getirir ve skill listesini doğrular — kaydetmeden önce çalışır, ayrı bir "bağlantıyı test et" adımı yoktur.
Boş bırakılırsa keşfedilen tüm skill'lere izin verilir. Kısıtlamak için İzinli Skill'ler listesinden seçim yapın.
Bu ajan tanımı da Passthrough modundakiyle aynı SSRF korumasına tabidir (bkz. Güvenlik ve Governance). Politika ekranındaki A2A Bağlantısı alanı geriye dönük uyumluluk için korunur: satır içi ajan tanımlıyken devre dışı kalır, çalışma zamanında ikisinden yaln ızca biri kullanılır.
Girdiğiniz uç nokta, görevlerin gönderildiği adrestir. Ajanın Agent Card'ı önce aynı adreste aranır; kart orada yayınlanmıyorsa bu adresin altındaki standart keşif yolunda (.../.well-known/agent-card.json) aranır. Yani ajanın görev uç noktasını girmeniz keşif için yeterlidir; doğrudan kart adresini girmek de eskisi gibi çalışmaya devam eder.
Bu politika da APIops REST API ile eklenip güncellenebilir; bkz. API Referansı: Policies.
Agent Card, Görev Yaşam Döngüsü ve Streaming
Agent Card
Her ajan (Agent Yayınla modunda proxy'nin kendisi, Passthrough modunda yeniden yazılmış dış ajan) .well-known/agent-card.json üzerinden kendini tanıtan bir Agent Card yayınlar:
{
"name": "Asistan Proxy",
"description": "Müşteri destek ajanı",
"version": "1.0",
"capabilities": { "streaming": true, "pushNotifications": true },
"defaultInputModes": ["text", "image", "data"],
"defaultOutputModes": ["text"],
"skills": [
{ "id": "asistan-proxy", "name": "Asistan Proxy", "description": "Müşteri destek ajanı" }
],
"securitySchemes": {
"bearerAuth": { "type": "http", "scheme": "bearer" }
}
}
Kartın securitySchemes alanı kart yalan söylemez ilkesiyle, sabit bir listeden değil, proxy'nin fiilen tanımlı olan auth politikalarından türetilir — hiç auth politikası yoksa alan boş kalır, asla yanlış bir şema ilan edilmez. Agent Card bu sürümde imzasız yayınlanır ve insan-onaylı (human-in-the-loop) görev onayı desteklenmez.
Passthrough modunda yeniden yazılan kartın documentationUrl alanı, arka uç ajanın değil bu proxy'nin gateway üzerindeki tam adresini gösterir — ortamın erişim adresi, Apinizer kök bağlamı ve proxy'nin istemci yolu birlikte — böylece adresi izleyen istemci doğrudan gateway'e ulaşır. Ortamda erişim adresi tanımlı değilse alan kök-göreli olur — Apinizer kök bağlamı ve proxy yolu; ikisi de tanımlı değilse yalnızca proxy yoluna düşer.
Kimlik doğrulaması gerektiren bir kanaldan (istekte proxy'nin auth politika zinciri geçildikten sonra) aynı kart GetExtendedAgentCard JSON-RPC metoduyla da alınabilir — kimlik bazlı erişim listesi tanımlıysa bu çağrı, çağıranın kimliğine göre kişiselleştirilmiş bir skill kümesi döndürebilir; herkese açık discovery uç noktası ise her zaman kimliklenmemiş bir çağıranmış gibi değerlendirilir.
Protokol Sürümü
A2A protokolünün tek desteklenen sürümü 1.0'dır (alan gelecekteki bir sürüm genişlemesi için ayrı tutulmuştur) — MCP'nin aksine bir sürüm seçimi yapmanız gerekmez.