A2A بروتوكول العميل إلى العميل
Type: Learn + Build
Languages: Python (stdlib, http.server, json)
Prerequisites: Phase 16 · 04 (Primitive Model)
Time: ~75 minutes
المشكلة
وكيلك يحتاج إلى الاتصال بعامل آخر في نظام آخر. كيف؟ يمكنك كشف نقطة نهاية HTTP، وتعريف مخطط JSON مخصص، وتأمل الجانب الآخر يتحدث ذلك. كل زوج من العاملين يصبح دمج مخصص.
A2A هو بروتوكول الأسلاك العالمي لهذا المكالمة. اكتشاف قياسي، نموذج مهمة قياسي، النقل القياسي، الأثاث القياسي. مثل HTTP+REST ولكن للعملاء كمواطنين من الدرجة الأولى.
المفهوم
العناصر الأربعة
Agent Card.وثيقة JSON في /.well-known/agent-card.jsonوصف الوكيل: الاسم والمهاراتsupportedInterfaces(URL نقطة النهاية، التزاما بالبروتوكول، نسخة بروتوكول) ، وأنواع الإدخال والإخراج المتبنية، ومتطلبات الوصول (securitySchemesبالإضافةsecurityRequirements"الاكتشاف يحدث من خلال قراءة البطاقة"
httpGET /.well-known/agent-card.json HTTP/1.1
Host: agent.example.comjson{
"name": "code-review-agent",
"description": "Reviews Python and TypeScript code.",
"version": "1.0.0",
"supportedInterfaces": [
{
"url": "https: TOK0
"protocolBinding": "HTTP+JSON",
"protocolVersion": "1.0"
}
],
"capabilities": {"streaming": false, "pushNotifications": false},
"securitySchemes": {
"bearer": {"httpAuthSecurityScheme": {"scheme": "Bearer"}}
},
"securityRequirements": [{"schemes": {"bearer": {"list": []}}}],
"defaultInputModes": ["text/plain", "application/json"],
"defaultOutputModes": ["application/json"],
"skills": [
{
"id": "review-python",
"name": "Review Python",
"description": "Reviews Python code.",
"tags": ["code-review", "python"]
},
{
"id": "review-typescript",
"name": "Review TypeScript",
"description": "Reviews TypeScript code.",
"tags": ["code-review", "typescript"]
}
]
}Task.وحدة العمل، كائن غير متوافق، مع دورة حياة:TASK_STATE_SUBMITTEDTASK_STATE_WORKINGTASK_STATE_COMPLETED- لا ، لاTASK_STATE_FAILED- لا ، لاTASK_STATE_CANCELEDيقوم العميل بإرسال رسالة، و يقوم الخادم بإنشاء المهمة، و يقوم العميل بإجراء استطلاعات أو الاشتراك في التحديثات.
Artifact.نوع النتيجة التي تنتجها المهمة. النص، JSON المهيكلة، الصورة، الفيديو، الصوت. يتم كتابة الأدوات: كل جزء يحمل واحد من text،raw،urlأوdataويمكن أن يسميهاmediaType، لذا الوسائل المختلفة هي من الدرجة الأولى.
Opaque lifecycle.A2A لا يصف كيف يقوم وكيل عن بعد بحل المهمة. يرى العميل عمليات الانتقال والتحفيرات الحالة. التنفيذ حر في استخدام أي إطار.
الانقسام بين MCP/A2A
- MCP(الدرس 13): الوكيل أداة. الوكيل يقرأ/يكتب عبر JSON-RPC إلى خادم الأداة. بدون حالة افتراضية.
- A2A: العميل العميل. بروتوكول الأقران. كلا الجانبين هم عملاء مع التفكير الخاص بهم.
تستخدم أنظمة الإنتاج متعددة الوكلاء كلاهما. يطلق أقر A2A أدوات MCP على جانبه. يحتفظ الانقسام بالاهتمامات المختلفة.
تدفق الاكتشافات
sequenceDiagram
participant C as Client
participant S as Agent server
C->>S: GET /.well-known/agent-card.json
S-->>C: Agent Card JSON
C->>S: POST /message:send (returnImmediately)
S-->>C: task, TASK_STATE_SUBMITTED
C->>S: GET /tasks/{id}
S-->>C: TASK_STATE_WORKING
C->>S: GET /tasks/{id}
S-->>C: TASK_STATE_COMPLETED, artifactsهذه هي طرق ربط HTTP + JSON ، وكل طلب يحمل A2A-Version: 1.0. بطبيعة الحالSendMessageيُغلق حتى تصل المهمة إلى حالة نهاية أو انقطاع، لذا يحدد عميل الاستطلاع configuration.returnImmediatelyلكي تعيدوا المهمة فوراً
أو مع البث: POST /message:streamيعيد الأحداث المرسلة من الخادم (a taskأولاً، ثمstatusUpdateوartifactUpdateالأحداث) ، و/tasks/{id}:subscribeيربط مرة أخرى بمهمة جارية. يغلق التيار عندما تصل المهمة إلى حالة نهائية. لا يوجد finalالعلم
المُصدر
A2A تدعم ثلاثة أنماط مشتركة:
- Bearer token: OAuth2 أو غير شفاف (
httpAuthSecuritySchemeأوoauth2SecurityScheme) - mTLS: التلفزيون المتبادل؛ المؤسسات تثبت الهوية لبعضها البعض (
mtlsSecurityScheme) - API key: مفتاح في عنوان، وبرامج استفسار، أو ملف تعريف الارتباط (
apiKeySecurityScheme)
المعتاد يُعلن في بطاقة العميل:securitySchemesأسماء كل خطة وsecurityRequirementsيحدد أيّة من هذه المواصفات يجب أن يرضيها العميل.
150 منظمة+ بحلول أبريل 2026
وقد دفع تبني المؤسسات مقياس A2A. أصبح عنوان: A2A هو الطريقة التي تتخطى بها أنظمة وكلاء المؤسسات حدود الثقة. أرسلت Google Cloud دعم Vertex AI Agent Builder A2A؛ تدعمها Microsoft Agent Framework؛ وأغلب الإطارات الرئيسية (LangGraph، CrewAI، AutoGen) أرسلت مبرمجي A2A.
حيث A2A تفوز
- Cross-organization calls.عميل في الشركة A يطلب عميل في الشركة B. بدون A2A، كل زوج هو عقد مخصص.
- Heterogeneous frameworks.عميل (لانغغراف) يطلب عميل (كرو آي آي) يطلب عميل (بايثون) المخصص
- Typed artifacts.نتيجة الفيديو، JSON المهيكلة، الصوت كل من الدرجة الأولى.
- Long-running tasks.دورة الحياة غير الشفافة + استطلاع للرأي يجعل المهام التي تستغرق ساعات من الوقت سهلة.
حيث A2A تكافح
- Latency-sensitive micro-calls.دورة حياة A2A غير متزامن. الوكيل إلى الوكيل في السبت لا يناسب؛ استخدم RPC مباشرة.
- Tight-coupled in-process agents.إذا كان كلا العاملين يعملون في نفس عملية Python، رحلة HTTP ذهاب وإياب A2A هو أكثر من اللازم.
- Small teams.تكاليف الطيران المحددة حقيقية، وكلاء الداخلية فقط قد لا تحتاج إلى الإجراءات الرسمية.
A2A مقابل ACP، ANP، NLIP
ظهرت العديد من المواصفات ذات الصلة في 2024-2026:
- ACP(IBM/Linux Foundation) السابقة لـ A2A، نطاق أصغر.
- ANP(بروتوكول شبكة العملاء) اكتشاف الأقران-ثقيل، لامركزية-أول.
- NLIP(بروتوكول تفاعل اللغة الطبيعية ECMA، الموحد ديسمبر 2025) نوع محتوى اللغة الطبيعية.
A2A هو بروتوكول الأقران الأكثر اعتمادًا اعتبارًا من أبريل 2026. انظر arXiv:2505.02279 (Liu et al., "مراجعة بروتوكولات التفاعلية مع العاملين") للمقارنة.
بناءها
code/main.pyينفذ خادم و عميل A2A- على الأقل باستخدام http.serverو JSON، على التماس 1.0 HTTP + JSON. الخادم:
- يُعرض
/.well-known/agent-card.json، - يوافق
POST /message:send، - يدير حالة المهمة،
- يعيد الأثاث على
GET /tasks/{id}. . .
العميل:
- يحضر بطاقة العميل
- يرسل رسالة مع
returnImmediately، - استطلاعات الرأي حتى الانتهاء
- يقرأ الأثاث
أركض
python3 code/main.pyالنص يبدأ الخادم في خيط خلفي، ثم يدير العميل ضد ذلك. ترى التدفق الكامل: اكتشاف، تقديم، استطلاع، الفن.
استخدمها
outputs/skill-a2a-integrator.mdتصميمات إندماج A2A: محتويات بطاقة الوكيل، مخططات المهام، اختيار المؤلف، البث مقابل استطلاعات الرأي.
أرسله
قائمة التحقق:
- Pin the spec version.A2A لا يزال يتطور
supportedInterfacesالإدخال يعلن عنprotocolVersion، والعملاء يرسلونA2A-Version: 1.0. . . - Idempotent task creation.يجب أن تنتج عمليات الإرسال المكرر (تجربات الشبكة) مهمة واحدة.
messageId. . . - Artifact schemas.إعلان ما هي الأشكال التي يعيدها الوكيل؛ يجب على المستهلكين التحقق منها.
- Rate limits + auth.A2A هو عامة، تطبق أمن الويب القياسي.
- Dead-letter for failed tasks.تحقق من الأنماط مع مرور الوقت من أنواع الفشل المتكرر.
التمارين
- أركض
code/main.pyتأكد من أن العميل اكتشف الخادم ويحصل على الفن الصحيح - إضافة مهارة ثانية إلى الخادم (على سبيل المثال ، "التخميز"). قم بتحديث بطاقة الوكيل. اكتب عميلا يختار المهارة بناء على نوع المهمة. طلب 1.0 ليس لديه مجال مهارات ، لذلك يقوم الخادم بتوجيه أجزاء الرسالة.
- تنفيذ
POST /message:stream: الإجابة مع الحوادث المرسلة من الخادم (ataskأولاً، ثمstatusUpdateالحوادث) و إغلاق التيار في حالة نهاية. ما الذي يحتاج العميل إلى القيام به بشكل مختلف؟ - اقرأوا مواصفات A2A (https://a2a-protocol.org/latest/specification/) حدد ثلاثة أشياء لا تنفذها هذه المواصفات المحددة.
- مقارنة A2A (اكتشاف بطاقة العميل) مع MCP (إدراج قدرات جانب الخادم عبر
listToolsما هي التنازل بين العملاء الذين يصفون أنفسهم واختبار القدرات؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| A2A | "Agent-to-agent" | Peer protocol for agents to call other agents across systems. Google 2025. |
| Agent Card | "The agent's business card" | JSON at /.well-known/agent-card.json describing skills, supportedInterfaces, auth. |
| Task | "The unit of work" | Async stateful object with a lifecycle; artifacts produced on completion. |
| Artifact | "The result" | Typed output: text, structured JSON, image, video, audio. First-class media. |
| Opaque lifecycle | "How it's solved is the agent's business" | Client sees state transitions; server is free to choose framework/tools. |
| Discovery | "Finding the agent" | GET /.well-known/agent-card.json returns the card. |
| MCP vs A2A | "Tools vs peers" | MCP: vertical agent ↔ tool. A2A: horizontal agent ↔ agent. |
| ACP / ANP / NLIP | "Sibling protocols" | Adjacent specs; A2A is the most-adopted 2026. |
المزيد من القراءة
- A2A specification المواصفات القنونية
- A2A v1.0.1 release: المسموح بها
docs/specification.mdوspecification/a2a.protoهذا الدرس يتبع - Google Developers Blog — A2A announcement شهر أبريل 2025
- A2A GitHub repo تنفيذات مرجعية و SDKs
- Liu et al. — A Survey of Agent Interoperability Protocols مقارنة MCP, ACP, A2A, ANP
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.