استخدام بروتوكول A2A للتواصل بين وكلاء الذكاء الاصطناعي

المؤلفون

Vanna Winland

AI Advocate & Technology Writer

يُعَد بروتوكول A2A، أو Agent2Agent، معيارًا مفتوحًا يُتيح الاتصال المنظم بين وكلاء الذكاء الاصطناعي والعملاء والأدوات. في هذا البرنامج التعليمي، يمكنك بناء نظام وكيل حيث يعالج عميل الدردشة استفسارات المستخدم ويرسلها إلى وكيل ذكاء اصطناعي يعمل على خادم متوافق مع A2A.

تطبِّق معظم تطبيقات الذكاء الاصطناعي الوكيل اتصالات مخصصة بين العناصر (على سبيل المثال، ChatChain من ChatDev)، ما يجعل من الصعب إعادة استخدام الوكيل نفسه عبر التطبيقات المختلفة أو دمج الأدوات الخارجية. يمنع هذا النقص في التوحيد القياسي قابلية التشغيل البيني ويَحُدّ من تطوير النظام البنائي الأوسع للوكلاء.

يعمل A2A على حل هذا القيد عبر فصل طبقة التواصل عن منطق الوكيل من خلال بروتوكول موحَّد يعتمد على HTTP وJSON-RPC 2.0 وServer-Sent Events (SSE). يسمح هذا الفصل للوكلاء بالتعاون مع الوكلاء الآخرين، وخدمة طلبات العملاء، والوصول إلى الأدوات الخارجية دون الحاجة إلى كود تكامل مخصص.

يدعم A2A البنى اللامركزية التي تسمح للفرق بتطوير أنظمة الذكاء الاصطناعي الخاصة بهم بشكل تدريجي دون كسر كود العميل. يمكن للفرق تحديث الأدوات أو تبديل النماذج أو تعديل سلوك الوكيل مع الحفاظ على واجهة متسقة عبر عمليات سير العمل المعقدة.

يتبادل الوكلاء المعلومات في الرسائل المنظمة بتنسيق JSON-RPC التي تتضمن البيانات الوصفية التي تُثري تفاعلات الوكيل بوضوح واتساق. يعرض كل خادم A2A بطاقة الوكيل في نقطة نهاية معروفة (.well-known/agent-card.json) التي تَصِف قدرات الوكيل كبيانات JSON منظمة. وبالتالي، فإنه يسمح للعملاء باكتشاف ما يمكن للوكيل القيام به ديناميكيًا، على غرار الطريقة التي تَصِف بها الوثائق نقاط النهاية المتاحة.

تابِع الخطوات لبناء وتشغيل نظام وكلاء A2A، واكتسب خبرة عملية في:

  • BeeAI: إطار العمل مفتوح المصدر لبناء وكلاء الذكاء الاصطناعي.
  • بروتوكول A2A: بروتوكول اتصال موحَّد لقابلية التشغيل البيني للوكلاء.
  • Ollama: أداة لتشغيل النماذج اللغوية الكبيرة (LLMs) محليًا.
  • أدوات الوكيل: القدرات المتخصصة بما في ذلك البحث على الويب (DuckDuckGo)، وبيانات الطقس (OpenMeteo)، والوصول إلى ويكيبيديا (WikipediaTool) والاستدلال (ThinkTool)

ملاحظة: إذا كنت قد عملت مع ACP (بروتوكول اتصال الوكيل)، فيمكنك التعرُّف على أوجه التشابه. انضم ACP، الذي تم تطويره في الأصل بواسطة BeeAI من IBM، إلى Google A2A تحت مؤسسة Linux. تستخدم BeeAI الآن محولات A2A (A2AServer وA2AAgent) لتوفير اتصال متوافق مع A2A. يعمل A2A أيضًا جنبًا إلى جنب مع MCP (بروتوكول سياق النموذج) لتمكين الوكلاء من التفاعل مع مصادر البيانات وأدواتها، ما يؤدي إلى إنشاء النظام البنائي.

كيفية عمل نظام الدردشة القائم على A2A

يوضِّح هذا المشروع كيف يُتيح A2A الفصل النظيف بين واجهة العميل ومنطق الوكيل.

