دمج أدوات 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}"أربع قواعد تصميم الأدوات
- افعل شيئاً واحداً فقط: إذا تبحث، لا تكتب الملفات أيضاً
- كن صريحاً:
descriptionيجب أن تذكر الغرض والمدخل بوضوح - تحقق من المعلمات: استخدم مخطط Pydantic
- أعد صيغة مستقرة: أسهل للمهام اللاحقة في التحليل
الأخطاء الشائعة
| العَرَض | السبب | الحل |
|---|---|---|
| الأداة لا تُستدعى أبداً | موجّه المهمة لا يتطلبها صراحةً | أضف تعليمة "استخدم الأداة أولاً" صريحة في المهمة |
| قيم معلمات سيئة | مخطط args غير واضح | أضف Field(description=...) |
| إخراج صعب الاستخدام | نص حر متشتت جداً | أعد أقساماً ثابتة أو سلسلة JSON |
الخطوة التالية
بعد الأدوات، التركيز التالي هو اتساق الإخراج.
المقالة التالية تُريك كيف تقفل الصيغة مع Pydantic:
👉 الإخراج المنظم مع Pydantic