دمج أدوات CrewAI: دع الوكلاء يبحثون ويقرؤون وينجزون العمل فعلاً

2 min read

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

الأدوات المدمجة الشائعة

تشمل أدوات CrewAI المستخدمة كثيراً:

  • SerperDevTool: بحث على الويب
  • FileReadTool: قراءة الملفات
  • FileWriterTool: كتابة الملفات
  • ScrapeWebsiteTool: كشط محتوى صفحات الويب

إرفاق أدوات بوكيل

from crewai import Agent
from crewai_tools import SerperDevTool
 
search_tool = SerperDevTool()
 
researcher = Agent(
    role="باحث",
    goal="إيجاد مصادر موثوقة حول الموضوع",
    backstory="أنت تتحقق من الحقائق قبل الكتابة.",
    tools=[search_tool],
    allow_delegation=False,
    verbose=True,
)

💡 يمكنك إعادة استخدام نفس search_tool عبر الوكلاء. لا حاجة لإعادة إنشائه في كل مرة (DRY).

قالب أداة مخصصة بسيط

from crewai.tools import BaseTool
from pydantic import BaseModel, Field
 
class QueryInput(BaseModel):
    keyword: str = Field(description="كلمة مفتاحية للبحث")
 
class KeywordTool(BaseTool):
    name: str = "أداة الكلمات المفتاحية"
    description: str = "إعادة شرح مختصر لكلمة مفتاحية."
    args_schema: type[BaseModel] = QueryInput
 
    def _run(self, keyword: str) -> str:
        return f"نتيجة لـ: {keyword}"

أربع قواعد تصميم الأدوات

  1. افعل شيئاً واحداً فقط: إذا تبحث، لا تكتب الملفات أيضاً
  2. كن صريحاً: description يجب أن تذكر الغرض والمدخل بوضوح
  3. تحقق من المعلمات: استخدم مخطط Pydantic
  4. أعد صيغة مستقرة: أسهل للمهام اللاحقة في التحليل

الأخطاء الشائعة

العَرَض السبب الحل
الأداة لا تُستدعى أبداً موجّه المهمة لا يتطلبها صراحةً أضف تعليمة "استخدم الأداة أولاً" صريحة في المهمة
قيم معلمات سيئة مخطط args غير واضح أضف Field(description=...)
إخراج صعب الاستخدام نص حر متشتت جداً أعد أقساماً ثابتة أو سلسلة JSON

الخطوة التالية

بعد الأدوات، التركيز التالي هو اتساق الإخراج.
المقالة التالية تُريك كيف تقفل الصيغة مع Pydantic:
👉 الإخراج المنظم مع Pydantic