Milvus
Zilliz
  • Home
  • Blog
  • OpenAgents x Milvus: كيفية بناء أنظمة متعددة الوكلاء أكثر ذكاءً تتشارك الذاكرة

OpenAgents x Milvus: كيفية بناء أنظمة متعددة الوكلاء أكثر ذكاءً تتشارك الذاكرة

  • Tutorials
November 24, 2025
Min Yin

يبدأ معظم المطورين أنظمتهم الوكالية بوكيل واحد ويدركون لاحقًا أنهم قاموا ببناء روبوت محادثة مكلف للغاية. بالنسبة للمهام البسيطة، يعمل الوكيل على غرار ReAct بشكل جيد، لكنه سرعان ما يصل إلى حدود: لا يمكنه تشغيل الخطوات بالتوازي، ويفقد مسار سلاسل التفكير الطويلة، ويميل إلى الانهيار بمجرد إضافة الكثير من الأدوات إلى المزيج. تعد الإعدادات متعددة الوكلاء بإصلاح هذا الأمر، لكنها تجلب مشاكلها الخاصة: نفقات التنسيق الزائدة، وعمليات التسليم الهشة، وتضخم السياق المشترك الذي يؤدي إلى تآكل جودة النموذج بهدوء.

OpenAgents هو إطار عمل مفتوح المصدر لبناء أنظمة متعددة الوكلاء يعمل فيها وكلاء الذكاء الاصطناعي معاً، ويتشاركون الموارد، ويتعاملون مع مشاريع طويلة الأمد ضمن مجتمعات مستمرة. فبدلاً من وجود منسق مركزي واحد، يتيح OpenAgents للوكلاء التعاون بطريقة أكثر توزيعاً: يمكنهم اكتشاف بعضهم البعض والتواصل والتنسيق حول الأهداف المشتركة.

وبالاقتران مع قاعدة بيانات Milvus المتجهة، يكتسب خط الأنابيب هذا طبقة ذاكرة طويلة الأجل قابلة للتطوير وعالية الأداء. تعمل Milvus على تشغيل ذاكرة الوكلاء من خلال البحث الدلالي السريع، وخيارات الفهرسة المرنة مثل HNSW و IVF، والعزل النظيف من خلال التقسيم، بحيث يمكن للوكلاء تخزين واسترجاع وإعادة استخدام المعرفة دون الغرق في السياق أو التعدي على بيانات بعضهم البعض.

سنستعرض في هذا المنشور كيفية تمكين OpenAgents من التعاون الموزع متعدد الوكلاء، ولماذا يعتبر Milvus أساسًا مهمًا لذاكرة الوكيل القابلة للتطوير، وكيفية تجميع مثل هذا النظام خطوة بخطوة.

التحديات في بناء أنظمة الوكلاء في العالم الحقيقي

يتم بناء العديد من أطر عمل الوكلاء السائدة اليوم - مثل LangChain و AutoGen و CrewAI وغيرها - حول نموذج يركز على المهام. يمكنك تشغيل مجموعة من الوكلاء، ومنحهم مهمة، وربما تحديد سير العمل، والسماح لهم بالعمل. يعمل هذا بشكل جيد لحالات الاستخدام الضيقة أو قصيرة الأجل، ولكن في بيئات الإنتاج الحقيقية، فإنه يكشف عن ثلاثة قيود هيكلية:

  • تظل المعرفة منعزلة. تقتصر خبرة الوكيل على عملية النشر الخاصة به. وكيل مراجعة التعليمات البرمجية في قسم الهندسة لا يشارك ما يتعلمه مع وكيل فريق المنتج الذي يقوم بتقييم الجدوى. وينتهي الأمر بكل فريق إلى إعادة بناء المعرفة من الصفر، وهو أمر غير فعال وهش في نفس الوقت.

  • التعاون جامد. حتى في الأطر متعددة الوكلاء، يعتمد التعاون عادةً على سير العمل المحدد مسبقاً. عندما يحتاج التعاون إلى التغيير، لا يمكن لهذه القواعد الثابتة أن تتكيف، مما يجعل النظام بأكمله أقل مرونة.

  • عدم وجود حالة ثابتة. يتبع معظم الوكلاء دورة حياة بسيطة: البدء ← التنفيذ ← الإغلاق. ينسون كل شيء بين عمليات التشغيل - السياق والعلاقات والقرارات المتخذة وتاريخ التفاعل. بدون حالة مستمرة، لا يمكن للوكلاء بناء ذاكرة طويلة الأمد أو تطوير سلوكهم.

تأتي هذه المشكلات الهيكلية من التعامل مع الوكلاء كمنفذين معزولين للمهام بدلاً من مشاركين في شبكة تعاونية أوسع.

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

