تواجه بنية الوكلاء المفردة غالبًا حدودًا عند التعامل مع المهام المعقدة والمتعددة الأوجه. محاولة نموذج لغة كبير (LLM) واحد التخطيط والبرمجة وتصحيح الأخطاء والنشر في الوقت نفسه تشبه طلب ارتداء جميع القبعات من مطوّر واحد. هنا تتألق أنظمة الوكلاء المتعددة (MAS). من خلال تفكيك المشكلات المعقدة إلى مهام فرعية وتوزيعها بين وكلاء متخصصين، يمكننا تحقيق موثوقية أعلى، وتوازي، وقابلية صيانة أفضل.
أنماط البنية الأساسية
قبل الغوص في الأكواد، من الضروري فهم الأنماط الهيكلية التي تحدد كيفية تفاعل الوكلاء. تشمل الأنماط الأكثر شيوعًا:
- نمط المشرف: وكيل منسق مركزي يستلم طلب المستخدم، ويفككه، ويوكل المهام الفرعية إلى وكلاء عاملين متخصصين، ويجمع نتائجهم. هذا هو النمط الأكثر شيوعًا لتطبيقات LLM لأنه يوفر سلسلة قيادة واضحة.
- نمط الند للند (السرب): يتواصل الوكلاء مباشرة مع بعضهم البعض دون وجود محور مركزي. يوفر هذا معدل إنجاز أعلى وتحملًا للأعطال، لكنه أصعب بكثير في التصحيح والتحكم.
- النمط التسلسلي الهرمي: مزيج مما سبق، حيث يوكل المدير من المستوى الأعلى إلى مدراء من المستوى المتوسط، الذين يديرون بدورهم عمالًا متخصصين. هذا مثالي للمشاريع الكبيرة جدًا.
الاتصال وإدارة الحالة
شريان الحياة في نظام MAS هو تبادل البيانات. يحتاج الوكلاء إلى مشاركة السياق، والنتائج الوسيطة، وتحديثات الحالة. في أنظمة LLM الحديثة، يتم التعامل مع هذا عادةً عبر كائنات JSON منظمة أو رسائل بلغة طبيعية تمر عبر ناقل رسائل مركزي أو قاعدة بيانات.
من الضروري للغاية إدارة الحالة. هل للوكلاء ذاكرة؟ إذا اتخذ الوكيل A قرارًا، هل يحتاج الوكيل B إلى معرفته؟ يستخدم نظام MAS المتين كائن حالة مشتركًا يتم إصداره أو طبعه زمنيًا لمنع حالات السباق.
مثال تنفيذي بلغة Python
فيما يلي تنفيذ مبسط لنمط المشرف باستخدام Python. نستخدم LLMClient افتراضيًا وMessageBus بسيطًا لتوضيح التدفق. في الإنتاج، ستستبدل هذه بأطر عمل فعلية مثل LangGraph أو AutoGen أو CrewAI.
import json
from dataclasses import dataclass
from typing import List, Dict
@dataclass
class Task:
description: str
agent_id: str
context: Dict = None
class Agent:
def __init__(self, name: str, role: str):
self.name = name
self.role = role
def execute(self, task: Task) -> Dict:
# Simulate LLM call
# In reality, this would call an API with a system prompt defined by self.role
print(f"{self.name} executing: {task.description}")
return {"status": "completed", "output": f"Result from {self.name}"}
class Supervisor:
def __init__(self):
self.agents = {
"researcher": Agent("Researcher", "You are a data analyst."),
"coder": Agent("Coder", "You are a senior Python developer.")
}
self.history: List[Dict] = []
def delegate(self, task_desc: str) -> Dict:
# 1. High-level reasoning to pick the right agent
# In a real system, this is an LLM call to decide which agent to call
target_agent_id = self._route_task(task_desc)
task = Task(description=task_desc, agent_id=target_agent_id)
agent = self.agents[target_agent_id]
result = agent.execute(task)
self.history.append(result)
return result
def _route_task(self, desc: str) -> str:
# Simple heuristic for demo; replace with LLM logic
if "code" in desc.lower() or "script" in desc.lower():
return "coder"
else:
return "researcher"
# Usage Example
supervisor = Supervisor()
final_result = supervisor.delegate("Write a Python script to scrape URLs.")
print(json.dumps(final_result, indent=2))
التحديات وأفضل الممارسات
بناء نظام MAS ليس خاليًا من المزالق. فيما يلي أبرز التحديات التي ستواجهها:
- الحلقات اللانهائية: إذا واصل وكيلان تمرير نفس المهمة ذهابًا وإيابًا، سيعلق نظامك. قم دائمًا بتنفيذ حد max_turns أو آلية انتهاء الوقت.
- انحراف السياق: مع مرور الرسائل بين الوكلاء، قد يتلاشى النية الأصلية. استخدم المخرجات المنظمة (مخططات JSON) لفرض الاتساق.
- قابلية المراقبة: تحتاج إلى تسجيل كامل لكل رسالة مرسلة ومستلمة. أدوات مثل LangSmith وLangFuse أو وسائط التسجيل المخصصة غير قابلة للتفاوض في أنظمة MAS الإنتاجية.
- التحكم في التكلفة: كل استدعاء وكيل هو استدعاء LLM. كن حريصًا على استخدام الرموز (tokens). خزّن النتائج عند الإمكان وتجنب استدعاءات الوكلاء الزائدة.
خاتمة
تمثل أنظمة الوكلاء المتعددة التطور التالي في تصميم تطبيقات الذكاء الاصطناعي. تتيح لك بناء تطبيقات ذكية تكون معيارية وقابلة للتوسع وقادرة على التعامل مع سير عمل معقد يتجاوز نطاق استدعاء نموذج واحد. من خلال البدء بنمط مشرف بسيط ومقدمة تدريجية لمخططات اتصال أكثر تعقيدًا، يمكنك توسيع تطبيقات الذكاء الاصطناعي الخاصة بك لتلبية متطلبات العالم الحقيقي. ابدأ صغيرًا، وقس نتائجك، وحسّن. مستقبل هندسة الذكاء الاصطناعي لا يتعلق فقط بنماذج أفضل، بل بتنسيق أفضل.