بناء أنظمة اتصال متعددة الوكلاء قابلة للتطوير باستخدام بروتوكول اتصال الوكلاء (ACP)

هذا البرنامج التعليمي يوضح كيفية بناء نظام مراسلة مرن ومتوافق مع بروتوكول اتصال الوكلاء (ACP) باستخدام لغة بايثون، مع الاستفادة من واجهة برمجة تطبيقات جيميني من جوجل لمعالجة اللغة الطبيعية. سنبدأ بتثبيت وإعداد مكتبة google-generativeai، ثم نقدم المفاهيم الأساسية، وأنواع الرسائل، والأفعال الأداؤية، بالإضافة إلى فئة البيانات ACPMessage التي تُوَحِّد عملية الاتصال بين الوكلاء. من خلال تعريف فئتي ACPAgent و ACPMessageBroker، سنُوضح كيفية إنشاء، وإرسال، وتوجيه، ومعالجة الرسائل المُهيكلة بين عدة وكلاء مستقلين. من خلال أمثلة برمجية واضحة، سيتعلم المستخدمون كيفية تنفيذ الاستعلامات، وطلب الإجراءات، وبث المعلومات، مع الحفاظ على سلاسل المحادثات، والإقرارات، ومعالجة الأخطاء.

1. الإعداد والتهيئة:

نقوم أولاً باستيراد الوحدات الأساسية في بايثون، بدءاً من معالجة JSON والتحكم بالوقت، وحتى توليد المُعرفات الفريدة والتعليقات التوضيحية للأنواع، لدعم تنفيذ ACP مُهيكل. ثم نقوم باستدعاء مفتاح واجهة برمجة تطبيقات جيميني الخاص بالمستخدم وإعداد عميل google-generativeai للمكالمات اللاحقة لنموذج لغة جيميني.

import google.generativeai as genai
import json
import time
import uuid
from enum import Enum
from typing import Dict, List, Any, Optional
from dataclasses import dataclass, asdict

GEMINI_API_KEY = "استخدم مفتاح واجهة برمجة تطبيقات جيميني الخاص بك"
genai.configure(api_key=GEMINI_API_KEY)

2. أنواع رسائل ACP:

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

class ACPMessageType(Enum):
    """أنواع رسائل ACP القياسية"""
    REQUEST = "request"
    RESPONSE = "response"
    INFORM = "inform"
    QUERY = "query"
    SUBSCRIBE = "subscribe"
    UNSUBSCRIBE = "unsubscribe"
    ERROR = "error"
    ACK = "acknowledge"

3. الأفعال الأداؤية لـ ACP:

يُحدد تعداد ACPPerformative مجموعة متنوعة من الأفعال التي يمكن للوكلاء استخدامها عند التفاعل ضمن إطار ACP، حيث يُرَسم النوايا عالية المستوى، مثل تقديم الطلبات، وطرح الأسئلة، وإصدار الأوامر، أو التفاوض على الاتفاقيات، على تسميات مُوَحَّدة. يُمكن هذا التصنيف الواضح للوكلاء من تفسير والرد على الرسائل بطرق مُناسبة سياقياً، مما يضمن اتصالاً قوياً وغنيًا دلالياً.

class ACPPerformative(Enum):
    """أفعال الكلام (الأفعال الأداؤية) في ACP"""
    TELL = "tell"
    ASK = "ask"
    REPLY = "reply"
    REQUEST_ACTION = "request-action"
    AGREE = "agree"
    REFUSE = "refuse"
    PROPOSE = "propose"
    ACCEPT = "accept"
    REJECT = "reject"

4. هيكلة رسالة ACP:

تُغلف فئة البيانات ACPMessage جميع الحقول المطلوبة لتبادل ACP المُهيكل، بما في ذلك المُعرفات، والمشاركين، والأفعال الأداؤية، وحمولة البيانات، والبيانات الوصفية مثل إصدار البروتوكول، واللغة، والتواريخ والاوقات. تُوَحِّد طريقة __post_init__ قيم timestamp و conversation_id المفقودة تلقائياً، مما يضمن تتبع كل رسالة بشكل فريد. تُعالِج طريقتا to_acp_format و from_acp_format عملية التحويل إلى وإلى التمثيل القياسي JSON لضمان نقل وتحليل سلس.

@dataclass
class ACPMessage:
    # ... (كود الفئة كما هو موضح في المقال الأصلي)

5. وكيل ACP:

تُغلف فئة ACPAgent كياناً مستقلاً قادراً على إرسال، واستقبال، ومعالجة رسائل متوافقة مع ACP باستخدام نموذج لغة جيميني. يدير وكيل ACP قائمة رسائله الخاصة، وسجل محادثاته، واشتراكاته، ويوفر طرق مساعدة (مثل send_inform, send_query, send_request, send_reply) لإنشاء مثيلات ACPMessage بشكل صحيح. يتم توجيه الرسائل الواردة عبر process_message، والتي تُوَكِّل إلى مُعالجات مُتخصصة للاستعلامات، وطلبات الإجراءات، والرسائل الإخبارية.

class ACPAgent:
    # ... (كود الفئة كما هو موضح في المقال الأصلي)

6. وسيط رسائل ACP:

يعمل ACPMessageBroker كموَجِّه مركزي لرسائل ACP، حيث يُحافظ على سجل للوكلاء وسجل للرسائل. يُوفر طرقاً لتسجيل الوكلاء، وتسليم الرسائل الفردية عبر route_message، والتي تُعالِج البحث، والتسجيل، وسلسلة الردود، ولإرسال نفس الرسالة إلى عدة مستلمين باستخدام broadcast_message.

class ACPMessageBroker:
    # ... (كود الفئة كما هو موضح في المقال الأصلي)

7. عرض عملي لبروتوكول ACP:

تُنسق دالة demonstrate_acp عرضاً عملياً لإطار عمل ACP بأكمله: تقوم بتهيئة وسيط وثلاثة وكلاء مُتميزين (الباحث، المساعد، والحاسبة)، وتُسجلهم، وتُوضح ثلاثة سيناريوهات تفاعلية رئيسية، وهي الاستعلام عن المعلومات، وطلب الحساب، ومشاركة التحديثات. بعد توجيه كل رسالة ومعالجة الردود، تطبع إحصائيات مُلخّصة عن تدفق الرسائل. تُظهر رسالة ACP مُنسّقة، مما يوفر للمستخدمين مثالاً واضحاً وشاملاً لكيفية اتصال الوكلاء ضمن البروتوكول.

def demonstrate_acp():
    # ... (كود الدالة كما هو موضح في المقال الأصلي)

8. دليل الإعداد:

يوفر دليل الإعداد إرشادات سريعة لبدء تشغيل عرض ACP في Google Colab، حيث يُوضح كيفية الحصول على مفتاح واجهة برمجة تطبيقات جيميني وتكوينه، واستدعاء إجراء demonstrate_acp. كما يُلخّص ميزات البروتوكول الرئيسية، مثل تنسيقات الرسائل الموحدة، والأفعال الأداؤية، وتوجيه الرسائل. يُقدم مقطعاً برمجياً مُوجزاً يُوضح كيفية تسجيل وكلاء مُخصصين وإرسال رسائل مُخصصة.

# ... (كود الدالة كما هو موضح في المقال الأصلي)

الخلاصة:

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

المصدر: MarkTechPost