تخطَّ إلى المحتوى

smolagents - وكلاء الذكاء الاصطناعي من الكود أولاً

smolagents - وكلاء الذكاء الاصطناعي من الكود أولاً

smolagents هي مكتبة وكيل قليلة الحد الأدنى وموجهة للكود من Hugging Face. الفكرة الرئيسية: بدلاً من أن ينبعث النموذج من استدعاءات الأداة كـ blobs JSON، يكتب CodeAgent أكواد Python وينفذها مباشرة. التعبير عن الإجراءات كود يسمح بخطوة واحدة بأن تستدعي أدوات متعددة وتستخدم حلقات ومتغيرات وسلسلة منطق — مما يقلل عدد جولات LLM (تقريبًا ~30% أقل) ويحسن الأداء في المهام المعقدة. إنها محايدة للنموذج، وتدعم التنفيذ في صندوق حماية، وتظل قليلة الحد الأدنى والقابلة للقرصنة.

التثبيت

الطريقةالأمر
pippip install smolagents
مع أدوات إضافيةpip install "smolagents[toolkit]"
إضافات Sandboxpip install "smolagents[e2b]" (أو [docker])
تعيين مفتاح نموذجexport HF_TOKEN=... أو مفاتيح المزود
التحققpython -c "import smolagents; print('ok')"

المفاهيم الأساسية

المصطلحالمعنى
CodeAgentوكيل يكتب إجراءات Python (الافتراضي)
ToolCallingAgentوكيل ينبعث من استدعاءات أداة JSON الكلاسيكية
Toolاستدعاء يمكن للوكيل استخدامه (مع مخطط)
Modelخادم LLM (HF أو OpenAI أو LiteLLM أو محلي)
Sandboxحيث يعمل الكود المنشأ (محلي أو E2B أو Docker أو Modal)

CodeAgent الحد الأدنى

from smolagents import CodeAgent, WebSearchTool, InferenceClientModel

agent = CodeAgent(
    tools=[WebSearchTool()],
    model=InferenceClientModel(),   # HF Inference API
)

agent.run("كم ثانية سيستغرق الفهد لعبور جسر Golden Gate Bridge؟")
كائنالدور
CodeAgent(tools=[...], model=...)الوكيل
agent.run("task")تنفيذ مهمة من البداية إلى النهاية
WebSearchTool()أداة مدمجة
InferenceClientModel()خادم نموذج HF

النماذج

الخادمالفئة
HF Inference APIInferenceClientModel
تحويلات محليةTransformersModel
أي مزود عبر LiteLLMLiteLLMModel(model_id="openai/gpt-4o")
خادم متوافق مع OpenAIOpenAIServerModel(...)
vLLM / نقاط نهاية محليةعبر LiteLLM / OpenAI-compatible

تحديد الأدوات

from smolagents import tool

@tool
def get_weather(city: str) -> str:
    """Return the weather for a city.

    Args:
        city: The city to look up.
    """
    return f"Sunny in {city}"

agent = CodeAgent(tools=[get_weather], model=InferenceClientModel())
آليةالاستخدام
@tool decoratorحول دالة مكتوبة إلى أداة
Tool subclassمزيد من التحكم في المخطط/السلوك
Tool Collectionsاستيراد مجموعات من الأدوات (على سبيل المثال من المحور)
MCP toolsربط خوادم Model Context Protocol

التنفيذ في صندوق حماية (مهم)

لأن CodeAgents تقوم بتشغيل Python المُنشأ، قيّده في الإنتاج.

صندوق الحمايةالكيفية
محلي (افتراضي)يعمل في العملية — جيد للتطوير الموثوق به فقط
E2Bexecutor_type="e2b" (صندوق حماية بعيد)
Dockerexecutor_type="docker"
Modalالتنفيذ البعيد في صندوق حماية
الواردات المسموحةقيّد الوحدات التي قد يستوردها الكود المُنشأ
agent = CodeAgent(tools=[...], model=..., executor_type="e2b")

وكلاء متعددين والاسترجاع

النمطالكيفية
وكلاء مُدارونأعط وكيلًا واحدًا وكلاء آخرين كأدوات
Retrieval/RAGأضف أداة retriever للإجابات المؤسسة
Planningتمكين خطوات التخطيط الدورية للمهام الصعبة
Handoffsاجمع المتخصصين تحت وكيل مدير

سير العمل الشائع

# وكيل بحث يتصفح ويحسب في الكود
from smolagents import CodeAgent, WebSearchTool, InferenceClientModel
agent = CodeAgent(tools=[WebSearchTool()], model=InferenceClientModel(),
                  executor_type="docker")
agent.run("قارن نمو السكان في طوكيو ودلهي منذ عام 2000.")

smolagents مقابل أطر عمل وكيل أخرى

الجانبsmolagentsLangGraphPydantic AI
تنسيق الإجراءكود PythonGraph/state machineاستدعاءات أداة مكتوبة
الحجم/الفلسفةحد أدنى وقابل للقرصنةتنسيق الحالة الكاملآمن من حيث النوع، نمط FastAPI
كفاءة LLMعدد أقل من الاستدعاءات (الكود)يعتمدقياسي
الأفضل لـحلقات كود وكيل واحدوكلاء ثابتة ودائمةوكلاء إنتاج آمنة من حيث النوع

الموارد