يتَّبع سير العمل هذا التسلسل:

  1. إدخال المستخدم: يلتقط العميل إدخال المستخدم من خلال واجهة المحطة الطرفية.
  2. طلب A2A: ينسِّق العميل الإدخال كحمولة رسالة JSON-RPC ويرسلها إلى خادم الوكيل.
  3. معالجة الوكلاء: يُعيد الخادم توجيه الطلب إلىRequirementAgent ، الذي يحلل المهمة وينفِّذ الأدوات المناسبة حسب الحاجة.
  4. استجابة A2A: يُرجع الخادم استجابة الوكيل كبيانات منظمة بتنسيق JSON-RPC، مع بث النتائج في الوقت الفعلي عند إنشائها.
  5. العرض: يستخرج العميل نص الاستجابة ويعرضه في الجهاز الطرفي.

يوضح سير العمل هذا نمطًا قابلًا لإعادة الاستخدام ينطبق على حالات الاستخدام التي تتطلب اتصالًا منظمًا بين العميل والوكيل مثل روبوت المحادثة وأنظمة الأتمتة ووكلاء دعم العملاء ومساعدي البحث مع تنسيق الأدوات.

وكيل A2A

يستخدم هذا المشروع وكيل ذكاء اصطناعي واحد مع قدرات أدوات متعددة. في الأنظمة الأكثر تعقيدًا، يمكنك نشر عدة وكلاء متخصصين، يركِّز كل منهم على مجالات أو مهام محددة.

RequirementAgent (BeeAI): وكيل إعلاني يعمل على اختيار وتنسيق أدوات متعددة بشكل ديناميكي استنادًا إلى طلب المستخدم. ويستخدم:

  • ThinkTool للتفكير والعمليات المنطقية
  • DuckDuckGoSearchTool لعمليات البحث على الويب
  • OpenMeteoTool  لبيانات الطقس
  • WikipediaTool لاسترجاع المعلومات

خادم A2A

خادم A2A (beeai-a2a-server/beeai_chat_server.py ) يعرض وظائف الوكيل من خلال واجهة برمجة تطبيقات HTTP. ويتولى ثلاث مسؤوليات رئيسية:

  1. تهيئة LLM: تحميل نموذج لغوي كبير محلي من خلال Ollama
llm = ChatModel.from_name(os.environ.get(“BEEAI_MODEL”, “ollama:granite3.3:8b”))

 

