A2A Protokolü: Giriş
- A2A Protocol
- MCP Protocol
- Multi-Agent Systems
- Türkçe
On this page
A2A Protokolü Nedir ve nasıl çalışır?
A2A Protokolü Nedir?
A2A protokolü AI agentları arasında iletişimi sağlayan bir açık kaynak protokoldür. Asıl önemli nokta kullanılan SDK’lerden veya ADK’lerden bağımsız şekilde kullanılabilir olmasıdır. Google SDK ile Langchain’i aynı sistemde A2A üzerinden bağlayabilirsiniz. Bu şirket içerisinde farklı takımların kolayca A2A üzerinden agent’larını entegre etmesini sağlar.
A2A Ne Değildir?
A2A MCP’nin bir alternatifi değildir. En temelde MCP regülize edilmiş ve farklı serverlarda kullanılabilir hale getirişmiş function callardır. MCP Dış dünya ile etkileşmini sağlayan protokoldür. A2A ise diğer agentlar ile etkileşimini regülize eden protokoldür.

Nasıl Çalışır?
Tahmin edilebileceği üzere, diğer agent’a ulaşmak isteyen client agent’ın bir şekilde kullanılabilir agentları öğrenmesi lazım. Ama nasıl?
Agent Card
Diğer agentları bulmak için A2A server’ına istek atılır. Dönen data içinde Agent Card bulunur. Bunu Agentların TC’sine benzetebiliriz. Bu Agent Card içinde:
- name, description, version: Basit kimlik bilgileri.
- supported_interfaces: Desteklenen endpointleri içerir. Bu endpointler üzerinden spesific A2A servisinin verildiği yere istek atabilirsiniz.
- capabilities: A2A'in desteklediği özellikleri getirir. Örnek olarakstreaming veyaextended_agent_card. (Extended card özel durumlarda açık olan agent yetenekleridir. Mesela klasik olan agent_card her kullanıcıya açıkken extended_agent_card sadece giriş yapan kullanıcılara açık olur.)
- default_input_modes / default_output_modes: Beklenen girdi ve çıktı tipini belirler.
- skills: Desteklenen yetenekleri içerir. Vereceğimiz örnekte bu yetenekler AgentSkill objesinde var.

Agent card temelinde robots.txt ile kıyaslanabilir. Genelde şu tarz bir lokasyonda bulunur: .well-known/agent-card.json
Agent Skills
Agent Card içerisinde ayrıca skills diye bir bölüm vardır. (Bu sizin kullandığınız harnesslar(Claude veya ChatGPT(Codex)içinde aktif şekilde kullandıklarınızdan değil. O sizin tekil olarak kullandığın agentları best practiceler ile desteklemek için kullanılıyor genelde.)
Agent skills temelinde şunlardan oluşuyor:
- id: Özgün kimlik numarası (Skill TC gibi)
- name: İnsanlar için okunabilir isim.
- description: Bu skill’in tam olarak ne olduğunun tanımlaması.
- tags: Skill’i bulabilmek için tagler.
- examples: Örnek use-cases’ler içieren kısım.
- input_modes / output_modes:bu skill için hangi input ve outputları destekliyor.
- security_requirements: Eğer varsa güvenlik gereklilikleri.
Agent Skill Örneği:
skill = AgentSkill(
id='echo_bot',
name='Echo Bot',
description='An example agent that acknowledges client request and responds with a "Hello World" message.',
input_modes=['text/plain'],
output_modes=['text/plain'],
tags=['a2a', 'echo-example'],
examples=['hi', 'how are you'],
)Agent Card Örneği:
public_agent_card = AgentCard(
name='Hello World Agent',
description='Just a hello world agent',
version='0.0.1',
default_input_modes=['text/plain'],
default_output_modes=['text/plain'],
capabilities=AgentCapabilities(streaming=True, extended_agent_card=True),
supported_interfaces=[
AgentInterface(
protocol_binding='JSONRPC',
url='http://127.0.0.1:9999',
protocol_version='1.0',
)
],
skills=[skill],
)Çalıştırma Modları
A2A 4 farklı çalıştırma modu ile size geliyor. Bu çalıştırma modlarını ihtiyaçlarınıza göre ayarlayabilirsiniz. Fakat bu modlar update alabiliyorlar. O yüzden referanstaki linklere ayrıntılı şekilde bakmanızı öneririm ayrıntılı bilgi için.
- Synchronous: Anlık cevaplar için ideal sistem.

- Asynchronous: Ana logic devam ederken cevap gelene kadar beklemek.


- Streaming: (SSE Kullanarak bunu sağlıyor) Devamlı şekilde server tarafında istenen işin durumunu dönüyor. Bu client tarafında durumun de olduğunu aktif şekilde görmesini sağlar.

- Push Notifications: (Webhook kullanarak destekleniyor.) Bir durum karşısında (güvenlik ihlali mesela) server tarafındaki agent client tarafındaki agent’a push notification yollar.

Bu çalıştırma tipleri, farklı use-case’lerde önem kazanacaktır. Durumunuza göre implementasyonunuzu yapabilirsiniz. Örnek implementasyonları incelemek isterseniz A2A örnek repo’sunu incelemenizi tavsiye ederim.
Sonuç
Şimdi A2A’in basit seviyede ne olduğunu ve nasıl çalıştığını görmüş oldunuz. İmplementasyon ve ayrıntılar bir medium yazısına sığmayacağından, önümüzdeki günlerde bu içeriğimi genişleterek ilerleteceğim.
Umarım yararlı olmuştur.