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

نشر أدوات مخصصة

نظام الأدوات في CrewAI مصمم للتوسيع. إذا بنيت أداة يمكن أن تفيد الآخرين، يمكنك تعبئتها كمكتبة Python مستقلة ونشرها على PyPI وإتاحتها لأي مستخدم CrewAI — دون الحاجة لطلب سحب إلى مستودع CrewAI.

يمشي هذا الدليل عبر العملية الكاملة: تنفيذ عقد الأدوات، وهيكلة حزمتك، والنشر على PyPI.

كل أداة CrewAI يجب أن تستوفي إحدى الواجهتين:

ورث من crewai.tools.BaseTool وطبّق طريقة _run. عرّف name وdescription واختياريًا args_schema للتحقق من المدخلات.

from crewai.tools import BaseTool
from pydantic import BaseModel, Field
class GeolocateInput(BaseModel):
"""Input schema for GeolocateTool."""
address: str = Field(..., description="The street address to geolocate.")
class GeolocateTool(BaseTool):
name: str = "Geolocate"
description: str = "Converts a street address into latitude/longitude coordinates."
args_schema: type[BaseModel] = GeolocateInput
def _run(self, address: str) -> str:
return f"40.7128, -74.0060"

الخيار 2: استخدام مزخرف @tool

Section titled “الخيار 2: استخدام مزخرف @tool”

للأدوات الأبسط، يحوّل مزخرف @tool دالة إلى أداة CrewAI. يجب أن تحتوي الدالة على سلسلة توثيق (تُستخدم كوصف الأداة) وتعليقات أنواع.

from crewai.tools import tool
@tool("Geolocate")
def geolocate(address: str) -> str:
"""Converts a street address into latitude/longitude coordinates."""
return "40.7128, -74.0060"

بغض النظر عن النهج الذي تستخدمه، يجب أن تحتوي أداتك على:

  • name — معرّف قصير ووصفي.
  • description — يخبر الـ Agent متى وكيف يستخدم الأداة.
  • _run (BaseTool) أو جسم الدالة (@tool) — منطق التنفيذ المتزامن.
  • تعليقات أنواع على جميع المعاملات وقيم الإرجاع.
  • إرجاع نتيجة نصية (أو شيء يمكن تحويله لنص).
crewai-geolocate/
├── pyproject.toml
├── LICENSE
├── README.md
└── src/
└── crewai_geolocate/
├── __init__.py
└── tools.py
Terminal window
# Build the package
uv build
# Publish to PyPI
uv publish

بعد النشر، يمكن للمستخدمين تثبيت أداتك بـ:

Terminal window
uv add crewai-geolocate