2. إعداد الوكيل: إنشاء وكيل المتطلبات مع الأدوات والذاكرة للتعامل مع دورة حياة الوكيل.

    agent = RequirementAgent(
        llm=llm,
        tools=[ThinkTool(), DuckDuckGoSearchTool(), OpenMeteoTool(), WikipediaTool()],
        memory=UnconstrainedMemory(),
        description=”An agent that can search the web, check the weather, and think through problems step-by-step.”,

 

3. تكوين الخادم: يعرض العميل من خلال نقاط نهاية HTTP المتوافقة مع A2A

A2AServer(
    config=A2AServerConfig(port=int(os.environ.get(“A2A_PORT”, 9999))),
    memory_manager=LRUMemoryManager(maxsize=100)
).register(agent).serve()

 

يعمل الخادم تلقائيًا على عرض AgentCard على المسار /.well-known/agent-card.json، والذي يصف قدرات الوكيل ويساعد على التحقق من إعدادات الوكيل.

عميل A2A

عميل A2A (beeai-a2a-client/beeai_chat_client.py ) يوفر واجهة المستخدم ويتعامل مع الاتصال مع الخادم باستخدام A2A SDK ومكتبة asyncio من Python لمعالجة الرسائل غير المتزامنة.

إعداد الاتصال: إنشاء محول عميل A2A

agent = A2AAgent(
    url=os.environ.get(“BEEAI_AGENT_URL”, “http://127.0.0.1:9999”),
    memory=UnconstrainedMemory()
)

يتم تمرير حقلurl تحدِّد المَعلمة نقطة النهاية للخادم المتوافق مع A2A (الافتراضي:http://127.0.0.1:9999 ). تخزِّنmemory المَعلمة سجل المحادثة محليًا، ما يسمح للعميل بالحفاظ على السياق أثناء التفاعلات ودعم المهام طويلة الأمد.

تبادل الرسائل: إرسال مطالبات غير متزامنة ومعالجة الاستجابات:

for prompt in reader:
    response = await agent.run(prompt)
    # Extract and display response text

يتم تمرير حقلA2AAgent هو محول من جانب العميل يستخلص تفاصيل اتصال JSON-RPC. إنه ليس وكيلًا مستقلًا، فهو ببساطة يحوّل إدخال المستخدم إلى رسائل متوافقة مع A2A ويتعامل مع استجابات الخادم، مما يتيح تبادل البيانات بسلاسة وقابلية الملاحظة.

المتطلبات الأساسية لتشغيل هذا المشروع

متطلبات النظام

فيما يلي متطلبات النظام لتشغيل هذا المشروع:

  • نظام التشغيل: macOS أو Linux أو Windows
  • الذاكرة (ذاكرة الوصول العشوائي): > = 8 جيجابايت (الموصى به: 16 جيجابايت أو أكثر لتشغيل النماذج اللغوية الكبيرة المحلية)
  • مساحة القرص: > = 5 جيجابايت من المساحة الحرة (الموصى به: 10 جيجابايت أو أكثر لاستيعاب بيئة Python والنماذج المحلية)
  • إصدار Python المطلوب: 3.11 فأحدث

متطلبات الأدوات والمزوِّد

قبل أن تبدأ، إليك نظرة عامة على الأدوات المطلوبة لهذا المشروع:

  • BeeAI: مجموعة تطوير وكلاء مفتوحة المصدر لبناء وكلاء الذكاء الاصطناعي. يدعم BeeAI العديد من مزودي LLM بما في ذلك Ollama (المستخدم في هذا البرنامج التعليمي) وOpenAI وAnthropic.
  • Ollama: لتشغيل النماذج اللغوية الكبيرة المحلية لدعم وكلاء الذكاء الاصطناعي.
  • بروتوكول A2A: مدمج في إطار عمل BeeAI لتمكين الاتصال المنظم بين العميل والخادم.
  • المحطة الطرفية أو بيئة التطوير المتكاملة (IDE): محطة طرفية أو IDE مثل Visual Studio Code (مُوصى به لإدارة محطات طرفية متعددة وعرض السجلات).
  • البيئة Python الافتراضية: لعزل التبعيات للعميل والخادم.

متطلبات مزوِّد النماذج اللغوية الكبيرة

يستخدم هذا المشروع Ollama كمزوِّد نموذج لوكيل الذكاء الاصطناعي. اتَّبِع هذه الخطوات لإعداد Ollama:

  1. تحميل وتثبيت Ollama:
    - تفضَّل بزيارة Ollama وتثبيت التطبيق المتوافق مع نظام التشغيل الخاص بك.
  2. بدء تشغيل خادم Ollam 
    - فتح محطة طرفية وتشغيل:
    ollama serve
  3. اسحب النموذج الافتراضي (يتطلب مساحة قرص 5 جيجابايت تقريبًا):

    ollama pull granite3.3:8b

ملاحظة: يمكنك استخدام أي نموذج متوافق مع Ollama من خلال تعيين متغير البيئةBEEAI_MODEL . تحقَّق من مكتبة نماذج Ollama لمعرفة النماذج المتاحة وأحجامها.

الخطوات

الخطوة 1. نسخ مستودع GitHub

لتشغيل هذا المشروع، استنساخ مستودع GitHub باستخدام https://github.com/IBM/ibmdotcom-tutorials.git كعنوان URL ل HTTPS. للحصول على خطوات مفصلة حول كيفية استنساخ مستودع، راجع وثائقGitHub.

يمكن العثور على هذا البرنامج التعليمي داخل دليل المشروعات الخاص بالمستودع.

داخل المحطة الطرفية، انتقِل إلى دليل هذا البرنامج التعليمي:

cd docs/tutorials/projects/a2a_tutorial

الخطوة 2. إعداد بيئة التطوير

يتطلب هذا المشروع تشغيل برنامجين نصيين بلغة Python منفصلين في وقت واحد، أحدهما للخادم والآخر للعميل. تحتاج إلى فتح نافذتين أو علامات تبويب طرفيتين.

احتفِظ بالمحطة الطرفية الحالية مفتوحة، ثم افتح المحطة الطرفية الثانية وتأكَّد من توجيه كِلا المحطتين الطرفيتين إلى دليل المشروع الصحيح (a2a_tutorial (الدليل الجذر).

هل تستخدم IDE؟

إذا كنت تستخدم IDE مثل Visual Studio Code، يمكنك استخدام ميزة Split Terminal لإدارة عدة محطات طرفية جنبًا إلى جنب.

بخلاف ذلك، افتَح نافذتّي محطتين طرفيتين مستقلتين ووجِّه كل واحدة إلى دليل المشروع.

الخطوة 3. إنشاء بيئات افتراضية وتفعيلها

تساعد البيئات الافتراضية في الحفاظ على التبعيات منفصلة وصيانتها. للحفاظ على تبعيات الخادم والعميل منفصلة، أنشئ بيئة افتراضية لكل عنصر.

للخادم:

انتقل إلى دليلbeeai-a2a-server :

cd beeai-a2a-server

إنشاء بيئة افتراضية باستخدام Python 3.11:

python3.11 -m venv venv

تنشيط البيئة الافتراضية:

source venv/bin/activate

ملاحظة لمستخدمي Windows: استخدِم venv\Scripts\activate لتنشيط البيئة الافتراضية.

للعميل:

انتقل إلى دليلbeeai-a2a-client :

cd beeai-a2a-client

إنشاء بيئة افتراضية وتنشيطها:

python3.11 -m venv venv
source venv/bin/activate

الخطوة 4. تثبيت التبعيات

قم بتثبيت التبعيات المطلوبة لكل عنصر عن طريق تشغيل هذه التعليمات البرمجية في كل محطة طرفية:

pip install -r requirements.txt

يمكنك تشغيلpip freeze في المحطة الطرفية للتحقق من أن البيئة محدَّثة بالتبعيات.

الخطوة 5. بدء تشغيل خادم وكيل A2A

في المحطة الطرفية الأولى، ابدأ بتشغيل خادم وكيل A2A:

python beeai_chat_server.py

يجب أن ترى:

INFO:     Started server process [88159]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:9999 (Press CTRL+C to quit)

يستمع الخادم الآن إلى الطلبات الواردة من تطبيق العميل، وهو جاهز لدعم الاتصال من وكيل إلى وكيل.

الخطوة 6. بدء تشغيل وكيل A2A

في المحطة الطرفية الأخرى، ابدأ بتشغيل وكيل A2A:  

python beeai_chat_client.py

من المفترض أن يطلب منك ذلك إدخال البيانات:

Type your message (Ctrl+C to exit):
You:

الخطوة 7. التفاعل مع الوكيل

اكتب رسالة في محطة العميل واضغط علىEnter . يعالج الوكيل استعلامك ويستجيب له:

You: What is the capital of France?
Agent 🤖 : The capital of France is Paris.

في محطة الخادم الطرفية، يمكنك رؤية سجلات بروتوكول A2A التي تعرض الاتصال مع إشعارات الدفع:

INFO:     127.0.0.1:49292 - “GET /.well-known/agent-card.json HTTP/1.1” 200 OK
INFO:     127.0.0.1:49294 - “POST / HTTP/1.1” 200 OK

يسترد الطلب الأول بطاقة AgentCard التي تصف القدرات. يرسل الطلب الثاني رسالتك كملفTextPart (وحدة من المحتوى النصي داخل رسالة A2A) ويتلقى الرد.

ملاحظة: المخرجات من النماذج اللغوية الكبيرة احتمالية ويمكن أن تختلف في كل مرة تقوم فيها بتشغيل سير العمل، حتى مع المدخلات نفسها.

تجربة استعلامات مختلفة

جرّب أنواعًا مختلفة من الاستعلامات لاختبار أدوات الوكيل المختلفة:

  • البحث في الويب: "البحث عن آخر الأخبار حول الذكاء الاصطناعي"
  • بيانات الطقس: "ما الطقس في طوكيو؟"
  • ويكيبيديا: "أخبرني عن الحوسبة الكمية"
  • المنطق: "ما الأسباب الثلاثة التي تجعل السماء زرقاء؟"

عرض AgentCard

انتقِل إلى https://0.0.0.0:9999/.well-known/agent-card.json في متصفحك لعرضRequirementAgent AgentCard.

{
    “capabilities”: {
        “streaming”: true
    },
    “defaultInputModes”: [
        “text”
    ],
    “defaultOutputModes”: [
        “text”
    ],
    “description”: “An agent that can search the web, check the weather, and think through problems step-by-step.”,
    “name”: “RequirementAgent”,
    “preferredTransport”: “JSONRPC”,
    “protocolVersion”: “0.3.0”,
    “skills”: [
        {
            “description”: “An agent that can search the web, check the weather, and think through problems step-by-step.”,
            “id”: “RequirementAgent”,
            “name”: “RequirementAgent”,
            “tags”: []
        }
    ],
    “url”: “http://localhost:9999”,
    “version”: “1.0.0”
}

يصف مستند JSON هذا:

  • اسم الوكيل (RequirementAgent) ووصف موجز لقدراته.
  • بروتوكولات الاتصال المدعومة وتنسيقات الرسائل
  • أي متطلبات أو قيود

تُتيح بطاقة AgentCard هذه لأي عميل متوافق مع A2A اكتشاف الوكيل والتفاعل معه دون معرفة مسبقة بتفاصيل تنفيذه.

الخاتمة

في هذا البرنامج التعليمي، قمتَ ببناء نظام دردشة باستخدام خادم متوافق مع A2A الذي يعرض واجهة منظمة للاتصال بين العميل والوكيل. من خلال فصل طبقة المراسلة عن المنطق الداخلي، يمكِّن بروتوكول Agent2Agent الفرق من تحديث قدرات الوكيل أو تبديل النماذج أو تعديل تكوينات الأداة دون تغيير التعليمات البرمجية للعميل. تُعَد هذه المرونة ذات قيمة خاصة عند تنسيق المهام المطلوبة للإدخال أو تتبُّع حالة المهمة أو التعامل مع كل عملية كوحدة عمل منفصلة.

يعمل A2A من خلال تحديد تنسيق رسالة مشترك يمكن لأي مكون متوافق فهمه، ما يسمح للوكلاء المستقلين بالتعاون مع وكلاء آخرين. تحدِّد مواصفة البروتوكول كيفية هيكلة الرسائل بصيغة JSON-RPC وإثرائها بالبيانات الوصفية لضمان الاتساق والوضوح في جميع التفاعلات.

يعتمد هذا البرنامج التعليمي على الأمثلة الأساسية المقدَّمة من مستودع عينات A2A. للمزيد من المعلومات حول التنفيذ الأصلي، راجِع الملف التمهيدي في المستودع، والذي يوفر المزيد من السياق والأمثلة لبناء أنظمة متوافقة مع A2A.

في عمليات النشر الواقعية، يمكن لخوادم A2A تنفيذ آليات مصادقة لتأمين نقاط نهاية الوكلاء، واستخدام أحداث مرسلة من الخادم (SSE) لبث الاستجابات، والتوسع للتعامل مع سير العمل الإنتاجي. من خلال اتباع سير العمل هذا، رأيت كيف يمكن لعميل سطر الأوامر التفاعل مع وكيل ذكاء اصطناعي عبر بروتوكول موحَّد، ما يمكِّن الوكيل من تنسيق أدوات متعددة وتقديم استجابات سياقية. يوضِّح هذا النهج قوة A2A لتمكين أنظمة ذكاء اصطناعي قابلة للصيانة والتوسع ومرنة.

إيقاف تشغيل النظام

عند الانتهاء من تجربة النظام، اتَّبِع هذه الخطوات لإيقاف تشغيل جميع العناصر قيد التشغيل بشكل سلس:

إيقاف كل خادم قيد التشغيل

في كل نافذة طرفية، اضغط على Ctrl+C لإيقاف العملية الجارية.

ستظهر لك مخرجات مثل:

INFO:     Shutting down
INFO:     Finished server process

إذا توقف الخادم عن العمل أثناء إيقاف التشغيل

إذا أصبح الخادم غير مستجيب أو توقف عند إيقاف التشغيل، فيمكنك إيقافه بالقوة:

ابحث عن معرِّف العملية (PID):

ps aux | grep python

حدِّد معرِّف PID للعملية التي تحاول إيقافها.

إنهاء العملية:

kill -9 <PID>

كرِّر هذه العملية لكل خادم إذا لزم الأمر.

أحسنت. لقد نجحت في تشغيل نظام دردشة كامل متوافق مع A2A.

حلول ذات صلة
وكلاء الذكاء الاصطناعي للأعمال

يمكنك إنشاء مساعدين ووكلاء ذكاء اصطناعي ووكلاء أقوياء يعملون على أتمتة مهام سير العمل والعمليات باستخدام الذكاء الاصطناعي التوليدي ونشرها وإدارتها.

    استكشف watsonx Orchestrate
    حلول وكلاء الذكاء الاصطناعي من IBM

    يمكنك بناء مستقبل عملك باستخدام حلول الذكاء الاصطناعي الجديرة بالثقة.

    استكشف حلول وكلاء الذكاء الاصطناعي
    خدمات الذكاء الاصطناعي لدى IBM Consulting

    تساعد خدمات IBM Consulting AI في إعادة تصور طريقة عمل الشركات باستخدام حلول الذكاء الاصطناعي من أجل النهوض بأعمالها.

    استكشف خدمات الذكاء الاصطناعي
    اتخِذ الخطوة التالية

    سواء اخترت تخصيص التطبيقات والمهارات المُعدّة مسبقًا أو إنشاء خدمات مخصصة مستندة إلى وكلاء ونشرها باستخدام استوديو الذكاء الاصطناعي، فإن منصة IBM watsonx تُلبي احتياجاتك.

    استكشف watsonx Orchestrate استكشف watsonx.ai