ما هو OpenAgents؟

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

1. شبكة الوكلاء: بيئة مشتركة للتعاون

شبكة الوكيل هي بيئة مشتركة حيث يمكن للعديد من الوكلاء الاتصال والتواصل والعمل معًا لحل المهام المعقدة. وتشمل خصائصها الأساسية ما يلي:

  • التشغيل المستمر: بمجرد إنشائها، تبقى الشبكة متصلة بالإنترنت بشكل مستقل عن أي مهمة أو سير عمل واحد.

  • وكيل ديناميكي: يمكن للوكلاء الانضمام في أي وقت باستخدام معرّف الشبكة؛ لا يلزم التسجيل المسبق.

  • دعم متعدد البروتوكولات: طبقة تجريد موحدة تدعم الاتصال عبر WebSocket و gRPC و HTTP و libp2p.

  • التكوين المستقل: تحتفظ كل شبكة بالأذونات والحوكمة والموارد الخاصة بها.

من خلال سطر واحد فقط من التعليمات البرمجية، يمكنك إنشاء شبكة، ويمكن لأي وكيل الانضمام إليها على الفور من خلال واجهات قياسية.

2. تعديلات الشبكة: ملحقات قابلة للتوصيل للتعاون

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

الوحدات النمطيةالغرضحالات الاستخدام
مراسلة مساحة العملالتواصل بالرسائل في الوقت الحقيقيتدفق الردود والملاحظات الفورية
المنتدىمناقشة غير متزامنةمراجعات المقترحات، مداولات متعددة الجولات
ويكيقاعدة المعرفة المشتركةتوحيد المعرفة والتعاون في الوثائق
اجتماعيالرسم البياني للعلاقاتتوجيه الخبراء، وشبكات الثقة

تعمل جميع المودات على نظام حدث موحد، مما يجعل من السهل توسيع إطار العمل أو إدخال سلوكيات مخصصة عند الحاجة.

3. النقل: قناة اتصال لا تعتمد على البروتوكول

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

  • HTTP/REST للتكامل الواسع والمتعدد اللغات

  • WebSocket للاتصال ثنائي الاتجاه بزمن تأخير منخفض

  • gRPC للاتصالات عالية الأداء RPC المناسبة للمجموعات واسعة النطاق

  • libp2p للربط الشبكي اللامركزي من نظير إلى نظير

  • A2A، وهو بروتوكول ناشئ مصمم خصيصًا للاتصال من وكيل إلى وكيل

تعمل جميع وسائل النقل من خلال تنسيق رسائل موحد قائم على الأحداث، مما يتيح الترجمة السلسة بين البروتوكولات. لا داعي للقلق بشأن البروتوكول الذي يستخدمه الوكيل النظير - حيث يتعامل إطار العمل مع ذلك تلقائياً. يمكن للوكلاء الذين تم إنشاؤهم بأي لغة أو إطار عمل الانضمام إلى شبكة OpenAgents دون إعادة كتابة التعليمات البرمجية الحالية.

تكامل OpenAgents مع Milvus للذاكرة العميلة طويلة المدى

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

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

يوفر Milvus بحثًا دلاليًا سريعًا باستخدام خوارزميات الفهرسة مثل HNSW و IVF_FLAT. يمكن للوكلاء استرجاع السجلات التاريخية الأكثر صلة بناءً على المعنى بدلاً من الكلمات المفتاحية، مما يمكّنهم من:

  • استرجاع القرارات أو الخطط السابقة

  • تجنب تكرار العمل

  • الحفاظ على سياق طويل المدى عبر الجلسات.

هذا هو العمود الفقري لذاكرة الوكلاء: استرجاع سريع وذو صلة بالموضوع وسياقه.

2. قابلية التوسع الأفقي على نطاق المليار

تولد شبكات الوكلاء الحقيقية كميات هائلة من البيانات. تم تصميم Milvus ليعمل بشكل مريح على هذا النطاق، حيث يوفر:

  • التخزين والبحث على مليارات المتجهات,

  • < زمن استجابة أقل من 30 مللي ثانية حتى في ظل الاسترجاع عالي الإنتاجية من أعلى-ك,

  • بنية موزعة بالكامل تتوسع خطياً مع تزايد الطلب.

وسواء كان لديك عشرات الوكلاء أو آلاف الوكلاء الذين يعملون بالتوازي، فإن Milvus يحافظ على سرعة الاسترجاع واتساقه.

3. عزل متعدد المستأجرين

