في المشهد سريع التطور لتطوير تطبيقات نماذج اللغات الكبيرة (LLM)، يعد اختيار الإطار المناسب أمراً بالغ الأهمية. بينما سيطرت مكتبات مثل LangChain وLlamaIndex على الأيام الأولى للذكاء الاصطناعي، إلا أنها غالباً ما تعطي الأولوية للتجريد على الأداء، مما يؤدي إلى قواعد شفرة برمجية متضخمة وتنفيذ أبطأ. هنا يأتي دور Agno، إطار عمل بايثون مفتوح المصدر مصمم خصيصاً لبناء وكلاء ذكاء اصطناعي عاليي الأداء وقابلين للتوسع وقابلين للرصد. على عكس سلاسل الأغراض العامة، يركز Agno على المبادئ الأساسية لتصميم الوكلاء: الأدوات، والذاكرة، والهيكل.
لماذا تختار Agno؟
يميز Agno نفسه من خلال فلسفة البساطة والسرعة. تم بناؤه ليكون خفيف الوزن، مما يسمح للمطورين ببناء وكلاء دون عبء أشجار التبعيات المعقدة. تشمل الميزات الرئيسية ما يلي:
- استدعاء الأدوات الأصلي: يوفر Agno طريقة إعلانية لتعريف الأدوات التي يمكن لنماذج اللغات الكبيرة (LLMs) استدعاؤها، مع معالجة تحليل الحجج والتحقق من الأنواع تلقائياً.
- ذاكرة مدمجة: يقدم إدارة ذاكرة قوية، بما في ذلك نوافذ السياق قصيرة المدى والتخزين المتجهي طويل المدى، مدمجة بسلاسة في دورة حياة الوكيل.
- الرصد: التكامل الأصلي مع منصات الرصد يسمح بتتبع وتصفح تفاعلات الوكيل بسهولة، وهو مكون حاسم لبيئات الإنتاج.
الهندسة المعمارية الأساسية
في جوهره، يتكون وكيل Agno من نموذج (مثل GPT-4 من OpenAI أو Claude من Anthropic)، ومجموعة من الأدوات، ومكونات ذاكرة اختيارية. يستخدم الإطار نهجاً هيكلياً لتعريف هذه العناصر، مما يضمن سلامة الأنواع ودعم أفضل لبيئات التطوير المتكاملة (IDE). يسمح هذا التعريف الهيكلي لنموذج اللغة الكبير (LLM) بفهم مخطط الأدوات المتاحة بدقة أكبر، مما يقلل من الهلوسة أثناء تنفيذ الأدوات.
بناء أول وكيل لك
لنلقِ نظرة على مثال عملي. نفترض أننا نريد بناء وكيل باحث يمكنه البحث في الويب وحفظ النتائج. باستخدام Agno، تكون هذه العملية مختصرة بشكل ملحوظ.
أولاً، تأكد من تثبيت الحزمة:
pip install agno
بعد ذلك، نحدد أدواتنا. يستخدم Agno دوال بايثون القياسية المزينة بـ @agno.tool. يستخرج الزخرفة (decorator) تلقائياً نص التوثيق (docstring) كوصف للأداة، وهو أمر حيوي لنموذج اللغة الكبير لمعرفة متى يستخدم الأداة.
import agno
from agno.agent import Agent
from agno.models.openai import OpenAIChat
# Define a simple tool
@agno.tool
def get_weather(city: str) -> str:
"""
Get the current weather for a specific city.
Args:
city: The name of the city.
"""
return f"The weather in {city} is sunny."
# Create the agent
agent = Agent(
name="WeatherBot",
model=OpenAIChat(id="gpt-4o"),
tools=[get_weather],
instructions=["You are a helpful weather assistant."],
show_tool_calls=True,
)
# Run the agent
agent.print_response("What is the weather in London?", stream=True)
في هذا المثال، show_tool_calls=True هي ميزة مريحة للمطورين تقوم بطباعة حمولة JSON الخام المرسلة إلى نموذج اللغة الكبير والاستجابة المستلمة. هذا لا يقدر بثمن لتصحيح أخطاء تدفق تفاعلات الأدوات.
الاستخدام المتقدم: المخرجات المهيكلة والذاكرة
لتطبيقات أكثر تعقيداً، يدعم Agno المخرجات المهيكلة. يمكنك تعريف نماذج Pydantic لفرض مخططات JSON صارمة على استجابة نموذج اللغة الكبير، مما يضمن تلقي خطوط البيانات اللاحقة لأنواع بيانات متسقة. علاوة على ذلك، يسمح نظام ذاكرة Agno للوكلاء بالاحتفاظ بالسياق عبر الجلسات. من خلال إضافة مكون ذاكرة إلى وكيلك، تمكّنه من تذكر المحادثات السابقة وتفضيلات المستخدم والحقائق المتعلمة، مما يجعل التفاعل يبدو أكثر تخصيصاً واستمرارية.
الخاتمة
يمثل Agno نضجاً في مجال أطر عمل الوكلاء. من خلال إزالة طبقات التجريد غير الضرورية والتركيز على الأداء وسلامة الأنواع والرصد، فإنه يوفر أساساً متيناً لتطبيقات الذكاء الاصطناعي الجاهزة للإنتاج. بالنسبة للمطورين الذين يجدون LangChain ثقيلاً جداً أو يفتقرون إلى المرونة التي يحتاجونها، يقدم Agno بديلاً مقنعاً وعالي الأداء. مع استمرار نمو نظام بيئي لوكلاء الذكاء الاصطناعي، ستلعب أطر عمل مثل Agno دوراً محورياً في سد الفجوة بين النماذج الأولية التجريبية والمنتجات الموثوقة والقابلة للتوسع.