توفر Milvus عزلًا دقيقًا متعدد المستأجرين من خلال مفتاح التقسيم، وهي آلية تقسيم خفيفة الوزن تعمل على تقسيم الذاكرة داخل مجموعة واحدة. وهذا يسمح بـ

  • لفرق أو مشاريع أو مجتمعات وكلاء مختلفة بالحفاظ على مساحات ذاكرة مستقلة,

  • نفقات أقل بشكل كبير مقارنةً بالحفاظ على مجموعات متعددة,

  • استرجاع اختياري عبر الأقسام عند الحاجة إلى معرفة مشتركة.

هذا العزل أمر بالغ الأهمية لعمليات النشر الكبيرة متعددة الوكلاء حيث يجب احترام حدود البيانات دون المساس بسرعة الاسترجاع.

يتصل OpenAgents بـ Milvus من خلال نماذج مخصصة تستدعي واجهات برمجة تطبيقات Milvus مباشرةً. يتم تضمين رسائل الوكيل، ومخرجات الأدوات، وسجلات التفاعل تلقائيًا في النواقل وتخزينها في Milvus. يمكن للمطورين تخصيص

  • نموذج التضمين

  • مخطط التخزين والبيانات الوصفية

  • واستراتيجيات الاسترجاع (مثل البحث الهجين والبحث المجزأ).

وهذا يمنح كل مجتمع وكلاء طبقة ذاكرة قابلة للتطوير، ومستمرة، ومحسّنة للاستدلال الدلالي.

كيفية بناء روبوت محادثة متعدد الوكلاء باستخدام OpenAgent و Milvus

لجعل الأمور ملموسة، دعونا نستعرض عرضًا توضيحيًا: بناء مجتمع دعم المطورين حيث يتعاون العديد من الوكلاء المتخصصين - خبراء بايثون وخبراء قواعد البيانات ومهندسي DevOps وغيرهم - للإجابة على الأسئلة التقنية. فبدلاً من الاعتماد على وكيل واحد متخصص، يساهم كل خبير في التفكير المنطقي الخاص بالمجال، ويقوم النظام بتوجيه الاستفسارات إلى الوكيل الأنسب تلقائياً.

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

  • تذكّر الإجابات السابقة

  • إعادة استخدام التفسيرات التقنية السابقة

  • الحفاظ على الاتساق عبر الجلسات، و

  • التحسين بمرور الوقت مع تراكم المزيد من التفاعلات.

المتطلبات الأساسية

  • python3.11+

  • كوندا

  • المفتاح المفتوح

1. تحديد التبعيات

تحديد حزم بايثون المطلوبة للمشروع:

# Core framework
openagents>=0.6.11
# Vector database
pymilvus>=2.5.1
# Embedding model
sentence-transformers>=2.2.0
# LLM integration
openai>=1.0.0
# Environment config
python-dotenv>=1.0.0

2. متغيرات البيئة

فيما يلي نموذج لتكوين بيئتك:

# LLM configuration (required)
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o
# Milvus configuration
MILVUS_URI=./multi_agent_memory.db
# Embedding model configuration
EMBEDDING_MODEL=text-embedding-3-large
EMBEDDING_DIMENSION=3072
# Network configuration
NETWORK_HOST=localhost
NETWORK_PORT=8700
STUDIO_PORT=8050

3. تكوين شبكة الوكلاء المفتوحين الخاصة بك

حدد بنية شبكة وكيلك وإعدادات الاتصال الخاصة بها:

# Network transport protocol (HTTP on port 8700)
# Multi-channel messaging system (general, coordination, expert channels)
# Agent role definitions (coordinator, python_expert, etc.)
# Milvus integration settings
network:
  name: "Multi-Agent Collaboration Demo"
  transports:
    - type: "http"
      config:
        port: 8700
        host: "localhost"
  mods:
    - name: "openagents.mods.workspace.messaging"
      config:
        channels:
          - name: "general"          # User question channel
          - name: "coordination"     # Coordinator channel
          - name: "python_channel"   # Python expert channel
          - name: "milvus_channel"   # Milvus expert channel
          - name: "devops_channel"   # DevOps expert channel
  agents:
    coordinator:
      type: "coordinator"
      description: "Coordinator Agent, responsible for analyzing queries and dispatching tasks to expert agents"
      channels: ["general", "coordination"]
    python_expert:
      type: "expert"
      domain: "python"

4. تنفيذ التعاون متعدد الوكلاء

فيما يلي مقتطفات التعليمات البرمجية الأساسية (وليس التنفيذ الكامل).

# SharedMemory: Milvus’s SharedMemory system
# CoordinatorAgent: Coordinator Agent, responsible for analyzing queries and dispatching tasks to expert agents
# PythonExpertAgent: Python Expert
# MilvusExpertAgent: Milvus Expert
# DevOpsExpertAgent: DevOps Expert
import os
import asyncio
import json
from typing import List, Dict
from dotenv import load_dotenv
from openagents.agents.worker_agent import WorkerAgent
from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType
import openai
load_dotenv()
class SharedMemory:
    """SharedMemory in Milvus for all Agents"""
    def __init__(self):
        connections.connect(uri="./multi_agent_memory.db")
        self.setup_collections()
        self.openai_client = openai.OpenAI(
            api_key=os.getenv("OPENAI_API_KEY"),
            base_url=os.getenv("OPENAI_BASE_URL")
        )
    def setup_collections(self):
        """Create memory collections: expert knowledge, collaboration history, problem solutions"""
        collections = {
            "expert_knowledge": "expert knowledge",
            "collaboration_history": "collaboration history", 
            "problem_solutions": "problem solutions"
        }
        # Code to create vector collections...
    async def search_knowledge(self, query: str, collection_name: str):
        """Search for relevant knowledge"""
        # Vector search implementation...
    async def store_knowledge(self, agent_id: str, content: str, metadata: dict, collection_name: str):
        """Store knowledge"""
        # Store into the vector database...
class CoordinatorAgent(WorkerAgent):
    """Coordinator Agent - analyzes questions and coordinates other Agent"""
    def __init__(self):
        super().__init__(agent_id="coordinator")
        self.expert_agents = {
            "python": "python_expert",
            "milvus": "milvus_expert", 
            "devops": "devops_expert"
        }
    async def analyze_question(self, question: str) -> List[str]:
        """Determine which experts are needed for the question"""
        keywords = {
            "python": ["python", "django", "flask", "async"],
            "milvus": ["milvus", "vector", "index", "performance"],
            "devops": ["deployment", "docker", "kubernetes", "operations"]
        }
        # Keyword matching logic...
        return needed_experts
    async def coordinate_experts(self, question: str, needed_experts: List[str]):
        """Coordinate collaboration among expert Agent"""
        # 1. Notify experts to begin collaborating
        # 2. Dispatch tasks to each expert
        # 3. Collect expert responses
        # 4. Return expert opinions
    async def on_channel_post(self, context):
        """Main logic for handling user questions"""
        content = context.incoming_event.payload.get('content', {}).get('text', '')
        if content and not content.startswith('🎯'):
            # 1. Analyze question → 2. Coordinate experts → 3. Merge answers → 4. Reply to user
class PythonExpertAgent(WorkerAgent):
    """Python Expert Agent"""
    async def analyze_python_question(self, question: str) -> str:
        """Analyze Python-related questions and provide expert advice"""
        # 1. Search for relevant experience
        # 2. Use LLM to generate expert response
        # 3. Store result in collaboration history
        return answer
# Start all Agens
async def run_multi_agent_demo():
    coordinator = CoordinatorAgent()
    python_expert = PythonExpertAgent()
    milvus_expert = MilvusExpertAgent()
    devops_expert = DevOpsExpertAgent()
    # Connect to the OpenAgents network
    await coordinator.async_start(network_host="localhost", network_port=8700)
    # ... Start other Agent
    while True:
        await asyncio.sleep(1)
if __name__ == "__main__":
    asyncio.run(run_multi_agent_demo())

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

conda create -n openagents
conda activate openagents

تثبيت التبعيات

pip install -r requirements.txt

تكوين مفاتيح API

cp .env.example .env

بدء تشغيل شبكة الوكلاء المفتوحين

openagents network start .

بدء تشغيل خدمة الوكلاء المتعددين

python multi_agent_demo.py

بدء تشغيل OpenAgents Studio

openagents studio -s

الوصول إلى الاستوديو

http://localhost:8050

تحقق من حالة وكلائك وشبكتك:

الخاتمة

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

بالطبع، لا توجد بنية متعددة الوكلاء بدون مقايضات. إذ يمكن أن يؤدي تشغيل الوكلاء بالتوازي إلى زيادة استهلاك الرمز المميز، وقد تتعاقب الأخطاء عبر الوكلاء، ويمكن أن يؤدي اتخاذ القرارات المتزامنة إلى تعارضات عرضية. هذه مجالات نشطة للبحث والتحسين المستمر - لكنها لا تقلل من قيمة بناء أنظمة يمكنها التنسيق والتذكر والتطور.

🚀 هل أنت مستعد لمنح وكلائك ذاكرة طويلة المدى؟

استكشف ميلفوس وحاول دمجه مع سير عملك الخاص.

هل لديك أسئلة أو تريد التعمق في أي ميزة؟ انضم إلى قناة Discord الخاصة بنا أو قم بتسجيل المشكلات على GitHub. يمكنك أيضًا حجز جلسة فردية مدتها 20 دقيقة للحصول على رؤى وإرشادات وإجابات على أسئلتك من خلال ساعات عمل Milvus المكتبية.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    استمر في القراءة