docs: add modern standard arabic translation of all documentation

This commit is contained in:
Greyson LaLonde
2026-03-25 15:44:02 +08:00
committed by GitHub
parent b890ac0dd0
commit f5b3b2a355
242 changed files with 47411 additions and 0 deletions

View File

@@ -0,0 +1,119 @@
---
title: أداة AI Mind
description: أداة `AIMindTool` مصممة للاستعلام عن مصادر البيانات باللغة الطبيعية.
icon: brain
mode: "wide"
---
# `AIMindTool`
## الوصف
أداة `AIMindTool` هي غلاف حول [AI-Minds](https://mindsdb.com/minds) المقدمة من [MindsDB](https://mindsdb.com/). تتيح لك الاستعلام عن مصادر البيانات باللغة الطبيعية ببساطة من خلال إعداد معاملات الاتصال الخاصة بها. هذه الأداة مفيدة عندما تحتاج إلى إجابات عن أسئلة من بياناتك المخزنة في مصادر بيانات متنوعة بما في ذلك PostgreSQL وMySQL وMariaDB وClickHouse وSnowflake وGoogle BigQuery.
Minds هي أنظمة ذكاء اصطناعي تعمل بشكل مشابه لنماذج اللغة الكبيرة (LLMs) لكنها تتجاوز ذلك من خلال الإجابة على أي سؤال من أي بيانات. يتحقق ذلك من خلال:
- اختيار البيانات الأكثر صلة للإجابة باستخدام البحث البارامتري
- فهم المعنى وتقديم الاستجابات ضمن السياق الصحيح من خلال البحث الدلالي
- تقديم إجابات دقيقة من خلال تحليل البيانات واستخدام نماذج التعلم الآلي (ML)
## التثبيت
لدمج هذه الأداة في مشروعك، تحتاج إلى تثبيت Minds SDK:
```shell
uv add minds-sdk
```
## خطوات البدء
لاستخدام `AIMindTool` بفعالية، اتبع الخطوات التالية:
1. **تثبيت الحزمة**: تأكد من تثبيت حزمتي `crewai[tools]` و`minds-sdk` في بيئة Python.
2. **الحصول على مفتاح API**: سجّل في حساب Minds [هنا](https://mdb.ai/register)، واحصل على مفتاح API.
3. **إعداد البيئة**: خزّن مفتاح API الذي حصلت عليه في متغير بيئة باسم `MINDS_API_KEY` لتسهيل استخدامه من قبل الأداة.
## مثال
يوضح المثال التالي كيفية تهيئة الأداة وتنفيذ استعلام:
```python Code
from crewai_tools import AIMindTool
# Initialize the AIMindTool
aimind_tool = AIMindTool(
datasources=[
{
"description": "house sales data",
"engine": "postgres",
"connection_data": {
"user": "demo_user",
"password": "demo_password",
"host": "samples.mindsdb.com",
"port": 5432,
"database": "demo",
"schema": "demo_data"
},
"tables": ["house_sales"]
}
]
)
# Run a natural language query
result = aimind_tool.run("How many 3 bedroom houses were sold in 2008?")
print(result)
```
## المعاملات
تقبل `AIMindTool` المعاملات التالية:
- **api_key**: اختياري. مفتاح API الخاص بـ Minds. إذا لم يُقدَّم، سيُقرأ من متغير البيئة `MINDS_API_KEY`.
- **datasources**: قائمة من القواميس، كل منها يحتوي على المفاتيح التالية:
- **description**: وصف البيانات الموجودة في مصدر البيانات.
- **engine**: محرك (أو نوع) مصدر البيانات.
- **connection_data**: قاموس يحتوي على معاملات الاتصال لمصدر البيانات.
- **tables**: قائمة الجداول التي سيستخدمها مصدر البيانات. هذا اختياري ويمكن حذفه إذا كانت جميع الجداول في مصدر البيانات مطلوبة.
يمكن العثور على قائمة مصادر البيانات المدعومة ومعاملات اتصالها [هنا](https://docs.mdb.ai/docs/data_sources).
## مثال على التكامل مع الوكيل
إليك كيفية دمج `AIMindTool` مع وكيل CrewAI:
```python Code
from crewai import Agent
from crewai.project import agent
from crewai_tools import AIMindTool
# Initialize the tool
aimind_tool = AIMindTool(
datasources=[
{
"description": "sales data",
"engine": "postgres",
"connection_data": {
"user": "your_user",
"password": "your_password",
"host": "your_host",
"port": 5432,
"database": "your_db",
"schema": "your_schema"
},
"tables": ["sales"]
}
]
)
# Define an agent with the AIMindTool
@agent
def data_analyst(self) -> Agent:
return Agent(
config=self.agents_config["data_analyst"],
allow_delegation=False,
tools=[aimind_tool]
)
```
## الخلاصة
توفر `AIMindTool` طريقة قوية للاستعلام عن مصادر بياناتك باستخدام اللغة الطبيعية، مما يسهّل استخراج الرؤى دون كتابة استعلامات SQL معقدة. من خلال الاتصال بمصادر بيانات متنوعة والاستفادة من تقنية AI-Minds، تمكّن هذه الأداة الوكلاء من الوصول إلى البيانات وتحليلها بكفاءة.

View File

@@ -0,0 +1,210 @@
---
title: مفسّر الكود
description: أداة `CodeInterpreterTool` هي أداة قوية مصممة لتنفيذ كود Python 3 في بيئة آمنة ومعزولة.
icon: code-simple
mode: "wide"
---
# `CodeInterpreterTool`
## الوصف
تمكّن `CodeInterpreterTool` وكلاء CrewAI من تنفيذ كود Python 3 الذي يولّدونه بشكل مستقل. هذه الوظيفة ذات قيمة خاصة لأنها تتيح للوكلاء إنشاء الكود وتنفيذه والحصول على النتائج واستخدام تلك المعلومات لاتخاذ القرارات والإجراءات اللاحقة.
هناك عدة طرق لاستخدام هذه الأداة:
### حاوية Docker (موصى بها)
هذا هو الخيار الأساسي. يُنفَّذ الكود في حاوية Docker آمنة ومعزولة، مما يضمن السلامة بغض النظر عن محتواه.
تأكد من تثبيت Docker وتشغيله على نظامك. إذا لم يكن لديك، يمكنك تثبيته من [هنا](https://docs.docker.com/get-docker/).
### بيئة الحماية
إذا لم يكن Docker متاحاً - إما غير مُثبّت أو غير قابل للوصول لأي سبب - سيُنفَّذ الكود في بيئة Python مقيدة تُسمى بيئة الحماية.
هذه البيئة محدودة جداً، مع قيود صارمة على العديد من الوحدات والدوال المدمجة.
### التنفيذ غير الآمن
**غير موصى به للإنتاج**
يسمح هذا الوضع بتنفيذ أي كود Python، بما في ذلك الاستدعاءات الخطيرة لـ `sys, os..` والوحدات المماثلة. [اطلع على](/ar/tools/ai-ml/codeinterpretertool#enabling-unsafe-mode) كيفية تفعيل هذا الوضع
## التسجيل
تسجّل `CodeInterpreterTool` استراتيجية التنفيذ المختارة في STDOUT
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت حزمة أدوات CrewAI:
```shell
pip install 'crewai[tools]'
```
## مثال
يوضح المثال التالي كيفية استخدام `CodeInterpreterTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew, Process
from crewai_tools import CodeInterpreterTool
# Initialize the tool
code_interpreter = CodeInterpreterTool()
# Define an agent that uses the tool
programmer_agent = Agent(
role="Python Programmer",
goal="Write and execute Python code to solve problems",
backstory="An expert Python programmer who can write efficient code to solve complex problems.",
tools=[code_interpreter],
verbose=True,
)
# Example task to generate and execute code
coding_task = Task(
description="Write a Python function to calculate the Fibonacci sequence up to the 10th number and print the result.",
expected_output="The Fibonacci sequence up to the 10th number.",
agent=programmer_agent,
)
# Create and run the crew
crew = Crew(
agents=[programmer_agent],
tasks=[coding_task],
verbose=True,
process=Process.sequential,
)
result = crew.kickoff()
```
يمكنك أيضاً تفعيل تنفيذ الكود مباشرة عند إنشاء وكيل:
```python Code
from crewai import Agent
# Create an agent with code execution enabled
programmer_agent = Agent(
role="Python Programmer",
goal="Write and execute Python code to solve problems",
backstory="An expert Python programmer who can write efficient code to solve complex problems.",
allow_code_execution=True, # This automatically adds the CodeInterpreterTool
verbose=True,
)
```
### تفعيل `unsafe_mode`
```python Code
from crewai_tools import CodeInterpreterTool
code = """
import os
os.system("ls -la")
"""
CodeInterpreterTool(unsafe_mode=True).run(code=code)
```
## المعاملات
تقبل `CodeInterpreterTool` المعاملات التالية أثناء التهيئة:
- **user_dockerfile_path**: اختياري. مسار ملف Dockerfile مخصص لاستخدامه لحاوية مفسّر الكود.
- **user_docker_base_url**: اختياري. عنوان URL لبرنامج Docker daemon لتشغيل الحاوية.
- **unsafe_mode**: اختياري. ما إذا كان سيتم تشغيل الكود مباشرة على الجهاز المضيف بدلاً من حاوية Docker أو بيئة الحماية. القيمة الافتراضية `False`. استخدم بحذر!
- **default_image_tag**: اختياري. وسم صورة Docker الافتراضي. القيمة الافتراضية `code-interpreter:latest`
عند استخدام الأداة مع وكيل، سيحتاج الوكيل لتقديم:
- **code**: مطلوب. كود Python 3 المراد تنفيذه.
- **libraries_used**: اختياري. قائمة المكتبات المستخدمة في الكود التي تحتاج إلى تثبيت. القيمة الافتراضية `[]`
## مثال على التكامل مع الوكيل
إليك مثالاً أكثر تفصيلاً عن كيفية دمج `CodeInterpreterTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import CodeInterpreterTool
# Initialize the tool
code_interpreter = CodeInterpreterTool()
# Define an agent that uses the tool
data_analyst = Agent(
role="Data Analyst",
goal="Analyze data using Python code",
backstory="""You are an expert data analyst who specializes in using Python
to analyze and visualize data. You can write efficient code to process
large datasets and extract meaningful insights.""",
tools=[code_interpreter],
verbose=True,
)
# Create a task for the agent
analysis_task = Task(
description="""
Write Python code to:
1. Generate a random dataset of 100 points with x and y coordinates
2. Calculate the correlation coefficient between x and y
3. Create a scatter plot of the data
4. Print the correlation coefficient and save the plot as 'scatter.png'
Make sure to handle any necessary imports and print the results.
""",
expected_output="The correlation coefficient and confirmation that the scatter plot has been saved.",
agent=data_analyst,
)
# Run the task
crew = Crew(
agents=[data_analyst],
tasks=[analysis_task],
verbose=True,
process=Process.sequential,
)
result = crew.kickoff()
```
## تفاصيل التنفيذ
تستخدم `CodeInterpreterTool` حاوية Docker لإنشاء بيئة آمنة لتنفيذ الكود:
```python Code
class CodeInterpreterTool(BaseTool):
name: str = "Code Interpreter"
description: str = "Interprets Python3 code strings with a final print statement."
args_schema: Type[BaseModel] = CodeInterpreterSchema
default_image_tag: str = "code-interpreter:latest"
def _run(self, **kwargs) -> str:
code = kwargs.get("code", self.code)
libraries_used = kwargs.get("libraries_used", [])
if self.unsafe_mode:
return self.run_code_unsafe(code, libraries_used)
else:
return self.run_code_safety(code, libraries_used)
```
تقوم الأداة بالخطوات التالية:
1. التحقق من وجود صورة Docker أو بنائها إذا لزم الأمر
2. إنشاء حاوية Docker مع تركيب مجلد العمل الحالي
3. تثبيت أي مكتبات مطلوبة حددها الوكيل
4. تنفيذ كود Python في الحاوية
5. إرجاع مخرجات تنفيذ الكود
6. التنظيف عن طريق إيقاف الحاوية وإزالتها
## اعتبارات الأمان
بشكل افتراضي، تشغّل `CodeInterpreterTool` الكود في حاوية Docker معزولة، مما يوفر طبقة من الأمان. ومع ذلك، هناك بعض اعتبارات الأمان التي يجب مراعاتها:
1. تمتلك حاوية Docker وصولاً إلى مجلد العمل الحالي، لذا قد يتم الوصول إلى ملفات حساسة.
2. إذا لم تكن حاوية Docker متاحة وكان الكود يحتاج للتشغيل بأمان، سيُنفَّذ في بيئة حماية. لأسباب أمنية، لا يُسمح بتثبيت مكتبات عشوائية
3. يسمح معامل `unsafe_mode` بتنفيذ الكود مباشرة على الجهاز المضيف، ويجب استخدامه فقط في بيئات موثوقة.
4. كن حذراً عند السماح للوكلاء بتثبيت مكتبات عشوائية، لأنها قد تتضمن كوداً ضاراً.
## الخلاصة
توفر `CodeInterpreterTool` طريقة قوية لوكلاء CrewAI لتنفيذ كود Python في بيئة آمنة نسبياً. من خلال تمكين الوكلاء من كتابة وتشغيل الكود، توسّع قدراتهم في حل المشكلات بشكل كبير، خاصة للمهام التي تتضمن تحليل البيانات أو الحسابات أو أعمال حسابية أخرى. هذه الأداة مفيدة بشكل خاص للوكلاء الذين يحتاجون إلى إجراء عمليات معقدة يُعبَّر عنها بكفاءة أكبر في الكود مقارنة باللغة الطبيعية.

View File

@@ -0,0 +1,52 @@
---
title: أداة DALL-E
description: أداة `DallETool` هي أداة قوية مصممة لتوليد الصور من الأوصاف النصية.
icon: image
mode: "wide"
---
# `DallETool`
## الوصف
تُستخدم هذه الأداة لمنح الوكيل القدرة على توليد الصور باستخدام نموذج DALL-E. وهو نموذج قائم على المحولات يولّد الصور من الأوصاف النصية.
تتيح هذه الأداة للوكيل توليد صور بناءً على النص المدخل من المستخدم.
## التثبيت
ثبّت حزمة crewai_tools
```shell
pip install 'crewai[tools]'
```
## مثال
تذكر أنه عند استخدام هذه الأداة، يجب أن يُولَّد النص من قبل الوكيل نفسه. يجب أن يكون النص وصفاً للصورة التي تريد توليدها.
```python Code
from crewai_tools import DallETool
Agent(
...
tools=[DallETool()],
)
```
إذا لزم الأمر، يمكنك أيضاً ضبط معاملات نموذج DALL-E عبر تمريرها كمعاملات لفئة `DallETool`. على سبيل المثال:
```python Code
from crewai_tools import DallETool
dalle_tool = DallETool(model="dall-e-3",
size="1024x1024",
quality="standard",
n=1)
Agent(
...
tools=[dalle_tool]
)
```
المعاملات مبنية على طريقة `client.images.generate` من API الخاص بـ OpenAI. لمزيد من المعلومات حول المعاملات،
يرجى الرجوع إلى [وثائق OpenAI API](https://platform.openai.com/docs/guides/images/introduction?lang=python).

View File

@@ -0,0 +1,59 @@
---
title: أداة LangChain
description: أداة `LangChainTool` هي غلاف لأدوات ومحركات استعلام LangChain.
icon: link
mode: "wide"
---
## `LangChainTool`
<Info>
يتكامل CrewAI بسلاسة مع [قائمة أدوات](https://python.langchain.com/docs/integrations/tools/) LangChain الشاملة، والتي يمكن استخدامها جميعها مع CrewAI.
</Info>
```python Code
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew
from crewai.tools import BaseTool
from pydantic import Field
from langchain_community.utilities import GoogleSerperAPIWrapper
# Set up your SERPER_API_KEY key in an .env file, eg:
# SERPER_API_KEY=<your api key>
load_dotenv()
search = GoogleSerperAPIWrapper()
class SearchTool(BaseTool):
name: str = "Search"
description: str = "Useful for search-based queries. Use this to find current information about markets, companies, and trends."
search: GoogleSerperAPIWrapper = Field(default_factory=GoogleSerperAPIWrapper)
def _run(self, query: str) -> str:
"""Execute the search query and return results"""
try:
return self.search.run(query)
except Exception as e:
return f"Error performing search: {str(e)}"
# Create Agents
researcher = Agent(
role='Research Analyst',
goal='Gather current market data and trends',
backstory="""You are an expert research analyst with years of experience in
gathering market intelligence. You're known for your ability to find
relevant and up-to-date market information and present it in a clear,
actionable format.""",
tools=[SearchTool()],
verbose=True
)
# rest of the code ...
```
## الخلاصة
تعد الأدوات محورية في توسيع قدرات وكلاء CrewAI، مما يمكّنهم من القيام بمجموعة واسعة من المهام والتعاون بفعالية.
عند بناء حلول مع CrewAI، استفد من الأدوات المخصصة والموجودة لتمكين وكلائك وتعزيز منظومة الذكاء الاصطناعي. فكّر في الاستفادة من معالجة الأخطاء وآليات التخزين المؤقت
ومرونة معاملات الأدوات لتحسين أداء وقدرات وكلائك.

View File

@@ -0,0 +1,147 @@
---
title: أداة LlamaIndex
description: أداة `LlamaIndexTool` هي غلاف لأدوات ومحركات استعلام LlamaIndex.
icon: address-book
mode: "wide"
---
# `LlamaIndexTool`
## الوصف
صُممت `LlamaIndexTool` لتكون غلافاً عاماً حول أدوات ومحركات استعلام LlamaIndex، مما يتيح لك الاستفادة من موارد LlamaIndex من حيث خطوط أنابيب RAG/الوكيلية كأدوات للتوصيل بوكلاء CrewAI. تتيح لك هذه الأداة دمج قدرات معالجة واسترجاع البيانات القوية من LlamaIndex في سير عمل CrewAI بسلاسة.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت LlamaIndex:
```shell
uv add llama-index
```
## خطوات البدء
لاستخدام `LlamaIndexTool` بفعالية، اتبع الخطوات التالية:
1. **تثبيت LlamaIndex**: ثبّت حزمة LlamaIndex باستخدام الأمر أعلاه.
2. **إعداد LlamaIndex**: اتبع [وثائق LlamaIndex](https://docs.llamaindex.ai/) لإعداد خط أنابيب RAG/وكيلي.
3. **إنشاء أداة أو محرك استعلام**: أنشئ أداة أو محرك استعلام LlamaIndex تريد استخدامه مع CrewAI.
## مثال
توضح الأمثلة التالية كيفية تهيئة الأداة من مكونات LlamaIndex مختلفة:
### من أداة LlamaIndex
```python Code
from crewai_tools import LlamaIndexTool
from crewai import Agent
from llama_index.core.tools import FunctionTool
# Example 1: Initialize from FunctionTool
def search_data(query: str) -> str:
"""Search for information in the data."""
# Your implementation here
return f"Results for: {query}"
# Create a LlamaIndex FunctionTool
og_tool = FunctionTool.from_defaults(
search_data,
name="DataSearchTool",
description="Search for information in the data"
)
# Wrap it with LlamaIndexTool
tool = LlamaIndexTool.from_tool(og_tool)
# Define an agent that uses the tool
@agent
def researcher(self) -> Agent:
'''
This agent uses the LlamaIndexTool to search for information.
'''
return Agent(
config=self.agents_config["researcher"],
tools=[tool]
)
```
### من أدوات LlamaHub
```python Code
from crewai_tools import LlamaIndexTool
from llama_index.tools.wolfram_alpha import WolframAlphaToolSpec
# Initialize from LlamaHub Tools
wolfram_spec = WolframAlphaToolSpec(app_id="your_app_id")
wolfram_tools = wolfram_spec.to_tool_list()
tools = [LlamaIndexTool.from_tool(t) for t in wolfram_tools]
```
### من محرك استعلام LlamaIndex
```python Code
from crewai_tools import LlamaIndexTool
from llama_index.core import VectorStoreIndex
from llama_index.core.readers import SimpleDirectoryReader
# Load documents
documents = SimpleDirectoryReader("./data").load_data()
# Create an index
index = VectorStoreIndex.from_documents(documents)
# Create a query engine
query_engine = index.as_query_engine()
# Create a LlamaIndexTool from the query engine
query_tool = LlamaIndexTool.from_query_engine(
query_engine,
name="Company Data Query Tool",
description="Use this tool to lookup information in company documents"
)
```
## طرق الفئة
توفر `LlamaIndexTool` طريقتي فئة رئيسيتين لإنشاء المثيلات:
### from_tool
تنشئ `LlamaIndexTool` من أداة LlamaIndex.
```python Code
@classmethod
def from_tool(cls, tool: Any, **kwargs: Any) -> "LlamaIndexTool":
# Implementation details
```
### from_query_engine
تنشئ `LlamaIndexTool` من محرك استعلام LlamaIndex.
```python Code
@classmethod
def from_query_engine(
cls,
query_engine: Any,
name: Optional[str] = None,
description: Optional[str] = None,
return_direct: bool = False,
**kwargs: Any,
) -> "LlamaIndexTool":
# Implementation details
```
## المعاملات
تقبل طريقة `from_query_engine` المعاملات التالية:
- **query_engine**: مطلوب. محرك استعلام LlamaIndex المراد تغليفه.
- **name**: اختياري. اسم الأداة.
- **description**: اختياري. وصف الأداة.
- **return_direct**: اختياري. ما إذا كان يتم إرجاع الاستجابة مباشرة. القيمة الافتراضية `False`.
## الخلاصة
توفر `LlamaIndexTool` طريقة قوية لدمج قدرات LlamaIndex في وكلاء CrewAI. من خلال تغليف أدوات ومحركات استعلام LlamaIndex، تمكّن الوكلاء من الاستفادة من وظائف استرجاع ومعالجة البيانات المتطورة، مما يعزز قدرتهم على التعامل مع مصادر المعلومات المعقدة.

View File

@@ -0,0 +1,65 @@
---
title: "نظرة عامة"
description: "استفد من خدمات الذكاء الاصطناعي وولّد الصور وعالج الرؤية وابنِ أنظمة ذكية"
icon: "face-smile"
mode: "wide"
---
تتكامل هذه الأدوات مع خدمات الذكاء الاصطناعي وتعلم الآلة لتعزيز وكلائك بقدرات متقدمة مثل توليد الصور ومعالجة الرؤية وتنفيذ الكود الذكي.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة DALL-E" icon="image" href="/ar/tools/ai-ml/dalletool">
توليد صور بالذكاء الاصطناعي باستخدام نموذج DALL-E من OpenAI.
</Card>
<Card title="أداة الرؤية" icon="eye" href="/ar/tools/ai-ml/visiontool">
معالجة وتحليل الصور بقدرات الرؤية الحاسوبية.
</Card>
<Card title="أداة AI Mind" icon="brain" href="/ar/tools/ai-ml/aimindtool">
قدرات متقدمة للتفكير واتخاذ القرار بالذكاء الاصطناعي.
</Card>
<Card title="أداة LlamaIndex" icon="llama" href="/ar/tools/ai-ml/llamaindextool">
بناء قواعد معرفية وأنظمة استرجاع مع LlamaIndex.
</Card>
<Card title="أداة LangChain" icon="link" href="/ar/tools/ai-ml/langchaintool">
التكامل مع LangChain لسير عمل ذكاء اصطناعي معقدة.
</Card>
<Card title="أداة RAG" icon="database" href="/ar/tools/ai-ml/ragtool">
تنفيذ أنظمة التوليد المعزز بالاسترجاع.
</Card>
<Card title="أداة مفسّر الكود" icon="code" href="/ar/tools/ai-ml/codeinterpretertool">
تنفيذ كود Python وإجراء تحليل البيانات.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **توليد المحتوى**: إنشاء صور ونصوص ومحتوى وسائط متعددة
- **تحليل البيانات**: تنفيذ الكود وتحليل مجموعات بيانات معقدة
- **أنظمة المعرفة**: بناء أنظمة RAG وقواعد بيانات ذكية
- **الرؤية الحاسوبية**: معالجة وفهم المحتوى المرئي
- **سلامة الذكاء الاصطناعي**: تنفيذ فحوصات الإشراف على المحتوى والسلامة
```python
from crewai_tools import DallETool, VisionTool, CodeInterpreterTool
# Create AI tools
image_generator = DallETool()
vision_processor = VisionTool()
code_executor = CodeInterpreterTool()
# Add to your agent
agent = Agent(
role="AI Specialist",
tools=[image_generator, vision_processor, code_executor],
goal="Create and analyze content using AI capabilities"
)

View File

@@ -0,0 +1,654 @@
---
title: أداة RAG
description: أداة `RagTool` هي أداة قاعدة معرفية ديناميكية للإجابة على الأسئلة باستخدام التوليد المعزز بالاسترجاع.
icon: vector-square
mode: "wide"
---
# `RagTool`
## الوصف
صُممت `RagTool` للإجابة على الأسئلة من خلال الاستفادة من قوة التوليد المعزز بالاسترجاع (RAG) عبر نظام RAG الأصلي في CrewAI.
توفر قاعدة معرفية ديناميكية يمكن الاستعلام عنها لاسترجاع المعلومات ذات الصلة من مصادر بيانات متنوعة.
هذه الأداة مفيدة بشكل خاص للتطبيقات التي تتطلب الوصول إلى مجموعة واسعة من المعلومات وتحتاج إلى تقديم إجابات ذات صلة بالسياق.
## مثال
يوضح المثال التالي كيفية تهيئة الأداة واستخدامها مع مصادر بيانات مختلفة:
```python Code
from crewai_tools import RagTool
# Create a RAG tool with default settings
rag_tool = RagTool()
# Add content from a file
rag_tool.add(data_type="file", path="path/to/your/document.pdf")
# Add content from a web page
rag_tool.add(data_type="web_page", url="https://example.com")
# Define an agent with the RagTool
@agent
def knowledge_expert(self) -> Agent:
'''
This agent uses the RagTool to answer questions about the knowledge base.
'''
return Agent(
config=self.agents_config["knowledge_expert"],
allow_delegation=False,
tools=[rag_tool]
)
```
## مصادر البيانات المدعومة
يمكن استخدام `RagTool` مع مجموعة واسعة من مصادر البيانات، بما في ذلك:
- ملفات PDF
- ملفات CSV
- ملفات JSON
- نصوص
- مجلدات/أدلة
- صفحات ويب HTML
- قنوات YouTube
- فيديوهات YouTube
- مواقع التوثيق
- ملفات MDX
- ملفات DOCX
- ملفات XML
- Gmail
- مستودعات GitHub
- قواعد بيانات PostgreSQL
- قواعد بيانات MySQL
- محادثات Slack
- رسائل Discord
- منتديات Discourse
- نشرات Substack
- محتوى Beehiiv
- ملفات Dropbox
- صور
- مصادر بيانات مخصصة
## المعاملات
تقبل `RagTool` المعاملات التالية:
- **summarize**: اختياري. ما إذا كان يتم تلخيص المحتوى المسترجع. القيمة الافتراضية `False`.
- **adapter**: اختياري. محول مخصص لقاعدة المعرفة. إذا لم يُقدَّم، سيُستخدم CrewAIRagAdapter.
- **config**: اختياري. إعداد نظام RAG الأساسي في CrewAI. يقبل TypedDict من نوع `RagToolConfig` مع مفاتيح اختيارية `embedding_model` (ProviderSpec) و`vectordb` (VectorDbConfig). جميع قيم الإعداد المقدمة برمجياً لها الأولوية على متغيرات البيئة.
## إضافة المحتوى
يمكنك إضافة محتوى إلى قاعدة المعرفة باستخدام طريقة `add`:
```python Code
# Add a PDF file
rag_tool.add(data_type="file", path="path/to/your/document.pdf")
# Add a web page
rag_tool.add(data_type="web_page", url="https://example.com")
# Add a YouTube video
rag_tool.add(data_type="youtube_video", url="https://www.youtube.com/watch?v=VIDEO_ID")
# Add a directory of files
rag_tool.add(data_type="directory", path="path/to/your/directory")
```
## مثال على التكامل مع الوكيل
إليك كيفية دمج `RagTool` مع وكيل CrewAI:
```python Code
from crewai import Agent
from crewai.project import agent
from crewai_tools import RagTool
# Initialize the tool and add content
rag_tool = RagTool()
rag_tool.add(data_type="web_page", url="https://docs.crewai.com")
rag_tool.add(data_type="file", path="company_data.pdf")
# Define an agent with the RagTool
@agent
def knowledge_expert(self) -> Agent:
return Agent(
config=self.agents_config["knowledge_expert"],
allow_delegation=False,
tools=[rag_tool]
)
```
## إعداد متقدم
يمكنك تخصيص سلوك `RagTool` من خلال تقديم قاموس إعداد:
```python Code
from crewai_tools import RagTool
from crewai_tools.tools.rag import RagToolConfig, VectorDbConfig, ProviderSpec
# Create a RAG tool with custom configuration
vectordb: VectorDbConfig = {
"provider": "qdrant",
"config": {
"collection_name": "my-collection"
}
}
embedding_model: ProviderSpec = {
"provider": "openai",
"config": {
"model_name": "text-embedding-3-small"
}
}
config: RagToolConfig = {
"vectordb": vectordb,
"embedding_model": embedding_model
}
rag_tool = RagTool(config=config, summarize=True)
```
## إعداد نموذج التضمين
يقبل معامل `embedding_model` قاموس `crewai.rag.embeddings.types.ProviderSpec` بالبنية التالية:
```python
{
"provider": "provider-name", # Required
"config": { # Optional
# Provider-specific configuration
}
}
```
### المزودون المدعومون
<AccordionGroup>
<Accordion title="OpenAI">
```python main.py
from crewai.rag.embeddings.providers.openai.types import OpenAIProviderSpec
embedding_model: OpenAIProviderSpec = {
"provider": "openai",
"config": {
"api_key": "your-api-key",
"model_name": "text-embedding-ada-002",
"dimensions": 1536,
"organization_id": "your-org-id",
"api_base": "https://api.openai.com/v1",
"api_version": "v1",
"default_headers": {"Custom-Header": "value"}
}
}
```
**خيارات الإعداد:**
- `api_key` (str): مفتاح API لـ OpenAI
- `model_name` (str): النموذج المستخدم. القيمة الافتراضية: `text-embedding-ada-002`. الخيارات: `text-embedding-3-small`، `text-embedding-3-large`، `text-embedding-ada-002`
- `dimensions` (int): عدد أبعاد التضمين
- `organization_id` (str): معرّف منظمة OpenAI
- `api_base` (str): عنوان URL مخصص لقاعدة API
- `api_version` (str): إصدار API
- `default_headers` (dict): ترويسات مخصصة لطلبات API
**متغيرات البيئة:**
- `OPENAI_API_KEY` أو `EMBEDDINGS_OPENAI_API_KEY`: `api_key`
- `OPENAI_ORGANIZATION_ID` أو `EMBEDDINGS_OPENAI_ORGANIZATION_ID`: `organization_id`
- `OPENAI_MODEL_NAME` أو `EMBEDDINGS_OPENAI_MODEL_NAME`: `model_name`
- `OPENAI_API_BASE` أو `EMBEDDINGS_OPENAI_API_BASE`: `api_base`
- `OPENAI_API_VERSION` أو `EMBEDDINGS_OPENAI_API_VERSION`: `api_version`
- `OPENAI_DIMENSIONS` أو `EMBEDDINGS_OPENAI_DIMENSIONS`: `dimensions`
</Accordion>
<Accordion title="Cohere">
```python main.py
from crewai.rag.embeddings.providers.cohere.types import CohereProviderSpec
embedding_model: CohereProviderSpec = {
"provider": "cohere",
"config": {
"api_key": "your-api-key",
"model_name": "embed-english-v3.0"
}
}
```
**خيارات الإعداد:**
- `api_key` (str): مفتاح API لـ Cohere
- `model_name` (str): النموذج المستخدم. القيمة الافتراضية: `large`. الخيارات: `embed-english-v3.0`، `embed-multilingual-v3.0`، `large`، `small`
**متغيرات البيئة:**
- `COHERE_API_KEY` أو `EMBEDDINGS_COHERE_API_KEY`: `api_key`
- `EMBEDDINGS_COHERE_MODEL_NAME`: `model_name`
</Accordion>
<Accordion title="VoyageAI">
```python main.py
from crewai.rag.embeddings.providers.voyageai.types import VoyageAIProviderSpec
embedding_model: VoyageAIProviderSpec = {
"provider": "voyageai",
"config": {
"api_key": "your-api-key",
"model": "voyage-3",
"input_type": "document",
"truncation": True,
"output_dtype": "float32",
"output_dimension": 1024,
"max_retries": 3,
"timeout": 60.0
}
}
```
**خيارات الإعداد:**
- `api_key` (str): مفتاح API لـ VoyageAI
- `model` (str): النموذج المستخدم. القيمة الافتراضية: `voyage-2`. الخيارات: `voyage-3`، `voyage-3-lite`، `voyage-code-3`، `voyage-large-2`
- `input_type` (str): نوع الإدخال. الخيارات: `document` (للتخزين)، `query` (للبحث)
- `truncation` (bool): ما إذا كان يتم اقتطاع المدخلات التي تتجاوز الحد الأقصى. القيمة الافتراضية: `True`
- `output_dtype` (str): نوع بيانات المخرجات
- `output_dimension` (int): بُعد تضمينات المخرجات
- `max_retries` (int): الحد الأقصى لمحاولات إعادة المحاولة. القيمة الافتراضية: `0`
- `timeout` (float): مهلة الطلب بالثواني
**متغيرات البيئة:**
- `VOYAGEAI_API_KEY` أو `EMBEDDINGS_VOYAGEAI_API_KEY`: `api_key`
- `VOYAGEAI_MODEL` أو `EMBEDDINGS_VOYAGEAI_MODEL`: `model`
- `VOYAGEAI_INPUT_TYPE` أو `EMBEDDINGS_VOYAGEAI_INPUT_TYPE`: `input_type`
- `VOYAGEAI_TRUNCATION` أو `EMBEDDINGS_VOYAGEAI_TRUNCATION`: `truncation`
- `VOYAGEAI_OUTPUT_DTYPE` أو `EMBEDDINGS_VOYAGEAI_OUTPUT_DTYPE`: `output_dtype`
- `VOYAGEAI_OUTPUT_DIMENSION` أو `EMBEDDINGS_VOYAGEAI_OUTPUT_DIMENSION`: `output_dimension`
- `VOYAGEAI_MAX_RETRIES` أو `EMBEDDINGS_VOYAGEAI_MAX_RETRIES`: `max_retries`
- `VOYAGEAI_TIMEOUT` أو `EMBEDDINGS_VOYAGEAI_TIMEOUT`: `timeout`
</Accordion>
<Accordion title="Ollama">
```python main.py
from crewai.rag.embeddings.providers.ollama.types import OllamaProviderSpec
embedding_model: OllamaProviderSpec = {
"provider": "ollama",
"config": {
"model_name": "llama2",
"url": "http://localhost:11434/api/embeddings"
}
}
```
**خيارات الإعداد:**
- `model_name` (str): اسم نموذج Ollama (مثل `llama2`، `mistral`، `nomic-embed-text`)
- `url` (str): عنوان URL لنقطة نهاية API الخاصة بـ Ollama. القيمة الافتراضية: `http://localhost:11434/api/embeddings`
**متغيرات البيئة:**
- `OLLAMA_MODEL` أو `EMBEDDINGS_OLLAMA_MODEL`: `model_name`
- `OLLAMA_URL` أو `EMBEDDINGS_OLLAMA_URL`: `url`
</Accordion>
<Accordion title="Amazon Bedrock">
```python main.py
from crewai.rag.embeddings.providers.aws.types import BedrockProviderSpec
embedding_model: BedrockProviderSpec = {
"provider": "amazon-bedrock",
"config": {
"model_name": "amazon.titan-embed-text-v2:0",
"session": boto3_session
}
}
```
**خيارات الإعداد:**
- `model_name` (str): معرّف نموذج Bedrock. القيمة الافتراضية: `amazon.titan-embed-text-v1`. الخيارات: `amazon.titan-embed-text-v1`، `amazon.titan-embed-text-v2:0`، `cohere.embed-english-v3`، `cohere.embed-multilingual-v3`
- `session` (Any): كائن جلسة Boto3 لمصادقة AWS
**متغيرات البيئة:**
- `AWS_ACCESS_KEY_ID`: مفتاح وصول AWS
- `AWS_SECRET_ACCESS_KEY`: مفتاح سري AWS
- `AWS_REGION`: منطقة AWS (مثل `us-east-1`)
</Accordion>
<Accordion title="Azure OpenAI">
```python main.py
from crewai.rag.embeddings.providers.microsoft.types import AzureProviderSpec
embedding_model: AzureProviderSpec = {
"provider": "azure",
"config": {
"deployment_id": "your-deployment-id",
"api_key": "your-api-key",
"api_base": "https://your-resource.openai.azure.com",
"api_version": "2024-02-01",
"model_name": "text-embedding-ada-002",
"api_type": "azure"
}
}
```
**خيارات الإعداد:**
- `deployment_id` (str): **مطلوب** - معرّف نشر Azure OpenAI
- `api_key` (str): مفتاح API لـ Azure OpenAI
- `api_base` (str): نقطة نهاية مورد Azure OpenAI
- `api_version` (str): إصدار API. مثال: `2024-02-01`
- `model_name` (str): اسم النموذج. القيمة الافتراضية: `text-embedding-ada-002`
- `api_type` (str): نوع API. القيمة الافتراضية: `azure`
- `dimensions` (int): أبعاد المخرجات
- `default_headers` (dict): ترويسات مخصصة
**متغيرات البيئة:**
- `AZURE_OPENAI_API_KEY` أو `EMBEDDINGS_AZURE_API_KEY`: `api_key`
- `AZURE_OPENAI_ENDPOINT` أو `EMBEDDINGS_AZURE_API_BASE`: `api_base`
- `EMBEDDINGS_AZURE_DEPLOYMENT_ID`: `deployment_id`
- `EMBEDDINGS_AZURE_API_VERSION`: `api_version`
- `EMBEDDINGS_AZURE_MODEL_NAME`: `model_name`
- `EMBEDDINGS_AZURE_API_TYPE`: `api_type`
- `EMBEDDINGS_AZURE_DIMENSIONS`: `dimensions`
</Accordion>
<Accordion title="Google Generative AI">
```python main.py
from crewai.rag.embeddings.providers.google.types import GenerativeAiProviderSpec
embedding_model: GenerativeAiProviderSpec = {
"provider": "google-generativeai",
"config": {
"api_key": "your-api-key",
"model_name": "gemini-embedding-001",
"task_type": "RETRIEVAL_DOCUMENT"
}
}
```
**خيارات الإعداد:**
- `api_key` (str): مفتاح API لـ Google AI
- `model_name` (str): اسم النموذج. القيمة الافتراضية: `gemini-embedding-001`. الخيارات: `gemini-embedding-001`، `text-embedding-005`، `text-multilingual-embedding-002`
- `task_type` (str): نوع المهمة للتضمينات. القيمة الافتراضية: `RETRIEVAL_DOCUMENT`. الخيارات: `RETRIEVAL_DOCUMENT`، `RETRIEVAL_QUERY`
**متغيرات البيئة:**
- `GOOGLE_API_KEY` أو `GEMINI_API_KEY` أو `EMBEDDINGS_GOOGLE_API_KEY`: `api_key`
- `EMBEDDINGS_GOOGLE_GENERATIVE_AI_MODEL_NAME`: `model_name`
- `EMBEDDINGS_GOOGLE_GENERATIVE_AI_TASK_TYPE`: `task_type`
</Accordion>
<Accordion title="Google Vertex AI">
```python main.py
from crewai.rag.embeddings.providers.google.types import VertexAIProviderSpec
embedding_model: VertexAIProviderSpec = {
"provider": "google-vertex",
"config": {
"model_name": "text-embedding-004",
"project_id": "your-project-id",
"region": "us-central1",
"api_key": "your-api-key"
}
}
```
**خيارات الإعداد:**
- `model_name` (str): اسم النموذج. القيمة الافتراضية: `textembedding-gecko`. الخيارات: `text-embedding-004`، `textembedding-gecko`، `textembedding-gecko-multilingual`
- `project_id` (str): معرّف مشروع Google Cloud. القيمة الافتراضية: `cloud-large-language-models`
- `region` (str): منطقة Google Cloud. القيمة الافتراضية: `us-central1`
- `api_key` (str): مفتاح API للمصادقة
**متغيرات البيئة:**
- `GOOGLE_APPLICATION_CREDENTIALS`: مسار ملف JSON لحساب الخدمة
- `GOOGLE_CLOUD_PROJECT` أو `EMBEDDINGS_GOOGLE_VERTEX_PROJECT_ID`: `project_id`
- `EMBEDDINGS_GOOGLE_VERTEX_MODEL_NAME`: `model_name`
- `EMBEDDINGS_GOOGLE_VERTEX_REGION`: `region`
- `EMBEDDINGS_GOOGLE_VERTEX_API_KEY`: `api_key`
</Accordion>
<Accordion title="Jina AI">
```python main.py
from crewai.rag.embeddings.providers.jina.types import JinaProviderSpec
embedding_model: JinaProviderSpec = {
"provider": "jina",
"config": {
"api_key": "your-api-key",
"model_name": "jina-embeddings-v3"
}
}
```
**خيارات الإعداد:**
- `api_key` (str): مفتاح API لـ Jina AI
- `model_name` (str): اسم النموذج. القيمة الافتراضية: `jina-embeddings-v2-base-en`. الخيارات: `jina-embeddings-v3`، `jina-embeddings-v2-base-en`، `jina-embeddings-v2-small-en`
**متغيرات البيئة:**
- `JINA_API_KEY` أو `EMBEDDINGS_JINA_API_KEY`: `api_key`
- `EMBEDDINGS_JINA_MODEL_NAME`: `model_name`
</Accordion>
<Accordion title="HuggingFace">
```python main.py
from crewai.rag.embeddings.providers.huggingface.types import HuggingFaceProviderSpec
embedding_model: HuggingFaceProviderSpec = {
"provider": "huggingface",
"config": {
"url": "https://api-inference.huggingface.co/models/sentence-transformers/all-MiniLM-L6-v2"
}
}
```
**خيارات الإعداد:**
- `url` (str): عنوان URL الكامل لنقطة نهاية API الاستدلالي لـ HuggingFace
**متغيرات البيئة:**
- `HUGGINGFACE_URL` أو `EMBEDDINGS_HUGGINGFACE_URL`: `url`
</Accordion>
<Accordion title="Instructor">
```python main.py
from crewai.rag.embeddings.providers.instructor.types import InstructorProviderSpec
embedding_model: InstructorProviderSpec = {
"provider": "instructor",
"config": {
"model_name": "hkunlp/instructor-xl",
"device": "cuda",
"instruction": "Represent the document"
}
}
```
**خيارات الإعداد:**
- `model_name` (str): معرّف نموذج HuggingFace. القيمة الافتراضية: `hkunlp/instructor-base`. الخيارات: `hkunlp/instructor-xl`، `hkunlp/instructor-large`، `hkunlp/instructor-base`
- `device` (str): الجهاز للتشغيل. القيمة الافتراضية: `cpu`. الخيارات: `cpu`، `cuda`، `mps`
- `instruction` (str): بادئة التعليمات للتضمينات
**متغيرات البيئة:**
- `EMBEDDINGS_INSTRUCTOR_MODEL_NAME`: `model_name`
- `EMBEDDINGS_INSTRUCTOR_DEVICE`: `device`
- `EMBEDDINGS_INSTRUCTOR_INSTRUCTION`: `instruction`
</Accordion>
<Accordion title="Sentence Transformer">
```python main.py
from crewai.rag.embeddings.providers.sentence_transformer.types import SentenceTransformerProviderSpec
embedding_model: SentenceTransformerProviderSpec = {
"provider": "sentence-transformer",
"config": {
"model_name": "all-mpnet-base-v2",
"device": "cuda",
"normalize_embeddings": True
}
}
```
**خيارات الإعداد:**
- `model_name` (str): اسم نموذج Sentence Transformers. القيمة الافتراضية: `all-MiniLM-L6-v2`. الخيارات: `all-mpnet-base-v2`، `all-MiniLM-L6-v2`، `paraphrase-multilingual-MiniLM-L12-v2`
- `device` (str): الجهاز للتشغيل. القيمة الافتراضية: `cpu`. الخيارات: `cpu`، `cuda`، `mps`
- `normalize_embeddings` (bool): ما إذا كان يتم تطبيع التضمينات. القيمة الافتراضية: `False`
**متغيرات البيئة:**
- `EMBEDDINGS_SENTENCE_TRANSFORMER_MODEL_NAME`: `model_name`
- `EMBEDDINGS_SENTENCE_TRANSFORMER_DEVICE`: `device`
- `EMBEDDINGS_SENTENCE_TRANSFORMER_NORMALIZE_EMBEDDINGS`: `normalize_embeddings`
</Accordion>
<Accordion title="ONNX">
```python main.py
from crewai.rag.embeddings.providers.onnx.types import ONNXProviderSpec
embedding_model: ONNXProviderSpec = {
"provider": "onnx",
"config": {
"preferred_providers": ["CUDAExecutionProvider", "CPUExecutionProvider"]
}
}
```
**خيارات الإعداد:**
- `preferred_providers` (list[str]): قائمة مزودي تنفيذ ONNX حسب ترتيب الأفضلية
**متغيرات البيئة:**
- `EMBEDDINGS_ONNX_PREFERRED_PROVIDERS`: `preferred_providers` (قائمة مفصولة بفواصل)
</Accordion>
<Accordion title="OpenCLIP">
```python main.py
from crewai.rag.embeddings.providers.openclip.types import OpenCLIPProviderSpec
embedding_model: OpenCLIPProviderSpec = {
"provider": "openclip",
"config": {
"model_name": "ViT-B-32",
"checkpoint": "laion2b_s34b_b79k",
"device": "cuda"
}
}
```
**خيارات الإعداد:**
- `model_name` (str): بنية نموذج OpenCLIP. القيمة الافتراضية: `ViT-B-32`. الخيارات: `ViT-B-32`، `ViT-B-16`، `ViT-L-14`
- `checkpoint` (str): اسم نقطة التحقق المُدرّبة مسبقاً. القيمة الافتراضية: `laion2b_s34b_b79k`. الخيارات: `laion2b_s34b_b79k`، `laion400m_e32`، `openai`
- `device` (str): الجهاز للتشغيل. القيمة الافتراضية: `cpu`. الخيارات: `cpu`، `cuda`
**متغيرات البيئة:**
- `EMBEDDINGS_OPENCLIP_MODEL_NAME`: `model_name`
- `EMBEDDINGS_OPENCLIP_CHECKPOINT`: `checkpoint`
- `EMBEDDINGS_OPENCLIP_DEVICE`: `device`
</Accordion>
<Accordion title="Text2Vec">
```python main.py
from crewai.rag.embeddings.providers.text2vec.types import Text2VecProviderSpec
embedding_model: Text2VecProviderSpec = {
"provider": "text2vec",
"config": {
"model_name": "shibing624/text2vec-base-multilingual"
}
}
```
**خيارات الإعداد:**
- `model_name` (str): اسم نموذج Text2Vec من HuggingFace. القيمة الافتراضية: `shibing624/text2vec-base-chinese`. الخيارات: `shibing624/text2vec-base-multilingual`، `shibing624/text2vec-base-chinese`
**متغيرات البيئة:**
- `EMBEDDINGS_TEXT2VEC_MODEL_NAME`: `model_name`
</Accordion>
<Accordion title="Roboflow">
```python main.py
from crewai.rag.embeddings.providers.roboflow.types import RoboflowProviderSpec
embedding_model: RoboflowProviderSpec = {
"provider": "roboflow",
"config": {
"api_key": "your-api-key",
"api_url": "https://infer.roboflow.com"
}
}
```
**خيارات الإعداد:**
- `api_key` (str): مفتاح API لـ Roboflow. القيمة الافتراضية: `""` (سلسلة فارغة)
- `api_url` (str): عنوان URL لـ API الاستدلالي لـ Roboflow. القيمة الافتراضية: `https://infer.roboflow.com`
**متغيرات البيئة:**
- `ROBOFLOW_API_KEY` أو `EMBEDDINGS_ROBOFLOW_API_KEY`: `api_key`
- `ROBOFLOW_API_URL` أو `EMBEDDINGS_ROBOFLOW_API_URL`: `api_url`
</Accordion>
<Accordion title="WatsonX (IBM)">
```python main.py
from crewai.rag.embeddings.providers.ibm.types import WatsonXProviderSpec
embedding_model: WatsonXProviderSpec = {
"provider": "watsonx",
"config": {
"model_id": "ibm/slate-125m-english-rtrvr",
"url": "https://us-south.ml.cloud.ibm.com",
"api_key": "your-api-key",
"project_id": "your-project-id",
"batch_size": 100,
"concurrency_limit": 10,
"persistent_connection": True
}
}
```
**خيارات الإعداد:**
- `model_id` (str): معرّف نموذج WatsonX
- `url` (str): نقطة نهاية API لـ WatsonX
- `api_key` (str): مفتاح API لـ IBM Cloud
- `project_id` (str): معرّف مشروع WatsonX
- `space_id` (str): معرّف مساحة WatsonX (بديل لـ project_id)
- `batch_size` (int): حجم الدفعة للتضمينات. القيمة الافتراضية: `100`
- `concurrency_limit` (int): الحد الأقصى للطلبات المتزامنة. القيمة الافتراضية: `10`
- `persistent_connection` (bool): استخدام اتصالات مستمرة. القيمة الافتراضية: `True`
- بالإضافة إلى أكثر من 20 خيار مصادقة وإعداد إضافي
**متغيرات البيئة:**
- `WATSONX_API_KEY` أو `EMBEDDINGS_WATSONX_API_KEY`: `api_key`
- `WATSONX_URL` أو `EMBEDDINGS_WATSONX_URL`: `url`
- `WATSONX_PROJECT_ID` أو `EMBEDDINGS_WATSONX_PROJECT_ID`: `project_id`
- `EMBEDDINGS_WATSONX_MODEL_ID`: `model_id`
- `EMBEDDINGS_WATSONX_SPACE_ID`: `space_id`
- `EMBEDDINGS_WATSONX_BATCH_SIZE`: `batch_size`
- `EMBEDDINGS_WATSONX_CONCURRENCY_LIMIT`: `concurrency_limit`
- `EMBEDDINGS_WATSONX_PERSISTENT_CONNECTION`: `persistent_connection`
</Accordion>
<Accordion title="مخصص">
```python main.py
from crewai.rag.core.base_embeddings_callable import EmbeddingFunction
from crewai.rag.embeddings.providers.custom.types import CustomProviderSpec
class MyEmbeddingFunction(EmbeddingFunction):
def __call__(self, input):
# Your custom embedding logic
return embeddings
embedding_model: CustomProviderSpec = {
"provider": "custom",
"config": {
"embedding_callable": MyEmbeddingFunction
}
}
```
**خيارات الإعداد:**
- `embedding_callable` (type[EmbeddingFunction]): فئة دالة تضمين مخصصة
**ملاحظة:** يجب أن تنفّذ دوال التضمين المخصصة بروتوكول `EmbeddingFunction` المحدد في `crewai.rag.core.base_embeddings_callable`. يجب أن تقبل طريقة `__call__` بيانات الإدخال وتعيد التضمينات كقائمة من مصفوفات numpy (أو تنسيق متوافق سيتم تطبيعه). يتم تطبيع التضمينات المُعادة والتحقق منها تلقائياً.
</Accordion>
</AccordionGroup>
### ملاحظات
- جميع حقول الإعداد اختيارية ما لم يُذكر أنها **مطلوبة**
- يمكن عادة تقديم مفاتيح API عبر متغيرات البيئة بدلاً من الإعداد
- تُعرض القيم الافتراضية حيثما ينطبق ذلك
## الخلاصة
توفر `RagTool` طريقة قوية لإنشاء واستعلام قواعد المعرفة من مصادر بيانات متنوعة. من خلال الاستفادة من التوليد المعزز بالاسترجاع، تمكّن الوكلاء من الوصول إلى المعلومات ذات الصلة واسترجاعها بكفاءة، مما يعزز قدرتهم على تقديم استجابات دقيقة ومناسبة للسياق.

View File

@@ -0,0 +1,50 @@
---
title: أداة الرؤية
description: أداة `VisionTool` مصممة لاستخراج النص من الصور.
icon: eye
mode: "wide"
---
# `VisionTool`
## الوصف
تُستخدم هذه الأداة لاستخراج النص من الصور. عند تمريرها إلى الوكيل، ستستخرج النص من الصورة ثم تستخدمه لتوليد استجابة أو تقرير أو أي مخرج آخر.
يجب تمرير عنوان URL أو مسار الصورة إلى الوكيل.
## التثبيت
ثبّت حزمة crewai_tools
```shell
pip install 'crewai[tools]'
```
## الاستخدام
لاستخدام VisionTool، يجب تعيين مفتاح API الخاص بـ OpenAI في متغير البيئة `OPENAI_API_KEY`.
```python Code
from crewai_tools import VisionTool
vision_tool = VisionTool()
@agent
def researcher(self) -> Agent:
'''
This agent uses the VisionTool to extract text from images.
'''
return Agent(
config=self.agents_config["researcher"],
allow_delegation=False,
tools=[vision_tool]
)
```
## المعاملات
تتطلب VisionTool المعاملات التالية:
| المعامل | النوع | الوصف |
| :----------------- | :------- | :------------------------------------------------------------------------------- |
| **image_path_url** | `string` | **إلزامي**. مسار ملف الصورة المراد استخراج النص منها. |

View File

@@ -0,0 +1,99 @@
---
title: Apify Actors
description: "تتيح لك `ApifyActorsTool` استدعاء Apify Actors لتوفير إمكانيات تجريف الويب والزحف واستخراج البيانات وأتمتة الويب لسير عمل CrewAI."
icon: "); -webkit-mask-image: url('https://upload.wikimedia.org/wikipedia/commons/a/ae/Apify.svg');/*"
mode: "wide"
---
# `ApifyActorsTool`
دمج [Apify Actors](https://apify.com/actors) في سير عمل CrewAI الخاص بك.
## الوصف
تربط `ApifyActorsTool` بين [Apify Actors](https://apify.com/actors)، وهي برامج سحابية لتجريف الويب والأتمتة، وسير عمل CrewAI الخاص بك.
استخدم أياً من أكثر من 4,000 Actor على [متجر Apify](https://apify.com/store) لحالات استخدام مثل استخراج البيانات من وسائل التواصل الاجتماعي ومحركات البحث والخرائط الإلكترونية ومواقع التجارة الإلكترونية وبوابات السفر أو المواقع العامة.
للتفاصيل، راجع [تكامل Apify CrewAI](https://docs.apify.com/platform/integrations/crewai) في وثائق Apify.
## خطوات البدء
<Steps>
<Step title="تثبيت التبعيات">
ثبّت `crewai[tools]` و`langchain-apify` باستخدام pip: `pip install 'crewai[tools]' langchain-apify`.
</Step>
<Step title="الحصول على رمز API لـ Apify">
سجّل في [وحدة تحكم Apify](https://console.apify.com/) واحصل على [رمز API الخاص بك](https://console.apify.com/settings/integrations).
</Step>
<Step title="إعداد البيئة">
عيّن رمز API لـ Apify كمتغير بيئة `APIFY_API_TOKEN` لتمكين وظائف الأداة.
</Step>
</Steps>
## مثال على الاستخدام
استخدم `ApifyActorsTool` يدوياً لتشغيل [RAG Web Browser Actor](https://apify.com/apify/rag-web-browser) لإجراء بحث ويب:
```python
from crewai_tools import ApifyActorsTool
# Initialize the tool with an Apify Actor
tool = ApifyActorsTool(actor_name="apify/rag-web-browser")
# Run the tool with input parameters
results = tool.run(run_input={"query": "What is CrewAI?", "maxResults": 5})
# Process the results
for result in results:
print(f"URL: {result['metadata']['url']}")
print(f"Content: {result.get('markdown', 'N/A')[:100]}...")
```
### المخرجات المتوقعة
إليك المخرجات من تشغيل الكود أعلاه:
```text
URL: https://www.example.com/crewai-intro
Content: CrewAI is a framework for building AI-powered workflows...
URL: https://docs.crewai.com/
Content: Official documentation for CrewAI...
```
تقوم `ApifyActorsTool` تلقائياً بجلب تعريف Actor ومخطط الإدخال من Apify باستخدام `actor_name` المقدم ثم تبني وصف الأداة ومخطط المعاملات. هذا يعني أنك تحتاج فقط إلى تحديد `actor_name` صالح، والأداة تتعامل مع الباقي عند استخدامها مع الوكلاء - دون الحاجة لتحديد `run_input`. إليك كيفية عمل ذلك:
```python
from crewai import Agent
from crewai_tools import ApifyActorsTool
rag_browser = ApifyActorsTool(actor_name="apify/rag-web-browser")
agent = Agent(
role="Research Analyst",
goal="Find and summarize information about specific topics",
backstory="You are an experienced researcher with attention to detail",
tools=[rag_browser],
)
```
يمكنك تشغيل Actors أخرى من [متجر Apify](https://apify.com/store) ببساطة عن طريق تغيير `actor_name` وعند الاستخدام اليدوي، ضبط `run_input` بناءً على مخطط إدخال Actor.
لمثال على الاستخدام مع الوكلاء، راجع [قالب CrewAI Actor](https://apify.com/templates/python-crewai).
## الإعداد
تتطلب `ApifyActorsTool` المدخلات التالية للعمل:
- **`actor_name`**
معرّف Apify Actor المراد تشغيله، مثل `"apify/rag-web-browser"`. تصفح جميع Actors على [متجر Apify](https://apify.com/store).
- **`run_input`**
قاموس من معاملات الإدخال لـ Actor عند تشغيل الأداة يدوياً.
- على سبيل المثال، لـ Actor `apify/rag-web-browser`: `{"query": "search term", "maxResults": 5}`
- راجع [مخطط إدخال](https://apify.com/apify/rag-web-browser/input-schema) Actor لقائمة معاملات الإدخال.
## الموارد
- **[Apify](https://apify.com/)**: استكشف منصة Apify.
- **[كيفية بناء وكيل ذكاء اصطناعي على Apify](https://blog.apify.com/how-to-build-an-ai-agent/)** - دليل شامل خطوة بخطوة لإنشاء ونشر وتسويق وكلاء الذكاء الاصطناعي على منصة Apify.
- **[RAG Web Browser Actor](https://apify.com/apify/rag-web-browser)**: Actor شائع لبحث الويب لنماذج LLM.
- **[دليل تكامل CrewAI](https://docs.apify.com/platform/integrations/crewai)**: اتبع الدليل الرسمي لتكامل Apify وCrewAI.

View File

@@ -0,0 +1,88 @@
---
title: أداة Composio
description: يوفر Composio أكثر من 250 أداة جاهزة للإنتاج لوكلاء الذكاء الاصطناعي مع إدارة مصادقة مرنة.
icon: gear-code
mode: "wide"
---
# `ComposioToolSet`
## الوصف
Composio هو منصة تكامل تتيح لك ربط وكلاء الذكاء الاصطناعي بأكثر من 250 أداة. تشمل الميزات الرئيسية:
- **مصادقة على مستوى المؤسسة**: دعم مدمج لـ OAuth ومفاتيح API وJWT مع تحديث الرموز تلقائياً
- **مراقبة كاملة**: سجلات استخدام أدوات تفصيلية وطوابع تنفيذ زمنية والمزيد
## التثبيت
لدمج أدوات Composio في مشروعك، اتبع التعليمات أدناه:
```shell
pip install composio composio-crewai
pip install crewai
```
بعد اكتمال التثبيت، عيّن مفتاح API الخاص بك لـ Composio كـ `COMPOSIO_API_KEY`. احصل على مفتاح API من [هنا](https://platform.composio.dev)
## مثال
يوضح المثال التالي كيفية تهيئة الأداة وتنفيذ إجراء على GitHub:
1. تهيئة Composio مع مزود CrewAI
```python Code
from composio_crewai import ComposioProvider
from composio import Composio
from crewai import Agent, Task, Crew
composio = Composio(provider=ComposioProvider())
```
2. إنشاء جلسة Composio جديدة واسترجاع الأدوات
<CodeGroup>
```python
session = composio.create(
user_id="your-user-id",
toolkits=["gmail", "github"] # optional, default is all toolkits
)
tools = session.tools()
```
اقرأ المزيد حول الجلسات وإدارة المستخدمين [هنا](https://docs.composio.dev/docs/configuring-sessions)
</CodeGroup>
3. مصادقة المستخدمين يدوياً
يقوم Composio بمصادقة المستخدمين تلقائياً أثناء جلسة دردشة الوكيل. ومع ذلك، يمكنك أيضاً مصادقة المستخدم يدوياً عبر استدعاء طريقة `authorize`.
```python Code
connection_request = session.authorize("github")
print(f"Open this URL to authenticate: {connection_request.redirect_url}")
```
4. تعريف الوكيل
```python Code
crewai_agent = Agent(
role="GitHub Agent",
goal="You take action on GitHub using GitHub APIs",
backstory="You are AI agent that is responsible for taking actions on GitHub on behalf of users using GitHub APIs",
verbose=True,
tools=tools,
llm= # pass an llm
)
```
5. تنفيذ المهمة
```python Code
task = Task(
description="Star a repo composiohq/composio on GitHub",
agent=crewai_agent,
expected_output="Status of the operation",
)
crew = Crew(agents=[crewai_agent], tasks=[task])
crew.kickoff()
```
* يمكن العثور على قائمة أكثر تفصيلاً من الأدوات [هنا](https://docs.composio.dev/toolkits)

View File

@@ -0,0 +1,127 @@
---
title: أداة MultiOn
description: تمكّن `MultiOnTool` وكلاء CrewAI من التنقل والتفاعل مع الويب من خلال تعليمات اللغة الطبيعية.
icon: globe
mode: "wide"
---
## نظرة عامة
صُممت `MultiOnTool` لتغليف قدرات تصفح الويب الخاصة بـ [MultiOn](https://docs.multion.ai/welcome)، مما يمكّن وكلاء CrewAI من التحكم في متصفحات الويب باستخدام تعليمات اللغة الطبيعية. تسهّل هذه الأداة تصفح الويب بسلاسة، مما يجعلها أصلاً أساسياً للمشاريع التي تتطلب تفاعلاً ديناميكياً مع بيانات الويب وأتمتة المهام المستندة إلى الويب.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت حزمة MultiOn:
```shell
uv add multion
```
ستحتاج أيضاً إلى تثبيت إضافة متصفح MultiOn وتفعيل استخدام API.
## خطوات البدء
لاستخدام `MultiOnTool` بفعالية، اتبع الخطوات التالية:
1. **تثبيت CrewAI**: تأكد من تثبيت حزمة `crewai[tools]` في بيئة Python.
2. **تثبيت واستخدام MultiOn**: اتبع [وثائق MultiOn](https://docs.multion.ai/learn/browser-extension) لتثبيت إضافة متصفح MultiOn.
3. **تفعيل استخدام API**: انقر على إضافة MultiOn في مجلد الإضافات في متصفحك (وليس أيقونة MultiOn العائمة على صفحة الويب) لفتح إعدادات الإضافة. انقر على زر تفعيل API لتمكينه.
## مثال
يوضح المثال التالي كيفية تهيئة الأداة وتنفيذ مهمة تصفح ويب:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import MultiOnTool
# Initialize the tool
multion_tool = MultiOnTool(api_key="YOUR_MULTION_API_KEY", local=False)
# Define an agent that uses the tool
browser_agent = Agent(
role="Browser Agent",
goal="Control web browsers using natural language",
backstory="An expert browsing agent.",
tools=[multion_tool],
verbose=True,
)
# Example task to search and summarize news
browse_task = Task(
description="Summarize the top 3 trending AI News headlines",
expected_output="A summary of the top 3 trending AI News headlines",
agent=browser_agent,
)
# Create and run the crew
crew = Crew(agents=[browser_agent], tasks=[browse_task])
result = crew.kickoff()
```
## المعاملات
تقبل `MultiOnTool` المعاملات التالية أثناء التهيئة:
- **api_key**: اختياري. يحدد مفتاح API لـ MultiOn. إذا لم يُقدَّم، سيبحث عن متغير البيئة `MULTION_API_KEY`.
- **local**: اختياري. عيّنه إلى `True` لتشغيل الوكيل محلياً على متصفحك. تأكد من تثبيت إضافة متصفح MultiOn وتفعيل API. القيمة الافتراضية `False`.
- **max_steps**: اختياري. يحدد الحد الأقصى لعدد الخطوات التي يمكن لوكيل MultiOn اتخاذها لأمر ما. القيمة الافتراضية `3`.
## الاستخدام
عند استخدام `MultiOnTool`، سيقدم الوكيل تعليمات بلغة طبيعية تترجمها الأداة إلى إجراءات تصفح ويب. تعيد الأداة نتائج جلسة التصفح مع الحالة.
```python Code
# Example of using the tool with an agent
browser_agent = Agent(
role="Web Browser Agent",
goal="Search for and summarize information from the web",
backstory="An expert at finding and extracting information from websites.",
tools=[multion_tool],
verbose=True,
)
# Create a task for the agent
search_task = Task(
description="Search for the latest AI news on TechCrunch and summarize the top 3 headlines",
expected_output="A summary of the top 3 AI news headlines from TechCrunch",
agent=browser_agent,
)
# Run the task
crew = Crew(agents=[browser_agent], tasks=[search_task])
result = crew.kickoff()
```
إذا كانت الحالة المُعادة هي `CONTINUE`، يجب توجيه الوكيل لإعادة إصدار نفس التعليمات لمتابعة التنفيذ.
## تفاصيل التنفيذ
`MultiOnTool` منفذة كفئة فرعية من `BaseTool` في CrewAI. تغلف عميل MultiOn لتوفير قدرات تصفح الويب:
```python Code
class MultiOnTool(BaseTool):
"""Tool to wrap MultiOn Browse Capabilities."""
name: str = "Multion Browse Tool"
description: str = """Multion gives the ability for LLMs to control web browsers using natural language instructions.
If the status is 'CONTINUE', reissue the same instruction to continue execution
"""
# Implementation details...
def _run(self, cmd: str, *args: Any, **kwargs: Any) -> str:
"""
Run the Multion client with the given command.
Args:
cmd (str): The detailed and specific natural language instruction for web browsing
*args (Any): Additional arguments to pass to the Multion client
**kwargs (Any): Additional keyword arguments to pass to the Multion client
"""
# Implementation details...
```
## الخلاصة
توفر `MultiOnTool` طريقة قوية لدمج قدرات تصفح الويب في وكلاء CrewAI. من خلال تمكين الوكلاء من التفاعل مع المواقع عبر تعليمات اللغة الطبيعية، تفتح مجموعة واسعة من الإمكانيات للمهام المستندة إلى الويب، من جمع البيانات والبحث إلى التفاعلات الآلية مع خدمات الويب.

View File

@@ -0,0 +1,60 @@
---
title: "نظرة عامة"
description: "أتمتة سير العمل والتكامل مع المنصات والخدمات الخارجية"
icon: "face-smile"
mode: "wide"
---
تمكّن هذه الأدوات وكلاءك من أتمتة سير العمل والتكامل مع المنصات الخارجية والاتصال بخدمات الطرف الثالث المتنوعة لتعزيز الوظائف.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة Apify Actor" icon="spider" href="/ar/tools/automation/apifyactorstool">
تشغيل Apify Actors لمهام تجريف الويب والأتمتة.
</Card>
<Card title="أداة Composio" icon="puzzle-piece" href="/ar/tools/automation/composiotool">
التكامل مع مئات التطبيقات والخدمات من خلال Composio.
</Card>
<Card title="أداة MultiOn" icon="window-restore" href="/ar/tools/automation/multiontool">
أتمتة تفاعلات المتصفح وسير العمل المستند إلى الويب.
</Card>
<Card title="محول إجراءات Zapier" icon="bolt" href="/ar/tools/automation/zapieractionstool">
عرض إجراءات Zapier كأدوات CrewAI للأتمتة عبر آلاف التطبيقات.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **أتمتة سير العمل**: أتمتة المهام والعمليات المتكررة
- **تكامل API**: الاتصال بواجهات برمجة التطبيقات والخدمات الخارجية
- **مزامنة البيانات**: مزامنة البيانات بين منصات مختلفة
- **تنسيق العمليات**: تنسيق سير العمل المعقد متعدد الخطوات
- **خدمات الطرف الثالث**: الاستفادة من الأدوات والمنصات الخارجية
```python
from crewai_tools import ApifyActorTool, ComposioTool, MultiOnTool
# Create automation tools
apify_automation = ApifyActorTool()
platform_integration = ComposioTool()
browser_automation = MultiOnTool()
# Add to your agent
agent = Agent(
role="Automation Specialist",
tools=[apify_automation, platform_integration, browser_automation],
goal="Automate workflows and integrate systems"
)
```
## **فوائد التكامل**
- **الكفاءة**: تقليل العمل اليدوي من خلال الأتمتة
- **قابلية التوسع**: التعامل مع أعباء العمل المتزايدة تلقائياً
- **الموثوقية**: تنفيذ متسق لسير العمل
- **الاتصال**: ربط الأنظمة والمنصات المختلفة
- **الإنتاجية**: التركيز على المهام ذات القيمة العالية بينما تتولى الأتمتة العمل الروتيني

View File

@@ -0,0 +1,59 @@
---
title: أداة إجراءات Zapier
description: يعرض `ZapierActionsAdapter` إجراءات Zapier كأدوات CrewAI للأتمتة.
icon: bolt
mode: "wide"
---
# `ZapierActionsAdapter`
## الوصف
استخدم محول Zapier لسرد واستدعاء إجراءات Zapier كأدوات CrewAI. يمكّن هذا الوكلاء من تشغيل عمليات الأتمتة عبر آلاف التطبيقات.
## التثبيت
هذا المحول مضمّن مع `crewai-tools`. لا يلزم تثبيت إضافي.
## متغيرات البيئة
- `ZAPIER_API_KEY` (مطلوب): مفتاح API لـ Zapier. احصل على واحد من لوحة تحكم Zapier Actions على https://actions.zapier.com/ (أنشئ حساباً، ثم ولّد مفتاح API). يمكنك أيضاً تمرير `zapier_api_key` مباشرة عند إنشاء المحول.
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools.adapters.zapier_adapter import ZapierActionsAdapter
adapter = ZapierActionsAdapter(api_key="your_zapier_api_key")
tools = adapter.tools()
agent = Agent(
role="Automator",
goal="Execute Zapier actions",
backstory="Automation specialist",
tools=tools,
verbose=True,
)
task = Task(
description="Create a new Google Sheet and add a row using Zapier actions",
expected_output="Confirmation with created resource IDs",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```
## ملاحظات وحدود
- يسرد المحول الإجراءات المتاحة لمفتاحك وينشئ أغلفة `BaseTool` ديناميكياً.
- تعامل مع الحقول المطلوبة الخاصة بالإجراء في تعليمات المهمة أو استدعاء الأداة.
- تعتمد حدود المعدل على خطة Zapier الخاصة بك؛ راجع وثائق Zapier Actions.
## ملاحظات
- يجلب المحول الإجراءات المتاحة وينشئ أغلفة `BaseTool` ديناميكياً.

View File

@@ -0,0 +1,166 @@
---
title: 'مسترجع قاعدة معرفة Bedrock'
description: 'استرجاع المعلومات من قواعد معرفة Amazon Bedrock باستخدام استعلامات اللغة الطبيعية'
icon: aws
mode: "wide"
---
# `BedrockKBRetrieverTool`
تمكّن `BedrockKBRetrieverTool` وكلاء CrewAI من استرجاع المعلومات من قواعد معرفة Amazon Bedrock باستخدام استعلامات اللغة الطبيعية.
## التثبيت
```bash
uv pip install 'crewai[tools]'
```
## المتطلبات
- بيانات اعتماد AWS مُعدّة (إما من خلال متغيرات البيئة أو AWS CLI)
- حزمتا `boto3` و`python-dotenv`
- الوصول إلى قاعدة معرفة Amazon Bedrock
## الاستخدام
إليك كيفية استخدام الأداة مع وكيل CrewAI:
```python {2, 4-17}
from crewai import Agent, Task, Crew
from crewai_tools.aws.bedrock.knowledge_base.retriever_tool import BedrockKBRetrieverTool
# Initialize the tool
kb_tool = BedrockKBRetrieverTool(
knowledge_base_id="your-kb-id",
number_of_results=5
)
# Create a CrewAI agent that uses the tool
researcher = Agent(
role='Knowledge Base Researcher',
goal='Find information about company policies',
backstory='I am a researcher specialized in retrieving and analyzing company documentation.',
tools=[kb_tool],
verbose=True
)
# Create a task for the agent
research_task = Task(
description="Find our company's remote work policy and summarize the key points.",
agent=researcher
)
# Create a crew with the agent
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=2
)
# Run the crew
result = crew.kickoff()
print(result)
```
## معاملات الأداة
| المعامل | النوع | مطلوب | القيمة الافتراضية | الوصف |
|:---------|:-----|:---------|:---------|:-------------|
| **knowledge_base_id** | `str` | نعم | None | المعرّف الفريد لقاعدة المعرفة (0-10 أحرف أبجدية رقمية) |
| **number_of_results** | `int` | لا | 5 | الحد الأقصى لعدد النتائج المُعادة |
| **retrieval_configuration** | `dict` | لا | None | إعدادات مخصصة لاستعلام قاعدة المعرفة |
| **guardrail_configuration** | `dict` | لا | None | إعدادات تصفية المحتوى |
| **next_token** | `str` | لا | None | رمز لتصفح الصفحات |
## متغيرات البيئة
```bash
BEDROCK_KB_ID=your-knowledge-base-id # Alternative to passing knowledge_base_id
AWS_REGION=your-aws-region # Defaults to us-east-1
AWS_ACCESS_KEY_ID=your-access-key # Required for AWS authentication
AWS_SECRET_ACCESS_KEY=your-secret-key # Required for AWS authentication
```
## تنسيق الاستجابة
تعيد الأداة النتائج بتنسيق JSON:
```json
{
"results": [
{
"content": "Retrieved text content",
"content_type": "text",
"source_type": "S3",
"source_uri": "s3://bucket/document.pdf",
"score": 0.95,
"metadata": {
"additional": "metadata"
}
}
],
"nextToken": "pagination-token",
"guardrailAction": "NONE"
}
```
## الاستخدام المتقدم
### إعداد استرجاع مخصص
```python
kb_tool = BedrockKBRetrieverTool(
knowledge_base_id="your-kb-id",
retrieval_configuration={
"vectorSearchConfiguration": {
"numberOfResults": 10,
"overrideSearchType": "HYBRID"
}
}
)
policy_expert = Agent(
role='Policy Expert',
goal='Analyze company policies in detail',
backstory='I am an expert in corporate policy analysis with deep knowledge of regulatory requirements.',
tools=[kb_tool]
)
```
## مصادر البيانات المدعومة
- Amazon S3
- Confluence
- Salesforce
- SharePoint
- صفحات الويب
- مواقع مستندات مخصصة
- Amazon Kendra
- قواعد بيانات SQL
## حالات الاستخدام
### تكامل المعرفة المؤسسية
- تمكين وكلاء CrewAI من الوصول إلى المعرفة الخاصة بمؤسستك دون كشف البيانات الحساسة
- السماح للوكلاء باتخاذ قرارات بناءً على سياسات وإجراءات ووثائق شركتك المحددة
- إنشاء وكلاء يمكنهم الإجابة على الأسئلة بناءً على وثائقك الداخلية مع الحفاظ على أمان البيانات
### المعرفة المتخصصة بالمجال
- ربط وكلاء CrewAI بقواعد معرفة متخصصة بالمجال (قانونية، طبية، تقنية) دون إعادة تدريب النماذج
- الاستفادة من مستودعات المعرفة الموجودة المُدارة بالفعل في بيئة AWS
- الجمع بين تفكير CrewAI والمعلومات المتخصصة من قواعد معرفتك
### اتخاذ القرارات المبنية على البيانات
- تأسيس استجابات وكلاء CrewAI على بيانات شركتك الفعلية بدلاً من المعرفة العامة
- ضمان تقديم الوكلاء لتوصيات بناءً على سياق أعمالك ووثائقك المحددة
- تقليل التوهمات من خلال استرجاع معلومات واقعية من قواعد معرفتك
### وصول معلوماتي قابل للتوسع
- الوصول إلى تيرابايت من المعرفة المؤسسية دون تضمينها كلها في نماذجك
- الاستعلام الديناميكي عن المعلومات ذات الصلة فقط اللازمة لمهام محددة
- الاستفادة من البنية التحتية القابلة للتوسع من AWS للتعامل مع قواعد معرفة كبيرة بكفاءة
### الامتثال والحوكمة
- ضمان تقديم وكلاء CrewAI لاستجابات تتوافق مع وثائق شركتك المعتمدة
- إنشاء مسارات قابلة للتدقيق لمصادر المعلومات المستخدمة من قبل وكلائك
- الحفاظ على التحكم في مصادر المعلومات التي يمكن لوكلائك الوصول إليها

View File

@@ -0,0 +1,51 @@
---
title: "نظرة عامة"
description: "التفاعل مع الخدمات السحابية وأنظمة التخزين ومنصات الذكاء الاصطناعي السحابية"
icon: "face-smile"
mode: "wide"
---
تمكّن هذه الأدوات وكلاءك من التفاعل مع الخدمات السحابية والوصول إلى التخزين السحابي والاستفادة من منصات الذكاء الاصطناعي السحابية لعمليات قابلة للتوسع.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة قراءة S3" icon="cloud" href="/ar/tools/cloud-storage/s3readertool">
قراءة الملفات والبيانات من حاويات Amazon S3.
</Card>
<Card title="أداة كتابة S3" icon="cloud-arrow-up" href="/ar/tools/cloud-storage/s3writertool">
كتابة وتحميل الملفات إلى تخزين Amazon S3.
</Card>
<Card title="استدعاء وكيل Bedrock" icon="aws" href="/ar/tools/integration/bedrockinvokeagenttool">
استدعاء وكلاء Amazon Bedrock للمهام المدعومة بالذكاء الاصطناعي.
</Card>
<Card title="مسترجع قاعدة معرفة Bedrock" icon="database" href="/ar/tools/cloud-storage/bedrockkbretriever">
استرجاع المعلومات من قواعد معرفة Amazon Bedrock.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **تخزين الملفات**: تخزين واسترجاع الملفات من أنظمة التخزين السحابية
- **نسخ البيانات احتياطياً**: نسخ البيانات المهمة احتياطياً إلى التخزين السحابي
- **خدمات الذكاء الاصطناعي**: الوصول إلى نماذج وخدمات الذكاء الاصطناعي السحابية
- **استرجاع المعرفة**: الاستعلام عن قواعد المعرفة المستضافة سحابياً
- **عمليات قابلة للتوسع**: الاستفادة من البنية التحتية السحابية للمعالجة
```python
from crewai_tools import S3ReaderTool, S3WriterTool, BedrockInvokeAgentTool
# Create cloud tools
s3_reader = S3ReaderTool()
s3_writer = S3WriterTool()
bedrock_agent = BedrockInvokeAgentTool()
# Add to your agent
agent = Agent(
role="Cloud Operations Specialist",
tools=[s3_reader, s3_writer, bedrock_agent],
goal="Manage cloud resources and AI services"
)

View File

@@ -0,0 +1,145 @@
---
title: أداة قراءة S3
description: تمكّن `S3ReaderTool` وكلاء CrewAI من قراءة الملفات من حاويات Amazon S3.
icon: aws
mode: "wide"
---
# `S3ReaderTool`
## الوصف
صُممت `S3ReaderTool` لقراءة الملفات من حاويات Amazon S3. تتيح هذه الأداة لوكلاء CrewAI الوصول إلى المحتوى المخزن في S3 واسترجاعه، مما يجعلها مثالية لسير العمل الذي يتطلب قراءة البيانات أو ملفات الإعداد أو أي محتوى آخر مخزن في تخزين AWS S3.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت التبعيات المطلوبة:
```shell
uv add boto3
```
## خطوات البدء
لاستخدام `S3ReaderTool` بفعالية، اتبع الخطوات التالية:
1. **تثبيت التبعيات**: ثبّت الحزم المطلوبة باستخدام الأمر أعلاه.
2. **إعداد بيانات اعتماد AWS**: عيّن بيانات اعتماد AWS كمتغيرات بيئة.
3. **تهيئة الأداة**: أنشئ مثيلاً من الأداة.
4. **تحديد مسار S3**: قدّم مسار S3 للملف المراد قراءته.
## مثال
يوضح المثال التالي كيفية استخدام `S3ReaderTool` لقراءة ملف من حاوية S3:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools.aws.s3 import S3ReaderTool
# Initialize the tool
s3_reader_tool = S3ReaderTool()
# Define an agent that uses the tool
file_reader_agent = Agent(
role="File Reader",
goal="Read files from S3 buckets",
backstory="An expert in retrieving and processing files from cloud storage.",
tools=[s3_reader_tool],
verbose=True,
)
# Example task to read a configuration file
read_task = Task(
description="Read the configuration file from {my_bucket} and summarize its contents.",
expected_output="A summary of the configuration file contents.",
agent=file_reader_agent,
)
# Create and run the crew
crew = Crew(agents=[file_reader_agent], tasks=[read_task])
result = crew.kickoff(inputs={"my_bucket": "s3://my-bucket/config/app-config.json"})
```
## المعاملات
تقبل `S3ReaderTool` المعامل التالي عند استخدامها من قبل وكيل:
- **file_path**: مطلوب. مسار ملف S3 بتنسيق `s3://bucket-name/file-name`.
## بيانات اعتماد AWS
تتطلب الأداة بيانات اعتماد AWS للوصول إلى حاويات S3. يمكنك إعداد هذه البيانات باستخدام متغيرات البيئة:
- **CREW_AWS_REGION**: منطقة AWS حيث تقع حاوية S3. القيمة الافتراضية `us-east-1`.
- **CREW_AWS_ACCESS_KEY_ID**: معرّف مفتاح الوصول لـ AWS.
- **CREW_AWS_SEC_ACCESS_KEY**: مفتاح الوصول السري لـ AWS.
## الاستخدام
عند استخدام `S3ReaderTool` مع وكيل، سيحتاج الوكيل لتقديم مسار ملف S3:
```python Code
# Example of using the tool with an agent
file_reader_agent = Agent(
role="File Reader",
goal="Read files from S3 buckets",
backstory="An expert in retrieving and processing files from cloud storage.",
tools=[s3_reader_tool],
verbose=True,
)
# Create a task for the agent to read a specific file
read_config_task = Task(
description="Read the application configuration file from {my_bucket} and extract the database connection settings.",
expected_output="The database connection settings from the configuration file.",
agent=file_reader_agent,
)
# Run the task
crew = Crew(agents=[file_reader_agent], tasks=[read_config_task])
result = crew.kickoff(inputs={"my_bucket": "s3://my-bucket/config/app-config.json"})
```
## معالجة الأخطاء
تتضمن `S3ReaderTool` معالجة أخطاء لمشكلات S3 الشائعة:
- تنسيق مسار S3 غير صالح
- ملفات مفقودة أو غير قابلة للوصول
- مشكلات الأذونات
- مشكلات بيانات اعتماد AWS
عند حدوث خطأ، ستعيد الأداة رسالة خطأ تتضمن تفاصيل حول المشكلة.
## تفاصيل التنفيذ
تستخدم `S3ReaderTool` حزمة AWS SDK لـ Python (boto3) للتفاعل مع S3:
```python Code
class S3ReaderTool(BaseTool):
name: str = "S3 Reader Tool"
description: str = "Reads a file from Amazon S3 given an S3 file path"
def _run(self, file_path: str) -> str:
try:
bucket_name, object_key = self._parse_s3_path(file_path)
s3 = boto3.client(
's3',
region_name=os.getenv('CREW_AWS_REGION', 'us-east-1'),
aws_access_key_id=os.getenv('CREW_AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('CREW_AWS_SEC_ACCESS_KEY')
)
# Read file content from S3
response = s3.get_object(Bucket=bucket_name, Key=object_key)
file_content = response['Body'].read().decode('utf-8')
return file_content
except ClientError as e:
return f"Error reading file from S3: {str(e)}"
```
## الخلاصة
توفر `S3ReaderTool` طريقة مباشرة لقراءة الملفات من حاويات Amazon S3. من خلال تمكين الوكلاء من الوصول إلى المحتوى المخزن في S3، تسهّل سير العمل الذي يتطلب وصولاً سحابياً للملفات. هذه الأداة مفيدة بشكل خاص لمعالجة البيانات وإدارة الإعدادات وأي مهمة تتضمن استرجاع المعلومات من تخزين AWS S3.

View File

@@ -0,0 +1,151 @@
---
title: أداة كتابة S3
description: تمكّن `S3WriterTool` وكلاء CrewAI من كتابة المحتوى إلى ملفات في حاويات Amazon S3.
icon: aws
mode: "wide"
---
# `S3WriterTool`
## الوصف
صُممت `S3WriterTool` لكتابة المحتوى إلى ملفات في حاويات Amazon S3. تتيح هذه الأداة لوكلاء CrewAI إنشاء أو تحديث الملفات في S3، مما يجعلها مثالية لسير العمل الذي يتطلب تخزين البيانات أو حفظ ملفات الإعداد أو حفظ أي محتوى آخر في تخزين AWS S3.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت التبعيات المطلوبة:
```shell
uv add boto3
```
## خطوات البدء
لاستخدام `S3WriterTool` بفعالية، اتبع الخطوات التالية:
1. **تثبيت التبعيات**: ثبّت الحزم المطلوبة باستخدام الأمر أعلاه.
2. **إعداد بيانات اعتماد AWS**: عيّن بيانات اعتماد AWS كمتغيرات بيئة.
3. **تهيئة الأداة**: أنشئ مثيلاً من الأداة.
4. **تحديد مسار S3 والمحتوى**: قدّم مسار S3 حيث تريد كتابة الملف والمحتوى المراد كتابته.
## مثال
يوضح المثال التالي كيفية استخدام `S3WriterTool` لكتابة محتوى إلى ملف في حاوية S3:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools.aws.s3 import S3WriterTool
# Initialize the tool
s3_writer_tool = S3WriterTool()
# Define an agent that uses the tool
file_writer_agent = Agent(
role="File Writer",
goal="Write content to files in S3 buckets",
backstory="An expert in storing and managing files in cloud storage.",
tools=[s3_writer_tool],
verbose=True,
)
# Example task to write a report
write_task = Task(
description="Generate a summary report of the quarterly sales data and save it to {my_bucket}.",
expected_output="Confirmation that the report was successfully saved to S3.",
agent=file_writer_agent,
)
# Create and run the crew
crew = Crew(agents=[file_writer_agent], tasks=[write_task])
result = crew.kickoff(inputs={"my_bucket": "s3://my-bucket/reports/quarterly-summary.txt"})
```
## المعاملات
تقبل `S3WriterTool` المعاملات التالية عند استخدامها من قبل وكيل:
- **file_path**: مطلوب. مسار ملف S3 بتنسيق `s3://bucket-name/file-name`.
- **content**: مطلوب. المحتوى المراد كتابته في الملف.
## بيانات اعتماد AWS
تتطلب الأداة بيانات اعتماد AWS للوصول إلى حاويات S3. يمكنك إعداد هذه البيانات باستخدام متغيرات البيئة:
- **CREW_AWS_REGION**: منطقة AWS حيث تقع حاوية S3. القيمة الافتراضية `us-east-1`.
- **CREW_AWS_ACCESS_KEY_ID**: معرّف مفتاح الوصول لـ AWS.
- **CREW_AWS_SEC_ACCESS_KEY**: مفتاح الوصول السري لـ AWS.
## الاستخدام
عند استخدام `S3WriterTool` مع وكيل، سيحتاج الوكيل لتقديم كل من مسار ملف S3 والمحتوى المراد كتابته:
```python Code
# Example of using the tool with an agent
file_writer_agent = Agent(
role="File Writer",
goal="Write content to files in S3 buckets",
backstory="An expert in storing and managing files in cloud storage.",
tools=[s3_writer_tool],
verbose=True,
)
# Create a task for the agent to write a specific file
write_config_task = Task(
description="""
Create a configuration file with the following database settings:
- host: db.example.com
- port: 5432
- username: app_user
- password: secure_password
Save this configuration as JSON to {my_bucket}.
""",
expected_output="Confirmation that the configuration file was successfully saved to S3.",
agent=file_writer_agent,
)
# Run the task
crew = Crew(agents=[file_writer_agent], tasks=[write_config_task])
result = crew.kickoff(inputs={"my_bucket": "s3://my-bucket/config/db-config.json"})
```
## معالجة الأخطاء
تتضمن `S3WriterTool` معالجة أخطاء لمشكلات S3 الشائعة:
- تنسيق مسار S3 غير صالح
- مشكلات الأذونات (مثل عدم وجود صلاحية كتابة للحاوية)
- مشكلات بيانات اعتماد AWS
- الحاوية غير موجودة
عند حدوث خطأ، ستعيد الأداة رسالة خطأ تتضمن تفاصيل حول المشكلة.
## تفاصيل التنفيذ
تستخدم `S3WriterTool` حزمة AWS SDK لـ Python (boto3) للتفاعل مع S3:
```python Code
class S3WriterTool(BaseTool):
name: str = "S3 Writer Tool"
description: str = "Writes content to a file in Amazon S3 given an S3 file path"
def _run(self, file_path: str, content: str) -> str:
try:
bucket_name, object_key = self._parse_s3_path(file_path)
s3 = boto3.client(
's3',
region_name=os.getenv('CREW_AWS_REGION', 'us-east-1'),
aws_access_key_id=os.getenv('CREW_AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('CREW_AWS_SEC_ACCESS_KEY')
)
s3.put_object(Bucket=bucket_name, Key=object_key, Body=content.encode('utf-8'))
return f"Successfully wrote content to {file_path}"
except ClientError as e:
return f"Error writing file to S3: {str(e)}"
```
## الخلاصة
توفر `S3WriterTool` طريقة مباشرة لكتابة المحتوى إلى ملفات في حاويات Amazon S3. من خلال تمكين الوكلاء من إنشاء وتحديث الملفات في S3، تسهّل سير العمل الذي يتطلب تخزين ملفات سحابي. هذه الأداة مفيدة بشكل خاص لحفظ البيانات وإدارة الإعدادات وتوليد التقارير وأي مهمة تتضمن تخزين المعلومات في تخزين AWS S3.

View File

@@ -0,0 +1,167 @@
---
title: أداة البحث المتجهي في MongoDB
description: تقوم `MongoDBVectorSearchTool` بإجراء بحث متجهي على MongoDB Atlas مع أدوات مساعدة اختيارية لإنشاء الفهارس.
icon: "leaf"
mode: "wide"
---
# `MongoDBVectorSearchTool`
## الوصف
تنفيذ استعلامات التشابه المتجهي على مجموعات MongoDB Atlas. تدعم أدوات مساعدة لإنشاء الفهارس وإدراج النصوص المضمنة بكميات كبيرة.
يدعم MongoDB Atlas البحث المتجهي الأصلي. اعرف المزيد:
https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-overview/
## التثبيت
قم بالتثبيت مع إضافة MongoDB:
```shell
pip install crewai-tools[mongodb]
```
أو
```shell
uv add crewai-tools --extra mongodb
```
## المعاملات
### التهيئة
- `connection_string` (str, مطلوب)
- `database_name` (str, مطلوب)
- `collection_name` (str, مطلوب)
- `vector_index_name` (str, الافتراضي `vector_index`)
- `text_key` (str, الافتراضي `text`)
- `embedding_key` (str, الافتراضي `embedding`)
- `dimensions` (int, الافتراضي `1536`)
### معاملات التشغيل
- `query` (str, مطلوب): استعلام بلغة طبيعية لتضمينه والبحث عنه.
## بداية سريعة
```python Code
from crewai_tools import MongoDBVectorSearchTool
tool = MongoDBVectorSearchTool(
connection_string="mongodb+srv://...",
database_name="mydb",
collection_name="docs",
)
print(tool.run(query="how to create vector index"))
```
## أدوات مساعدة لإنشاء الفهارس
استخدم `create_vector_search_index(...)` لإنشاء فهرس بحث متجهي في Atlas بالأبعاد والتشابه الصحيحين.
## المشكلات الشائعة
- فشل المصادقة: تأكد من أن قائمة الوصول إلى عناوين IP في Atlas تسمح بخادمك وأن سلسلة الاتصال تتضمن بيانات الاعتماد.
- الفهرس غير موجود: أنشئ الفهرس المتجهي أولاً؛ يجب أن يتطابق الاسم مع `vector_index_name`.
- عدم تطابق الأبعاد: قم بمحاذاة أبعاد نموذج التضمين مع `dimensions`.
## أمثلة إضافية
### التهيئة الأساسية
```python Code
from crewai_tools import MongoDBVectorSearchTool
tool = MongoDBVectorSearchTool(
database_name="example_database",
collection_name="example_collection",
connection_string="<your_mongodb_connection_string>",
)
```
### تكوين استعلام مخصص
```python Code
from crewai_tools import MongoDBVectorSearchConfig, MongoDBVectorSearchTool
query_config = MongoDBVectorSearchConfig(limit=10, oversampling_factor=2)
tool = MongoDBVectorSearchTool(
database_name="example_database",
collection_name="example_collection",
connection_string="<your_mongodb_connection_string>",
query_config=query_config,
vector_index_name="my_vector_index",
)
rag_agent = Agent(
name="rag_agent",
role="You are a helpful assistant that can answer questions with the help of the MongoDBVectorSearchTool.",
goal="...",
backstory="...",
tools=[tool],
)
```
### تحميل قاعدة البيانات مسبقاً وإنشاء الفهرس
```python Code
import os
from crewai_tools import MongoDBVectorSearchTool
tool = MongoDBVectorSearchTool(
database_name="example_database",
collection_name="example_collection",
connection_string="<your_mongodb_connection_string>",
)
# Load text content from a local folder and add to MongoDB
texts = []
for fname in os.listdir("knowledge"):
path = os.path.join("knowledge", fname)
if os.path.isfile(path):
with open(path, "r", encoding="utf-8") as f:
texts.append(f.read())
tool.add_texts(texts)
# Create the Atlas Vector Search index (e.g., 3072 dims for text-embedding-3-large)
tool.create_vector_search_index(dimensions=3072)
```
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import MongoDBVectorSearchTool
tool = MongoDBVectorSearchTool(
connection_string="mongodb+srv://...",
database_name="mydb",
collection_name="docs",
)
agent = Agent(
role="RAG Agent",
goal="Answer using MongoDB vector search",
backstory="Knowledge retrieval specialist",
tools=[tool],
verbose=True,
)
task = Task(
description="Find relevant content for 'indexing guidance'",
expected_output="A concise answer citing the most relevant matches",
agent=agent,
)
crew = Crew(
agents=[agent],
tasks=[task],
verbose=True,
)
result = crew.kickoff()
```

View File

@@ -0,0 +1,67 @@
---
title: بحث RAG في MySQL
description: أداة `MySQLSearchTool` مصممة للبحث في قواعد بيانات MySQL وإرجاع النتائج الأكثر صلة.
icon: database
mode: "wide"
---
## نظرة عامة
هذه الأداة مصممة لتسهيل عمليات البحث الدلالي داخل جداول قواعد بيانات MySQL. من خلال الاستفادة من تقنية RAG (الاسترجاع والتوليد)، توفر أداة MySQLSearchTool للمستخدمين وسيلة فعالة للاستعلام عن محتوى جداول قواعد البيانات، مصممة خصيصاً لقواعد بيانات MySQL. تبسط عملية العثور على البيانات ذات الصلة من خلال استعلامات البحث الدلالي، مما يجعلها مورداً لا يُقدَّر بثمن للمستخدمين الذين يحتاجون إلى إجراء استعلامات متقدمة على مجموعات بيانات واسعة داخل قاعدة بيانات MySQL.
## التثبيت
لتثبيت حزمة `crewai_tools` واستخدام MySQLSearchTool، نفّذ الأمر التالي في الطرفية:
```shell
pip install 'crewai[tools]'
```
## مثال
فيما يلي مثال يوضح كيفية استخدام MySQLSearchTool لإجراء بحث دلالي على جدول داخل قاعدة بيانات MySQL:
```python Code
from crewai_tools import MySQLSearchTool
# Initialize the tool with the database URI and the target table name
tool = MySQLSearchTool(
db_uri='mysql://user:password@localhost:3306/mydatabase',
table_name='employees'
)
```
## المعاملات
تتطلب أداة MySQLSearchTool المعاملات التالية لتشغيلها:
- `db_uri`: سلسلة نصية تمثل عنوان URI لقاعدة بيانات MySQL المراد الاستعلام عنها. هذا المعامل إلزامي ويجب أن يتضمن تفاصيل المصادقة اللازمة وموقع قاعدة البيانات.
- `table_name`: سلسلة نصية تحدد اسم الجدول داخل قاعدة البيانات الذي سيتم إجراء البحث الدلالي عليه. هذا المعامل إلزامي.
## النموذج والتضمينات المخصصة
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
tool = MySQLSearchTool(
config=dict(
llm=dict(
provider="ollama", # or google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google-generativeai",
config=dict(
model_name="gemini-embedding-001",
task_type="RETRIEVAL_DOCUMENT",
# title="Embeddings",
),
),
)
)
```

View File

@@ -0,0 +1,102 @@
---
title: أداة NL2SQL
description: أداة `NL2SQLTool` مصممة لتحويل اللغة الطبيعية إلى استعلامات SQL.
icon: language
mode: "wide"
---
## نظرة عامة
تُستخدم هذه الأداة لتحويل اللغة الطبيعية إلى استعلامات SQL. عند تمريرها إلى الوكيل، ستقوم بتوليد الاستعلامات ثم استخدامها للتفاعل مع قاعدة البيانات.
يتيح ذلك سير عمل متعددة مثل أن يقوم وكيل بالوصول إلى قاعدة البيانات واسترجاع المعلومات بناءً على الهدف ثم استخدام تلك المعلومات لتوليد استجابة أو تقرير أو أي مخرجات أخرى. بالإضافة إلى ذلك، يوفر القدرة للوكيل على تحديث قاعدة البيانات بناءً على هدفه.
**تنبيه**: تأكد من أن الوكيل لديه وصول إلى نسخة قراءة فقط أو أنه من المقبول أن يقوم الوكيل بتنفيذ استعلامات إدراج/تحديث على قاعدة البيانات.
## نموذج الأمان
`NL2SQLTool` هي أداة قابلة للتنفيذ. تقوم بتشغيل استعلامات SQL المولّدة من النموذج مباشرة على اتصال قاعدة البيانات المُهيأ.
هذا يعني أن المخاطر تعتمد على خيارات النشر الخاصة بك:
- بيانات الاعتماد التي تقدمها في `db_uri`
- ما إذا كان بإمكان المدخلات غير الموثوقة التأثير على الأوامر
- ما إذا كنت تضيف حواجز حماية لاستدعاءات الأدوات قبل التنفيذ
إذا كنت توجه مدخلات غير موثوقة إلى وكلاء يستخدمون هذه الأداة، تعامل معها كتكامل عالي المخاطر.
## توصيات التقوية
استخدم جميع الإجراءات التالية في بيئة الإنتاج:
- استخدم مستخدم قاعدة بيانات للقراءة فقط كلما أمكن
- فضّل نسخة القراءة لأعباء العمل التحليلية/الاسترجاعية
- امنح أقل صلاحيات ممكنة (بدون أدوار المسؤول/المستخدم الفائق، بدون صلاحيات على مستوى الملفات/النظام)
- طبّق حدود الموارد على مستوى قاعدة البيانات (مهلة الاستعلام، مهلة القفل، حدود التكلفة/الصفوف)
- أضف خطافات `before_tool_call` لفرض أنماط الاستعلام المسموح بها
- فعّل تسجيل الاستعلامات والتنبيهات للعبارات التدميرية
## المتطلبات
- SqlAlchemy
- أي مكتبة متوافقة مع قواعد البيانات (مثل psycopg2، mysql-connector-python)
## التثبيت
قم بتثبيت حزمة crewai_tools
```shell
pip install 'crewai[tools]'
```
## الاستخدام
لاستخدام أداة NL2SQLTool، تحتاج إلى تمرير عنوان URI لقاعدة البيانات إلى الأداة. يجب أن يكون العنوان بصيغة `dialect+driver://username:password@host:port/database`.
```python Code
from crewai_tools import NL2SQLTool
# psycopg2 was installed to run this example with PostgreSQL
nl2sql = NL2SQLTool(db_uri="postgresql://example@localhost:5432/test_db")
@agent
def researcher(self) -> Agent:
return Agent(
config=self.agents_config["researcher"],
allow_delegation=False,
tools=[nl2sql]
)
```
## مثال
كان هدف المهمة الأساسي:
"استرجاع المتوسط والحد الأقصى والحد الأدنى للإيرادات الشهرية لكل مدينة، مع تضمين المدن التي بها أكثر من مستخدم واحد فقط. أيضاً، قم بعدّ المستخدمين في كل مدينة وترتيب النتائج حسب متوسط الإيرادات الشهرية بترتيب تنازلي"
حاول الوكيل الحصول على المعلومات من قاعدة البيانات، الاستعلام الأول كان خاطئاً فحاول الوكيل مرة أخرى وحصل على المعلومات الصحيحة ومررها إلى الوكيل التالي.
![alt text](https://github.com/crewAIInc/crewAI-tools/blob/main/crewai_tools/tools/nl2sql/images/image-2.png?raw=true)
![alt text](https://github.com/crewAIInc/crewAI-tools/raw/main/crewai_tools/tools/nl2sql/images/image-3.png)
كان هدف المهمة الثانية:
"مراجعة البيانات وإنشاء تقرير مفصّل، ثم إنشاء جدول في قاعدة البيانات بحقول مبنية على البيانات المقدمة. تضمين معلومات عن المتوسط والحد الأقصى والحد الأدنى للإيرادات الشهرية لكل مدينة، مع تضمين المدن التي بها أكثر من مستخدم واحد فقط. أيضاً، عدّ المستخدمين في كل مدينة وترتيب النتائج حسب متوسط الإيرادات الشهرية بترتيب تنازلي."
الآن تصبح الأمور مثيرة للاهتمام، حيث يولّد الوكيل استعلام SQL ليس فقط لإنشاء الجدول بل أيضاً لإدراج البيانات فيه. وفي النهاية لا يزال الوكيل يُرجع التقرير النهائي الذي يتطابق تماماً مع ما كان في قاعدة البيانات.
![alt text](https://github.com/crewAIInc/crewAI-tools/raw/main/crewai_tools/tools/nl2sql/images/image-4.png)
![alt text](https://github.com/crewAIInc/crewAI-tools/raw/main/crewai_tools/tools/nl2sql/images/image-5.png)
![alt text](https://github.com/crewAIInc/crewAI-tools/raw/main/crewai_tools/tools/nl2sql/images/image-9.png)
![alt text](https://github.com/crewAIInc/crewAI-tools/raw/main/crewai_tools/tools/nl2sql/images/image-7.png)
هذا مثال بسيط على كيفية استخدام أداة NL2SQLTool للتفاعل مع قاعدة البيانات وتوليد التقارير بناءً على البيانات الموجودة فيها.
توفر الأداة إمكانيات لا حصر لها لمنطق الوكيل وكيفية تفاعله مع قاعدة البيانات.
```md
DB -> Agent -> ... -> Agent -> DB
```

View File

@@ -0,0 +1,67 @@
---
title: "نظرة عامة"
description: "الاتصال بقواعد البيانات ومخازن المتجهات ومستودعات البيانات للحصول على وصول شامل للبيانات"
icon: "face-smile"
mode: "wide"
---
تتيح هذه الأدوات لوكلائك التفاعل مع أنظمة قواعد بيانات متنوعة، من قواعد بيانات SQL التقليدية إلى مخازن المتجهات الحديثة ومستودعات البيانات.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة MySQL" icon="database" href="/ar/tools/database-data/mysqltool">
الاتصال بقواعد بيانات MySQL والاستعلام عنها بعمليات SQL.
</Card>
<Card title="بحث PostgreSQL" icon="elephant" href="/ar/tools/database-data/pgsearchtool">
البحث والاستعلام في قواعد بيانات PostgreSQL بكفاءة.
</Card>
<Card title="بحث Snowflake" icon="snowflake" href="/ar/tools/database-data/snowflakesearchtool">
الوصول إلى مستودع بيانات Snowflake للتحليلات وإعداد التقارير.
</Card>
<Card title="أداة NL2SQL" icon="language" href="/ar/tools/database-data/nl2sqltool">
تحويل استعلامات اللغة الطبيعية إلى عبارات SQL تلقائياً.
</Card>
<Card title="بحث متجهي Qdrant" icon="vector-square" href="/ar/tools/database-data/qdrantvectorsearchtool">
البحث في التضمينات المتجهية باستخدام قاعدة بيانات Qdrant المتجهية.
</Card>
<Card title="بحث متجهي Weaviate" icon="network-wired" href="/ar/tools/database-data/weaviatevectorsearchtool">
إجراء بحث دلالي باستخدام قاعدة بيانات Weaviate المتجهية.
</Card>
<Card title="بحث متجهي MongoDB" icon="leaf" href="/ar/tools/database-data/mongodbvectorsearchtool">
بحث التشابه المتجهي على MongoDB Atlas مع أدوات مساعدة للفهرسة.
</Card>
<Card title="بحث SingleStore" icon="database" href="/ar/tools/database-data/singlestoresearchtool">
استعلامات SELECT/SHOW آمنة على SingleStore مع تجميع الاتصالات والتحقق.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **تحليل البيانات**: الاستعلام عن قواعد البيانات لذكاء الأعمال وإعداد التقارير
- **البحث المتجهي**: العثور على محتوى مشابه باستخدام التضمينات الدلالية
- **عمليات ETL**: استخراج البيانات وتحويلها وتحميلها بين الأنظمة
- **التحليلات الفورية**: الوصول إلى البيانات الحية لاتخاذ القرارات
```python
from crewai_tools import MySQLTool, QdrantVectorSearchTool, NL2SQLTool
# Create database tools
mysql_db = MySQLTool()
vector_search = QdrantVectorSearchTool()
nl_to_sql = NL2SQLTool()
# Add to your agent
agent = Agent(
role="Data Analyst",
tools=[mysql_db, vector_search, nl_to_sql],
goal="Extract insights from various data sources"
)
```

View File

@@ -0,0 +1,80 @@
---
title: بحث RAG في PostgreSQL
description: أداة `PGSearchTool` مصممة للبحث في قواعد بيانات PostgreSQL وإرجاع النتائج الأكثر صلة.
icon: elephant
mode: "wide"
---
## نظرة عامة
<Note>
أداة PGSearchTool قيد التطوير حالياً. يوضح هذا المستند الوظائف والواجهة المقصودة.
مع تقدم التطوير، يرجى الانتباه إلى أن بعض الميزات قد لا تكون متاحة أو قد تتغير.
</Note>
## الوصف
صُممت أداة PGSearchTool كأداة قوية لتسهيل عمليات البحث الدلالي داخل جداول قواعد بيانات PostgreSQL. من خلال الاستفادة من تقنية الاسترجاع والتوليد (RAG) المتقدمة، تهدف إلى توفير وسيلة فعالة للاستعلام عن محتوى جداول قواعد البيانات، مصممة خصيصاً لقواعد بيانات PostgreSQL. هدف الأداة هو تبسيط عملية العثور على البيانات ذات الصلة من خلال استعلامات البحث الدلالي، مما يوفر مورداً قيماً للمستخدمين الذين يحتاجون إلى إجراء استعلامات متقدمة على مجموعات بيانات واسعة في بيئة PostgreSQL.
## التثبيت
يمكن تثبيت حزمة `crewai_tools`، التي ستتضمن أداة PGSearchTool عند إصدارها، باستخدام الأمر التالي:
```shell
pip install 'crewai[tools]'
```
<Note>
أداة PGSearchTool غير متاحة بعد في الإصدار الحالي من حزمة `crewai_tools`. سيتم تحديث أمر التثبيت هذا بمجرد إصدار الأداة.
</Note>
## مثال على الاستخدام
فيما يلي مثال مقترح يوضح كيفية استخدام أداة PGSearchTool لإجراء بحث دلالي على جدول داخل قاعدة بيانات PostgreSQL:
```python Code
from crewai_tools import PGSearchTool
# Initialize the tool with the database URI and the target table name
tool = PGSearchTool(
db_uri='postgresql://user:password@localhost:5432/mydatabase',
table_name='employees'
)
```
## المعاملات
صُممت أداة PGSearchTool لتتطلب المعاملات التالية لتشغيلها:
| المعامل | النوع | الوصف |
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
| **db_uri** | `string` | **إلزامي**. سلسلة نصية تمثل عنوان URI لقاعدة بيانات PostgreSQL المراد الاستعلام عنها. هذا المعامل إلزامي ويجب أن يتضمن تفاصيل المصادقة اللازمة وموقع قاعدة البيانات. |
| **table_name** | `string` | **إلزامي**. سلسلة نصية تحدد اسم الجدول داخل قاعدة البيانات الذي سيتم إجراء البحث الدلالي عليه. هذا المعامل إلزامي أيضاً. |
## النموذج والتضمينات المخصصة
تنوي الأداة استخدام OpenAI لكل من التضمينات والتلخيص بشكل افتراضي. سيكون لدى المستخدمين خيار تخصيص النموذج باستخدام قاموس تكوين كما يلي:
```python Code
tool = PGSearchTool(
config=dict(
llm=dict(
provider="ollama", # or google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google-generativeai", # or openai, ollama, ...
config=dict(
model_name="gemini-embedding-001",
task_type="RETRIEVAL_DOCUMENT",
# title="Embeddings",
),
),
)
)
```

View File

@@ -0,0 +1,344 @@
---
title: 'أداة البحث المتجهي Qdrant'
description: 'إمكانيات البحث الدلالي لوكلاء CrewAI باستخدام قاعدة بيانات Qdrant المتجهية'
icon: vector-square
mode: "wide"
---
## نظرة عامة
تتيح أداة البحث المتجهي Qdrant إمكانيات البحث الدلالي في وكلاء CrewAI من خلال الاستفادة من [Qdrant](https://qdrant.tech/)، محرك بحث التشابه المتجهي. تسمح هذه الأداة لوكلائك بالبحث في المستندات المخزنة في مجموعة Qdrant باستخدام التشابه الدلالي.
## التثبيت
قم بتثبيت الحزم المطلوبة:
```bash
uv add qdrant-client
```
## الاستخدام الأساسي
إليك مثال بسيط لكيفية استخدام الأداة:
```python
from crewai import Agent
from crewai_tools import QdrantVectorSearchTool, QdrantConfig
# Initialize the tool with QdrantConfig
qdrant_tool = QdrantVectorSearchTool(
qdrant_config=QdrantConfig(
qdrant_url="your_qdrant_url",
qdrant_api_key="your_qdrant_api_key",
collection_name="your_collection"
)
)
# Create an agent that uses the tool
agent = Agent(
role="Research Assistant",
goal="Find relevant information in documents",
tools=[qdrant_tool]
)
# The tool will automatically use OpenAI embeddings
# and return the 3 most relevant results with scores > 0.35
```
## مثال عملي كامل
إليك مثالاً كاملاً يوضح كيفية:
1. استخراج النص من ملف PDF
2. توليد التضمينات باستخدام OpenAI
3. التخزين في Qdrant
4. إنشاء سير عمل RAG وكيلي باستخدام CrewAI للبحث الدلالي
```python
import os
import uuid
import pdfplumber
from openai import OpenAI
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process, LLM
from crewai_tools import QdrantVectorSearchTool
from qdrant_client import QdrantClient
from qdrant_client.models import PointStruct, Distance, VectorParams
# Load environment variables
load_dotenv()
# Initialize OpenAI client
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Extract text from PDF
def extract_text_from_pdf(pdf_path):
text = []
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
page_text = page.extract_text()
if page_text:
text.append(page_text.strip())
return text
# Generate OpenAI embeddings
def get_openai_embedding(text):
response = client.embeddings.create(
input=text,
model="text-embedding-3-large"
)
return response.data[0].embedding
# Store text and embeddings in Qdrant
def load_pdf_to_qdrant(pdf_path, qdrant, collection_name):
# Extract text from PDF
text_chunks = extract_text_from_pdf(pdf_path)
# Create Qdrant collection
if qdrant.collection_exists(collection_name):
qdrant.delete_collection(collection_name)
qdrant.create_collection(
collection_name=collection_name,
vectors_config=VectorParams(size=3072, distance=Distance.COSINE)
)
# Store embeddings
points = []
for chunk in text_chunks:
embedding = get_openai_embedding(chunk)
points.append(PointStruct(
id=str(uuid.uuid4()),
vector=embedding,
payload={"text": chunk}
))
qdrant.upsert(collection_name=collection_name, points=points)
# Initialize Qdrant client and load data
qdrant = QdrantClient(
url=os.getenv("QDRANT_URL"),
api_key=os.getenv("QDRANT_API_KEY")
)
collection_name = "example_collection"
pdf_path = "path/to/your/document.pdf"
load_pdf_to_qdrant(pdf_path, qdrant, collection_name)
# Initialize Qdrant search tool
from crewai_tools import QdrantConfig
qdrant_tool = QdrantVectorSearchTool(
qdrant_config=QdrantConfig(
qdrant_url=os.getenv("QDRANT_URL"),
qdrant_api_key=os.getenv("QDRANT_API_KEY"),
collection_name=collection_name,
limit=3,
score_threshold=0.35
)
)
# Create CrewAI agents
search_agent = Agent(
role="Senior Semantic Search Agent",
goal="Find and analyze documents based on semantic search",
backstory="""You are an expert research assistant who can find relevant
information using semantic search in a Qdrant database.""",
tools=[qdrant_tool],
verbose=True
)
answer_agent = Agent(
role="Senior Answer Assistant",
goal="Generate answers to questions based on the context provided",
backstory="""You are an expert answer assistant who can generate
answers to questions based on the context provided.""",
tools=[qdrant_tool],
verbose=True
)
# Define tasks
search_task = Task(
description="""Search for relevant documents about the {query}.
Your final answer should include:
- The relevant information found
- The similarity scores of the results
- The metadata of the relevant documents""",
agent=search_agent
)
answer_task = Task(
description="""Given the context and metadata of relevant documents,
generate a final answer based on the context.""",
agent=answer_agent
)
# Run CrewAI workflow
crew = Crew(
agents=[search_agent, answer_agent],
tasks=[search_task, answer_task],
process=Process.sequential,
verbose=True
)
result = crew.kickoff(
inputs={"query": "What is the role of X in the document?"}
)
print(result)
```
## معاملات الأداة
### المعاملات المطلوبة
- `qdrant_config` (QdrantConfig): كائن التكوين الذي يحتوي على جميع إعدادات Qdrant
### معاملات QdrantConfig
- `qdrant_url` (str): عنوان URL لخادم Qdrant الخاص بك
- `qdrant_api_key` (str, اختياري): مفتاح API للمصادقة مع Qdrant
- `collection_name` (str): اسم مجموعة Qdrant المراد البحث فيها
- `limit` (int): الحد الأقصى لعدد النتائج المُرجعة (الافتراضي: 3)
- `score_threshold` (float): الحد الأدنى لدرجة التشابه (الافتراضي: 0.35)
- `filter` (Any, اختياري): نسخة Filter من Qdrant للتصفية المتقدمة (الافتراضي: None)
### المعاملات الاختيارية للأداة
- `custom_embedding_fn` (Callable[[str], list[float]]): دالة مخصصة لتحويل النص إلى متجهات
- `qdrant_package` (str): مسار الحزمة الأساسية لـ Qdrant (الافتراضي: "qdrant_client")
- `client` (Any): عميل Qdrant مُهيأ مسبقاً (اختياري)
## التصفية المتقدمة
تدعم أداة QdrantVectorSearchTool إمكانيات تصفية قوية لتحسين نتائج البحث:
### التصفية الديناميكية
استخدم معاملات `filter_by` و `filter_value` في بحثك لتصفية النتائج أثناء التنفيذ:
```python
# Agent will use these parameters when calling the tool
# The tool schema accepts filter_by and filter_value
# Example: search with category filter
# Results will be filtered where category == "technology"
```
### المرشحات المسبقة مع QdrantConfig
للتصفية المعقدة، استخدم نسخ Filter من Qdrant في تكوينك:
```python
from qdrant_client.http import models as qmodels
from crewai_tools import QdrantVectorSearchTool, QdrantConfig
# Create a filter for specific conditions
preset_filter = qmodels.Filter(
must=[
qmodels.FieldCondition(
key="category",
match=qmodels.MatchValue(value="research")
),
qmodels.FieldCondition(
key="year",
match=qmodels.MatchValue(value=2024)
)
]
)
# Initialize tool with preset filter
qdrant_tool = QdrantVectorSearchTool(
qdrant_config=QdrantConfig(
qdrant_url="your_url",
qdrant_api_key="your_key",
collection_name="your_collection",
filter=preset_filter # Preset filter applied to all searches
)
)
```
### دمج المرشحات
تقوم الأداة تلقائياً بدمج المرشحات المسبقة من `QdrantConfig` مع المرشحات الديناميكية من `filter_by` و `filter_value`:
```python
# If QdrantConfig has a preset filter for category="research"
# And the search uses filter_by="year", filter_value=2024
# Both filters will be combined (AND logic)
```
## معاملات البحث
تقبل الأداة هذه المعاملات في مخططها:
- `query` (str): استعلام البحث للعثور على مستندات مشابهة
- `filter_by` (str, اختياري): حقل البيانات الوصفية للتصفية عليه
- `filter_value` (Any, اختياري): القيمة المراد التصفية بها
## صيغة الإرجاع
تُرجع الأداة النتائج بصيغة JSON:
```json
[
{
"metadata": {
// Any metadata stored with the document
},
"context": "The actual text content of the document",
"distance": 0.95 // Similarity score
}
]
```
## التضمين الافتراضي
بشكل افتراضي، تستخدم الأداة نموذج `text-embedding-3-large` من OpenAI للتحويل إلى متجهات. يتطلب ذلك:
- تعيين مفتاح OpenAI API في البيئة: `OPENAI_API_KEY`
## التضمينات المخصصة
بدلاً من استخدام نموذج التضمين الافتراضي، قد ترغب في استخدام دالة تضمين خاصة بك في الحالات التالية:
1. تريد استخدام نموذج تضمين مختلف (مثل Cohere أو HuggingFace أو نماذج Ollama)
2. تحتاج إلى تقليل التكاليف باستخدام نماذج تضمين مفتوحة المصدر
3. لديك متطلبات محددة لأبعاد المتجهات أو جودة التضمين
4. تريد استخدام تضمينات خاصة بمجال معين (مثل النصوص الطبية أو القانونية)
إليك مثال باستخدام نموذج HuggingFace:
```python
from transformers import AutoTokenizer, AutoModel
import torch
# Load model and tokenizer
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
model = AutoModel.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
def custom_embeddings(text: str) -> list[float]:
# Tokenize and get model outputs
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
outputs = model(**inputs)
# Use mean pooling to get text embedding
embeddings = outputs.last_hidden_state.mean(dim=1)
# Convert to list of floats and return
return embeddings[0].tolist()
# Use custom embeddings with the tool
from crewai_tools import QdrantConfig
tool = QdrantVectorSearchTool(
qdrant_config=QdrantConfig(
qdrant_url="your_url",
qdrant_api_key="your_key",
collection_name="your_collection"
),
custom_embedding_fn=custom_embeddings # Pass your custom function
)
```
## معالجة الأخطاء
تتعامل الأداة مع هذه الأخطاء المحددة:
- تُثير ImportError إذا لم يكن `qdrant-client` مثبتاً (مع خيار التثبيت التلقائي)
- تُثير ValueError إذا لم يتم تعيين `QDRANT_URL`
- تطلب تثبيت `qdrant-client` إذا كان مفقوداً باستخدام `uv add qdrant-client`
## متغيرات البيئة
متغيرات البيئة المطلوبة:
```bash
export QDRANT_URL="your_qdrant_url" # If not provided in constructor
export QDRANT_API_KEY="your_api_key" # If not provided in constructor
export OPENAI_API_KEY="your_openai_key" # If using default embeddings
```

View File

@@ -0,0 +1,60 @@
---
title: أداة بحث SingleStore
description: تنفذ `SingleStoreSearchTool` استعلامات SELECT/SHOW بأمان على SingleStore مع تجميع الاتصالات.
icon: circle
mode: "wide"
---
# `SingleStoreSearchTool`
## الوصف
تنفيذ استعلامات القراءة فقط (`SELECT`/`SHOW`) على SingleStore مع تجميع الاتصالات والتحقق من صحة المدخلات.
## التثبيت
```shell
uv add crewai-tools[singlestore]
```
## متغيرات البيئة
يمكن استخدام متغيرات مثل `SINGLESTOREDB_HOST` و `SINGLESTOREDB_USER` و `SINGLESTOREDB_PASSWORD` وغيرها، أو `SINGLESTOREDB_URL` كعنوان DSN واحد.
قم بتوليد مفتاح API من لوحة تحكم SingleStore، [الوثائق هنا](https://docs.singlestore.com/cloud/reference/management-api/#generate-an-api-key).
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import SingleStoreSearchTool
tool = SingleStoreSearchTool(
tables=["products"],
host="host",
user="user",
password="pass",
database="db",
)
agent = Agent(
role="Analyst",
goal="Query SingleStore",
tools=[tool],
verbose=True,
)
task = Task(
description="List 5 products",
expected_output="5 rows as JSON/text",
agent=agent,
)
crew = Crew(
agents=[agent],
tasks=[task],
verbose=True,
)
result = crew.kickoff()
```

View File

@@ -0,0 +1,203 @@
---
title: أداة بحث Snowflake
description: تتيح `SnowflakeSearchTool` لوكلاء CrewAI تنفيذ استعلامات SQL وإجراء بحث دلالي على مستودعات بيانات Snowflake.
icon: snowflake
mode: "wide"
---
# `SnowflakeSearchTool`
## الوصف
صُممت `SnowflakeSearchTool` للاتصال بمستودعات بيانات Snowflake وتنفيذ استعلامات SQL مع ميزات متقدمة مثل تجميع الاتصالات ومنطق إعادة المحاولة والتنفيذ غير المتزامن. تتيح هذه الأداة لوكلاء CrewAI التفاعل مع قواعد بيانات Snowflake، مما يجعلها مثالية لمهام تحليل البيانات وإعداد التقارير وذكاء الأعمال التي تتطلب الوصول إلى بيانات المؤسسة المخزنة في Snowflake.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت التبعيات المطلوبة:
```shell
uv add cryptography snowflake-connector-python snowflake-sqlalchemy
```
أو بدلاً من ذلك:
```shell
uv sync --extra snowflake
```
## خطوات البدء
لاستخدام `SnowflakeSearchTool` بفعالية، اتبع هذه الخطوات:
1. **تثبيت التبعيات**: قم بتثبيت الحزم المطلوبة باستخدام أحد الأوامر أعلاه.
2. **تكوين اتصال Snowflake**: أنشئ كائن `SnowflakeConfig` ببيانات اعتماد Snowflake الخاصة بك.
3. **تهيئة الأداة**: أنشئ نسخة من الأداة بالتكوين اللازم.
4. **تنفيذ الاستعلامات**: استخدم الأداة لتشغيل استعلامات SQL على قاعدة بيانات Snowflake الخاصة بك.
## مثال
يوضح المثال التالي كيفية استخدام `SnowflakeSearchTool` للاستعلام عن البيانات من قاعدة بيانات Snowflake:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import SnowflakeSearchTool, SnowflakeConfig
# Create Snowflake configuration
config = SnowflakeConfig(
account="your_account",
user="your_username",
password="your_password",
warehouse="COMPUTE_WH",
database="your_database",
snowflake_schema="your_schema"
)
# Initialize the tool
snowflake_tool = SnowflakeSearchTool(config=config)
# Define an agent that uses the tool
data_analyst_agent = Agent(
role="Data Analyst",
goal="Analyze data from Snowflake database",
backstory="An expert data analyst who can extract insights from enterprise data.",
tools=[snowflake_tool],
verbose=True,
)
# Example task to query sales data
query_task = Task(
description="Query the sales data for the last quarter and summarize the top 5 products by revenue.",
expected_output="A summary of the top 5 products by revenue for the last quarter.",
agent=data_analyst_agent,
)
# Create and run the crew
crew = Crew(agents=[data_analyst_agent],
tasks=[query_task])
result = crew.kickoff()
```
يمكنك أيضاً تخصيص الأداة بمعاملات إضافية:
```python Code
# Initialize the tool with custom parameters
snowflake_tool = SnowflakeSearchTool(
config=config,
pool_size=10,
max_retries=5,
retry_delay=2.0,
enable_caching=True
)
```
## المعاملات
### معاملات SnowflakeConfig
يقبل صنف `SnowflakeConfig` المعاملات التالية:
- **account**: مطلوب. معرّف حساب Snowflake.
- **user**: مطلوب. اسم مستخدم Snowflake.
- **password**: اختياري*. كلمة مرور Snowflake.
- **private_key_path**: اختياري*. مسار ملف المفتاح الخاص (بديل لكلمة المرور).
- **warehouse**: مطلوب. اسم مستودع Snowflake.
- **database**: مطلوب. قاعدة البيانات الافتراضية.
- **snowflake_schema**: مطلوب. المخطط الافتراضي.
- **role**: اختياري. دور Snowflake.
- **session_parameters**: اختياري. معاملات جلسة مخصصة كقاموس.
*يجب توفير إما `password` أو `private_key_path`.
### معاملات SnowflakeSearchTool
تقبل `SnowflakeSearchTool` المعاملات التالية أثناء التهيئة:
- **config**: مطلوب. كائن `SnowflakeConfig` يحتوي على تفاصيل الاتصال.
- **pool_size**: اختياري. عدد الاتصالات في المجمع. الافتراضي هو 5.
- **max_retries**: اختياري. الحد الأقصى لمحاولات إعادة المحاولة للاستعلامات الفاشلة. الافتراضي هو 3.
- **retry_delay**: اختياري. التأخير بين المحاولات بالثواني. الافتراضي هو 1.0.
- **enable_caching**: اختياري. ما إذا كان سيتم تفعيل التخزين المؤقت لنتائج الاستعلامات. الافتراضي هو True.
## الاستخدام
عند استخدام `SnowflakeSearchTool`، تحتاج إلى توفير المعاملات التالية:
- **query**: مطلوب. استعلام SQL المراد تنفيذه.
- **database**: اختياري. تجاوز قاعدة البيانات الافتراضية المحددة في التكوين.
- **snowflake_schema**: اختياري. تجاوز المخطط الافتراضي المحدد في التكوين.
- **timeout**: اختياري. مهلة الاستعلام بالثواني. الافتراضي هو 300.
ستُرجع الأداة نتائج الاستعلام كقائمة من القواميس، حيث يمثل كل قاموس صفاً بأسماء الأعمدة كمفاتيح.
```python Code
# Example of using the tool with an agent
data_analyst = Agent(
role="Data Analyst",
goal="Analyze sales data from Snowflake",
backstory="An expert data analyst with experience in SQL and data visualization.",
tools=[snowflake_tool],
verbose=True
)
# The agent will use the tool with parameters like:
# query="SELECT product_name, SUM(revenue) as total_revenue FROM sales GROUP BY product_name ORDER BY total_revenue DESC LIMIT 5"
# timeout=600
# Create a task for the agent
analysis_task = Task(
description="Query the sales database and identify the top 5 products by revenue for the last quarter.",
expected_output="A detailed analysis of the top 5 products by revenue.",
agent=data_analyst
)
# Run the task
crew = Crew(
agents=[data_analyst],
tasks=[analysis_task]
)
result = crew.kickoff()
```
## الميزات المتقدمة
### تجميع الاتصالات
تُطبّق `SnowflakeSearchTool` تجميع الاتصالات لتحسين الأداء من خلال إعادة استخدام اتصالات قاعدة البيانات. يمكنك التحكم في حجم المجمع بمعامل `pool_size`.
### إعادة المحاولة التلقائية
تُعيد الأداة تلقائياً محاولة الاستعلامات الفاشلة مع تراجع أسي. يمكنك تكوين سلوك إعادة المحاولة بمعاملات `max_retries` و `retry_delay`.
### التخزين المؤقت لنتائج الاستعلامات
لتحسين أداء الاستعلامات المتكررة، يمكن للأداة تخزين نتائج الاستعلامات مؤقتاً. هذه الميزة مفعّلة افتراضياً ولكن يمكن تعطيلها بتعيين `enable_caching=False`.
### مصادقة زوج المفاتيح
بالإضافة إلى مصادقة كلمة المرور، تدعم الأداة مصادقة زوج المفاتيح لتعزيز الأمان:
```python Code
config = SnowflakeConfig(
account="your_account",
user="your_username",
private_key_path="/path/to/your/private/key.p8",
warehouse="COMPUTE_WH",
database="your_database",
snowflake_schema="your_schema"
)
```
## معالجة الأخطاء
تتضمن `SnowflakeSearchTool` معالجة شاملة للأخطاء لمشكلات Snowflake الشائعة:
- فشل الاتصال
- انتهاء مهلة الاستعلام
- أخطاء المصادقة
- أخطاء قاعدة البيانات والمخطط
عند حدوث خطأ، ستحاول الأداة إعادة العملية (إذا تم تكوينها) وتوفير معلومات تفصيلية عن الخطأ.
## الخلاصة
توفر `SnowflakeSearchTool` طريقة قوية لدمج مستودعات بيانات Snowflake مع وكلاء CrewAI. مع ميزات مثل تجميع الاتصالات وإعادة المحاولة التلقائية والتخزين المؤقت للاستعلامات، تتيح وصولاً فعالاً وموثوقاً لبيانات المؤسسة. هذه الأداة مفيدة بشكل خاص لمهام تحليل البيانات وإعداد التقارير وذكاء الأعمال التي تتطلب الوصول إلى بيانات منظمة مخزنة في Snowflake.

View File

@@ -0,0 +1,168 @@
---
title: بحث متجهي Weaviate
description: أداة `WeaviateVectorSearchTool` مصممة للبحث في قاعدة بيانات Weaviate المتجهية عن مستندات متشابهة دلالياً باستخدام البحث الهجين.
icon: network-wired
mode: "wide"
---
## نظرة عامة
صُممت `WeaviateVectorSearchTool` خصيصاً لإجراء عمليات بحث دلالي داخل المستندات المخزنة في قاعدة بيانات Weaviate المتجهية. تتيح لك هذه الأداة العثور على مستندات متشابهة دلالياً لاستعلام معين، من خلال الاستفادة من قوة البحث المتجهي والبحث بالكلمات المفتاحية للحصول على نتائج بحث أكثر دقة وذات صلة بالسياق.
[Weaviate](https://weaviate.io/) هي قاعدة بيانات متجهية تخزن وتستعلم عن التضمينات المتجهية، مما يتيح إمكانيات البحث الدلالي.
## التثبيت
لدمج هذه الأداة في مشروعك، تحتاج إلى تثبيت عميل Weaviate:
```shell
uv add weaviate-client
```
## خطوات البدء
لاستخدام `WeaviateVectorSearchTool` بفعالية، اتبع هذه الخطوات:
1. **تثبيت الحزمة**: تأكد من تثبيت حزمتي `crewai[tools]` و `weaviate-client` في بيئة Python الخاصة بك.
2. **إعداد Weaviate**: قم بإعداد مجموعة Weaviate. يمكنك اتباع [وثائق Weaviate](https://weaviate.io/developers/wcs/manage-clusters/connect) للتعليمات.
3. **مفاتيح API**: احصل على عنوان URL لمجموعة Weaviate ومفتاح API.
4. **مفتاح OpenAI API**: تأكد من تعيين مفتاح OpenAI API في متغيرات البيئة كـ `OPENAI_API_KEY`.
## مثال
يوضح المثال التالي كيفية تهيئة الأداة وتنفيذ بحث:
```python Code
from crewai_tools import WeaviateVectorSearchTool
# Initialize the tool
tool = WeaviateVectorSearchTool(
collection_name='example_collections',
limit=3,
alpha=0.75,
weaviate_cluster_url="https://your-weaviate-cluster-url.com",
weaviate_api_key="your-weaviate-api-key",
)
@agent
def search_agent(self) -> Agent:
'''
This agent uses the WeaviateVectorSearchTool to search for
semantically similar documents in a Weaviate vector database.
'''
return Agent(
config=self.agents_config["search_agent"],
tools=[tool]
)
```
## المعاملات
تقبل `WeaviateVectorSearchTool` المعاملات التالية:
- **collection_name**: مطلوب. اسم المجموعة المراد البحث فيها.
- **weaviate_cluster_url**: مطلوب. عنوان URL لمجموعة Weaviate.
- **weaviate_api_key**: مطلوب. مفتاح API لمجموعة Weaviate.
- **limit**: اختياري. عدد النتائج المُرجعة. الافتراضي هو `3`.
- **alpha**: اختياري. يتحكم في الترجيح بين البحث المتجهي والبحث بالكلمات المفتاحية (BM25). alpha = 0 -> BM25 فقط، alpha = 1 -> بحث متجهي فقط. الافتراضي هو `0.75`.
- **vectorizer**: اختياري. المحوّل المتجهي المستخدم. إذا لم يُحدد، سيستخدم `text2vec_openai` مع نموذج `nomic-embed-text`.
- **generative_model**: اختياري. النموذج التوليدي المستخدم. إذا لم يُحدد، سيستخدم `gpt-4o` من OpenAI.
## التكوين المتقدم
يمكنك تخصيص المحوّل المتجهي والنموذج التوليدي المستخدمين في الأداة:
```python Code
from crewai_tools import WeaviateVectorSearchTool
from weaviate.classes.config import Configure
# Setup custom model for vectorizer and generative model
tool = WeaviateVectorSearchTool(
collection_name='example_collections',
limit=3,
alpha=0.75,
vectorizer=Configure.Vectorizer.text2vec_openai(model="nomic-embed-text"),
generative_model=Configure.Generative.openai(model="gpt-4o-mini"),
weaviate_cluster_url="https://your-weaviate-cluster-url.com",
weaviate_api_key="your-weaviate-api-key",
)
```
## تحميل المستندات مسبقاً
يمكنك تحميل قاعدة بيانات Weaviate بالمستندات مسبقاً قبل استخدام الأداة:
```python Code
import os
from crewai_tools import WeaviateVectorSearchTool
import weaviate
from weaviate.classes.init import Auth
# Connect to Weaviate
client = weaviate.connect_to_weaviate_cloud(
cluster_url="https://your-weaviate-cluster-url.com",
auth_credentials=Auth.api_key("your-weaviate-api-key"),
headers={"X-OpenAI-Api-Key": "your-openai-api-key"}
)
# Get or create collection
test_docs = client.collections.get("example_collections")
if not test_docs:
test_docs = client.collections.create(
name="example_collections",
vectorizer_config=Configure.Vectorizer.text2vec_openai(model="nomic-embed-text"),
generative_config=Configure.Generative.openai(model="gpt-4o"),
)
# Load documents
docs_to_load = os.listdir("knowledge")
with test_docs.batch.dynamic() as batch:
for d in docs_to_load:
with open(os.path.join("knowledge", d), "r") as f:
content = f.read()
batch.add_object(
{
"content": content,
"year": d.split("_")[0],
}
)
# Initialize the tool
tool = WeaviateVectorSearchTool(
collection_name='example_collections',
limit=3,
alpha=0.75,
weaviate_cluster_url="https://your-weaviate-cluster-url.com",
weaviate_api_key="your-weaviate-api-key",
)
```
## مثال على التكامل مع الوكيل
إليك كيفية دمج `WeaviateVectorSearchTool` مع وكيل CrewAI:
```python Code
from crewai import Agent
from crewai_tools import WeaviateVectorSearchTool
# Initialize the tool
weaviate_tool = WeaviateVectorSearchTool(
collection_name='example_collections',
limit=3,
alpha=0.75,
weaviate_cluster_url="https://your-weaviate-cluster-url.com",
weaviate_api_key="your-weaviate-api-key",
)
# Create an agent with the tool
rag_agent = Agent(
name="rag_agent",
role="You are a helpful assistant that can answer questions with the help of the WeaviateVectorSearchTool.",
llm="gpt-4o-mini",
tools=[weaviate_tool],
)
```
## الخلاصة
توفر `WeaviateVectorSearchTool` طريقة قوية للبحث عن مستندات متشابهة دلالياً في قاعدة بيانات Weaviate المتجهية. من خلال الاستفادة من التضمينات المتجهية، تتيح نتائج بحث أكثر دقة وذات صلة بالسياق مقارنة بعمليات البحث التقليدية القائمة على الكلمات المفتاحية. هذه الأداة مفيدة بشكل خاص للتطبيقات التي تتطلب العثور على المعلومات بناءً على المعنى بدلاً من التطابق الحرفي.

View File

@@ -0,0 +1,76 @@
---
title: بحث RAG في CSV
description: أداة `CSVSearchTool` هي أداة RAG (الاسترجاع المعزز بالتوليد) قوية مصممة لعمليات البحث الدلالي داخل محتوى ملف CSV.
icon: file-csv
mode: "wide"
---
# `CSVSearchTool`
<Note>
**تجريبية**: لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
تُستخدم هذه الأداة لإجراء بحث RAG (الاسترجاع المعزز بالتوليد) داخل محتوى ملف CSV. تتيح للمستخدمين البحث دلالياً عن استعلامات في محتوى ملف CSV محدد. هذه الميزة مفيدة بشكل خاص لاستخراج المعلومات من مجموعات بيانات CSV الكبيرة حيث قد تكون طرق البحث التقليدية غير فعالة. جميع الأدوات التي تحتوي على "Search" في اسمها، بما في ذلك CSVSearchTool، هي أدوات RAG مصممة للبحث في مصادر بيانات مختلفة.
## التثبيت
قم بتثبيت حزمة crewai_tools
```shell
pip install 'crewai[tools]'
```
## مثال
```python Code
from crewai_tools import CSVSearchTool
# Initialize the tool with a specific CSV file.
# This setup allows the agent to only search the given CSV file.
tool = CSVSearchTool(csv='path/to/your/csvfile.csv')
# OR
# Initialize the tool without a specific CSV file.
# Agent will need to provide the CSV path at runtime.
tool = CSVSearchTool()
```
## المعاملات
يمكن استخدام المعاملات التالية لتخصيص سلوك `CSVSearchTool`:
| المعامل | النوع | الوصف |
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
| **csv** | `string` | _اختياري_. مسار ملف CSV المراد البحث فيه. هذا معامل إلزامي إذا تمت تهيئة الأداة بدون ملف CSV محدد؛ وإلا فهو اختياري. |
## النموذج والتضمينات المخصصة
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
from chromadb.config import Settings
tool = CSVSearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # or "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```

View File

@@ -0,0 +1,52 @@
---
title: قراءة المجلدات
description: أداة `DirectoryReadTool` هي أداة مساعدة قوية مصممة لتوفير قائمة شاملة بمحتويات المجلد.
icon: folder-tree
mode: "wide"
---
# `DirectoryReadTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
أداة DirectoryReadTool هي أداة مساعدة قوية مصممة لتوفير قائمة شاملة بمحتويات المجلد. يمكنها التنقل بشكل متكرر عبر المجلد المحدد، مما يوفر للمستخدمين تعداداً مفصلاً لجميع الملفات، بما في ذلك تلك الموجودة داخل المجلدات الفرعية. هذه الأداة ضرورية للمهام التي تتطلب جرداً شاملاً لهياكل المجلدات أو للتحقق من تنظيم الملفات داخل المجلدات.
## التثبيت
لاستخدام DirectoryReadTool في مشروعك، قم بتثبيت حزمة `crewai_tools`. إذا لم تكن هذه الحزمة جزءاً من بيئتك بعد، يمكنك تثبيتها باستخدام pip بالأمر التالي:
```shell
pip install 'crewai[tools]'
```
يُثبّت هذا الأمر أحدث إصدار من حزمة `crewai_tools`، مما يمنح الوصول إلى DirectoryReadTool بالإضافة إلى أدوات مساعدة أخرى.
## مثال
استخدام DirectoryReadTool بسيط ومباشر. يوضح مقتطف الكود التالي كيفية إعدادها واستخدام الأداة لعرض محتويات مجلد محدد:
```python Code
from crewai_tools import DirectoryReadTool
# Initialize the tool so the agent can read any directory's content
# it learns about during execution
tool = DirectoryReadTool()
# OR
# Initialize the tool with a specific directory,
# so the agent can only read the content of the specified directory
tool = DirectoryReadTool(directory='/path/to/your/directory')
```
## المعاملات
يمكن استخدام المعاملات التالية لتخصيص سلوك `DirectoryReadTool`:
| المعامل | النوع | الوصف |
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
| **directory** | `string` | _اختياري_. معامل يحدد المسار إلى المجلد الذي ترغب في عرض محتوياته. يقبل كلاً من المسارات المطلقة والنسبية، ويوجه الأداة إلى المجلد المطلوب لعرض المحتوى. |

View File

@@ -0,0 +1,70 @@
---
title: بحث RAG في المجلدات
description: أداة `DirectorySearchTool` هي أداة RAG (الاسترجاع المعزز بالتوليد) قوية مصممة لعمليات البحث الدلالي داخل محتوى المجلد.
icon: address-book
mode: "wide"
---
# `DirectorySearchTool`
<Note>
**تجريبية**: أداة DirectorySearchTool قيد التطوير المستمر. قد تُضاف ميزات أو تُزال، وقد يتغير الأداء بشكل غير متوقع أثناء تحسين الأداة.
</Note>
## الوصف
تتيح DirectorySearchTool البحث الدلالي داخل محتوى المجلدات المحددة، مستفيدة من منهجية الاسترجاع المعزز بالتوليد (RAG) للتنقل الفعال بين الملفات. صُممت لتكون مرنة، حيث تسمح للمستخدمين بتحديد مجلدات البحث ديناميكياً أثناء التشغيل أو تعيين مجلد ثابت أثناء الإعداد الأولي.
## التثبيت
لاستخدام DirectorySearchTool، ابدأ بتثبيت حزمة crewai_tools. نفّذ الأمر التالي في الطرفية:
```shell
pip install 'crewai[tools]'
```
## التهيئة والاستخدام
قم باستيراد DirectorySearchTool من حزمة `crewai_tools` للبدء. يمكنك تهيئة الأداة بدون تحديد مجلد، مما يتيح تعيين مجلد البحث أثناء التشغيل. بدلاً من ذلك، يمكن تهيئة الأداة بمجلد محدد مسبقاً.
```python Code
from crewai_tools import DirectorySearchTool
# For dynamic directory specification at runtime
tool = DirectorySearchTool()
# For fixed directory searches
tool = DirectorySearchTool(directory='/path/to/directory')
```
## المعاملات
- `directory`: معامل نصي يحدد مجلد البحث. هذا اختياري أثناء التهيئة لكنه مطلوب لعمليات البحث إذا لم يتم تعيينه مبدئياً.
## النموذج والتضمينات المخصصة
تستخدم DirectorySearchTool افتراضياً OpenAI للتضمينات والتلخيص. تتضمن خيارات التخصيص لهذه الإعدادات تغيير مزود النموذج والتكوين، مما يعزز المرونة للمستخدمين المتقدمين.
```python Code
from chromadb.config import Settings
tool = DirectorySearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # or "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```

View File

@@ -0,0 +1,77 @@
---
title: بحث RAG في DOCX
description: أداة `DOCXSearchTool` هي أداة RAG مصممة للبحث الدلالي داخل مستندات DOCX.
icon: file-word
mode: "wide"
---
# `DOCXSearchTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
أداة `DOCXSearchTool` هي أداة RAG مصممة للبحث الدلالي داخل مستندات DOCX. تتيح للمستخدمين البحث بفعالية واستخراج المعلومات ذات الصلة من ملفات DOCX باستخدام عمليات بحث قائمة على الاستعلامات. هذه الأداة لا تُقدَّر بثمن لمهام تحليل البيانات وإدارة المعلومات والبحث، حيث تبسط عملية العثور على معلومات محددة داخل مجموعات مستندات كبيرة.
## التثبيت
قم بتثبيت حزمة crewai_tools بتنفيذ الأمر التالي في الطرفية:
```shell
uv pip install docx2txt 'crewai[tools]'
```
## مثال
يوضح المثال التالي تهيئة DOCXSearchTool للبحث داخل محتوى أي ملف DOCX أو بمسار ملف DOCX محدد.
```python Code
from crewai_tools import DOCXSearchTool
# Initialize the tool to search within any DOCX file's content
tool = DOCXSearchTool()
# OR
# Initialize the tool with a specific DOCX file,
# so the agent can only search the content of the specified DOCX file
tool = DOCXSearchTool(docx='path/to/your/document.docx')
```
## المعاملات
يمكن استخدام المعاملات التالية لتخصيص سلوك `DOCXSearchTool`:
| المعامل | النوع | الوصف |
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
| **docx** | `string` | _اختياري_. معامل يحدد مسار ملف DOCX المراد البحث فيه. إذا لم يُقدَّم أثناء التهيئة، تسمح الأداة بتحديد مسار محتوى أي ملف DOCX للبحث لاحقاً. |
## النموذج والتضمينات المخصصة
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
from chromadb.config import Settings
tool = DOCXSearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # or "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```

View File

@@ -0,0 +1,42 @@
---
title: قراءة الملفات
description: أداة `FileReadTool` مصممة لقراءة الملفات من نظام الملفات المحلي.
icon: folders
mode: "wide"
---
## نظرة عامة
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
تمثل أداة FileReadTool مفهومياً مجموعة من الوظائف ضمن حزمة crewai_tools تهدف إلى تسهيل قراءة الملفات واسترجاع المحتوى. تتضمن هذه المجموعة أدوات لمعالجة ملفات نصية دفعية، وقراءة ملفات التكوين أثناء التشغيل، واستيراد البيانات للتحليلات. تدعم مجموعة متنوعة من صيغ الملفات النصية مثل `.txt` و `.csv` و `.json` وغيرها. اعتماداً على نوع الملف، توفر المجموعة وظائف متخصصة، مثل تحويل محتوى JSON إلى قاموس Python لسهولة الاستخدام.
## التثبيت
لاستخدام الوظائف المنسوبة سابقاً لأداة FileReadTool، قم بتثبيت حزمة crewai_tools:
```shell
pip install 'crewai[tools]'
```
## مثال على الاستخدام
للبدء مع FileReadTool:
```python Code
from crewai_tools import FileReadTool
# Initialize the tool to read any files the agents knows or lean the path for
file_read_tool = FileReadTool()
# OR
# Initialize the tool with a specific file path, so the agent can only read the content of the specified file
file_read_tool = FileReadTool(file_path='path/to/your/file.txt')
```
## المعاملات
- `file_path`: مسار الملف المراد قراءته. يقبل كلاً من المسارات المطلقة والنسبية. تأكد من وجود الملف وأن لديك الصلاحيات اللازمة للوصول إليه.

View File

@@ -0,0 +1,47 @@
---
title: كتابة الملفات
description: أداة `FileWriterTool` مصممة لكتابة المحتوى في الملفات.
icon: file-pen
mode: "wide"
---
# `FileWriterTool`
## الوصف
أداة `FileWriterTool` هي مكوّن من حزمة crewai_tools، مصممة لتبسيط عملية كتابة المحتوى في الملفات مع توافق عبر المنصات (Windows و Linux و macOS). تكون مفيدة بشكل خاص في سيناريوهات مثل توليد التقارير وحفظ السجلات وإنشاء ملفات التكوين والمزيد. تتعامل هذه الأداة مع اختلافات المسارات عبر أنظمة التشغيل، وتدعم ترميز UTF-8، وتنشئ المجلدات تلقائياً إذا لم تكن موجودة، مما يسهل تنظيم المخرجات بشكل موثوق عبر المنصات المختلفة.
## التثبيت
قم بتثبيت حزمة crewai_tools لاستخدام `FileWriterTool` في مشاريعك:
```shell
pip install 'crewai[tools]'
```
## مثال
للبدء مع `FileWriterTool`:
```python Code
from crewai_tools import FileWriterTool
# Initialize the tool
file_writer_tool = FileWriterTool()
# Write content to a file in a specified directory
result = file_writer_tool._run('example.txt', 'This is a test content.', 'test_directory')
print(result)
```
## المعاملات
- `filename`: اسم الملف الذي تريد إنشاءه أو الكتابة فوقه.
- `content`: المحتوى المراد كتابته في الملف.
- `directory` (اختياري): مسار المجلد حيث سيتم إنشاء الملف. الافتراضي هو المجلد الحالي (`.`). إذا لم يكن المجلد موجوداً، سيتم إنشاؤه.
## الخلاصة
من خلال دمج `FileWriterTool` في أطقمك، يمكن للوكلاء كتابة المحتوى في الملفات بشكل موثوق عبر أنظمة التشغيل المختلفة. هذه الأداة ضرورية للمهام التي تتطلب حفظ بيانات المخرجات وإنشاء أنظمة ملفات منظمة والتعامل مع عمليات الملفات عبر المنصات. يُوصى بها بشكل خاص لمستخدمي Windows الذين قد يواجهون مشكلات في كتابة الملفات مع عمليات ملفات Python القياسية.
من خلال الالتزام بإرشادات الإعداد والاستخدام المقدمة، فإن دمج هذه الأداة في المشاريع أمر مباشر ويضمن سلوكاً متسقاً لكتابة الملفات عبر جميع المنصات.

View File

@@ -0,0 +1,75 @@
---
title: بحث RAG في JSON
description: أداة `JSONSearchTool` مصممة للبحث في ملفات JSON وإرجاع النتائج الأكثر صلة.
icon: file-code
mode: "wide"
---
# `JSONSearchTool`
<Note>
أداة JSONSearchTool حالياً في مرحلة تجريبية. هذا يعني أن الأداة قيد التطوير
النشط، وقد يواجه المستخدمون سلوكاً غير متوقع أو تغييرات. نشجع بشدة التعليقات
حول أي مشكلات أو اقتراحات للتحسين.
</Note>
## الوصف
صُممت أداة JSONSearchTool لتسهيل عمليات البحث الفعالة والدقيقة داخل محتوى ملفات JSON. تستخدم آلية بحث RAG (الاسترجاع والتوليد)، مما يتيح للمستخدمين تحديد مسار JSON لعمليات بحث مستهدفة داخل ملف JSON معين. تحسّن هذه القدرة بشكل ملحوظ دقة نتائج البحث وصلتها.
## التثبيت
لتثبيت JSONSearchTool، استخدم أمر pip التالي:
```shell
pip install 'crewai[tools]'
```
## أمثلة على الاستخدام
فيما يلي أمثلة محدّثة حول كيفية استخدام JSONSearchTool بفعالية للبحث داخل ملفات JSON. تأخذ هذه الأمثلة بعين الاعتبار التنفيذ الحالي وأنماط الاستخدام المحددة في قاعدة الكود.
```python Code
from crewai_tools import JSONSearchTool
# General JSON content search
# This approach is suitable when the JSON path is either known beforehand or can be dynamically identified.
tool = JSONSearchTool()
# Restricting search to a specific JSON file
# Use this initialization method when you want to limit the search scope to a specific JSON file.
tool = JSONSearchTool(json_path='./path/to/your/file.json')
```
## المعاملات
- `json_path` (str, اختياري): يحدد مسار ملف JSON المراد البحث فيه. هذا المعامل غير مطلوب إذا تمت تهيئة الأداة لبحث عام. عند تقديمه، يقتصر البحث على ملف JSON المحدد.
## خيارات التكوين
تدعم أداة JSONSearchTool تخصيصاً واسعاً من خلال قاموس تكوين. يتيح هذا للمستخدمين اختيار نماذج مختلفة للتضمينات والتلخيص بناءً على متطلباتهم.
```python Code
tool = JSONSearchTool(
config={
"llm": {
"provider": "ollama", # Other options include google, openai, anthropic, llama2, etc.
"config": {
"model": "llama2",
# Additional optional configurations can be specified here.
# temperature=0.5,
# top_p=1,
# stream=true,
},
},
"embedding_model": {
"provider": "google-generativeai", # or openai, ollama, ...
"config": {
"model_name": "gemini-embedding-001",
"task_type": "RETRIEVAL_DOCUMENT",
# Further customization options can be added here.
},
},
}
)
```

View File

@@ -0,0 +1,72 @@
---
title: بحث RAG في MDX
description: أداة `MDXSearchTool` مصممة للبحث في ملفات MDX وإرجاع النتائج الأكثر صلة.
icon: markdown
mode: "wide"
---
# `MDXSearchTool`
<Note>
أداة MDXSearchTool في تطوير مستمر. قد تُضاف ميزات أو تُزال، وقد تتغير الوظائف بشكل غير متوقع أثناء تحسين الأداة.
</Note>
## الوصف
أداة البحث في MDX هي مكوّن من حزمة `crewai_tools` يهدف إلى تسهيل استخراج لغة Markdown المتقدمة. تتيح للمستخدمين البحث بفعالية واستخراج المعلومات ذات الصلة من ملفات MD باستخدام عمليات بحث قائمة على الاستعلامات. هذه الأداة لا تُقدَّر بثمن لمهام تحليل البيانات وإدارة المعلومات والبحث، حيث تبسط عملية العثور على معلومات محددة داخل مجموعات مستندات كبيرة.
## التثبيت
قبل استخدام أداة البحث في MDX، تأكد من تثبيت حزمة `crewai_tools`. إذا لم تكن مثبتة، يمكنك تثبيتها بالأمر التالي:
```shell
pip install 'crewai[tools]'
```
## مثال على الاستخدام
لاستخدام أداة البحث في MDX، يجب أولاً إعداد متغيرات البيئة اللازمة. ثم قم بدمج الأداة في مشروع crewAI الخاص بك لبدء أبحاث السوق. فيما يلي مثال أساسي لكيفية القيام بذلك:
```python Code
from crewai_tools import MDXSearchTool
# Initialize the tool to search any MDX content it learns about during execution
tool = MDXSearchTool()
# OR
# Initialize the tool with a specific MDX file path for an exclusive search within that document
tool = MDXSearchTool(mdx='path/to/your/document.mdx')
```
## المعاملات
- mdx: **اختياري**. يحدد مسار ملف MDX للبحث. يمكن تقديمه أثناء التهيئة.
## تخصيص النموذج والتضمينات
تستخدم الأداة افتراضياً OpenAI للتضمينات والتلخيص. للتخصيص، استخدم قاموس تكوين كما هو موضح أدناه:
```python Code
from chromadb.config import Settings
tool = MDXSearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # or "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```

View File

@@ -0,0 +1,88 @@
---
title: أداة OCR
description: تستخرج `OCRTool` النص من الصور المحلية أو عناوين URL للصور باستخدام نموذج LLM مزود بالرؤية.
icon: image
mode: "wide"
---
# `OCRTool`
## الوصف
استخراج النص من الصور (مسار محلي أو عنوان URL). تستخدم نموذج LLM مزوداً بالرؤية عبر واجهة LLM الخاصة بـ CrewAI.
## التثبيت
لا حاجة لتثبيت إضافي بخلاف `crewai-tools`. تأكد من أن النموذج المحدد يدعم الرؤية.
## المعاملات
### معاملات التشغيل
- `image_path_url` (str, مطلوب): مسار صورة محلية أو عنوان URL بروتوكول HTTP(S).
## أمثلة
### الاستخدام المباشر
```python Code
from crewai_tools import OCRTool
print(OCRTool().run(image_path_url="/tmp/receipt.png"))
```
### مع وكيل
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import OCRTool
ocr = OCRTool()
agent = Agent(
role="OCR",
goal="Extract text",
tools=[ocr],
)
task = Task(
description="Extract text from https://example.com/invoice.jpg",
expected_output="All detected text in plain text",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```
## ملاحظات
- تأكد من أن النموذج المحدد يدعم مدخلات الصور.
- للصور الكبيرة، فكر في تصغير الحجم لتقليل استهلاك الرموز.
- يمكنك تمرير نسخة LLM محددة للأداة (مثل `LLM(model="gpt-4o")`) إذا لزم الأمر، وفقاً لتوجيهات README.
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import OCRTool
tool = OCRTool()
agent = Agent(
role="OCR Specialist",
goal="Extract text from images",
backstory="Visionenabled analyst",
tools=[tool],
verbose=True,
)
task = Task(
description="Extract text from https://example.com/receipt.png",
expected_output="All detected text in plain text",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```

View File

@@ -0,0 +1,97 @@
---
title: "نظرة عامة"
description: "قراءة وكتابة والبحث في صيغ ملفات متنوعة باستخدام أدوات معالجة المستندات من CrewAI"
icon: "face-smile"
mode: "wide"
---
تتيح هذه الأدوات لوكلائك العمل مع صيغ ملفات وأنواع مستندات متنوعة. من قراءة ملفات PDF إلى معالجة بيانات JSON، تتعامل هذه الأدوات مع جميع احتياجات معالجة المستندات الخاصة بك.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة قراءة الملفات" icon="folders" href="/ar/tools/file-document/filereadtool">
قراءة المحتوى من أي نوع ملف بما في ذلك النصوص و Markdown والمزيد.
</Card>
<Card title="أداة كتابة الملفات" icon="file-pen" href="/ar/tools/file-document/filewritetool">
كتابة المحتوى في الملفات وإنشاء مستندات جديدة وحفظ البيانات المعالجة.
</Card>
<Card title="أداة بحث PDF" icon="file-pdf" href="/ar/tools/file-document/pdfsearchtool">
البحث واستخراج محتوى نصي من مستندات PDF بكفاءة.
</Card>
<Card title="أداة بحث DOCX" icon="file-word" href="/ar/tools/file-document/docxsearchtool">
البحث في مستندات Microsoft Word واستخراج المحتوى ذي الصلة.
</Card>
<Card title="أداة بحث JSON" icon="brackets-curly" href="/ar/tools/file-document/jsonsearchtool">
تحليل والبحث في ملفات JSON بإمكانيات استعلام متقدمة.
</Card>
<Card title="أداة بحث CSV" icon="table" href="/ar/tools/file-document/csvsearchtool">
معالجة والبحث في ملفات CSV واستخراج صفوف وأعمدة محددة.
</Card>
<Card title="أداة بحث XML" icon="code" href="/ar/tools/file-document/xmlsearchtool">
تحليل ملفات XML والبحث عن عناصر وخصائص محددة.
</Card>
<Card title="أداة بحث MDX" icon="markdown" href="/ar/tools/file-document/mdxsearchtool">
البحث في ملفات MDX واستخراج المحتوى من الوثائق.
</Card>
<Card title="أداة بحث TXT" icon="file-lines" href="/ar/tools/file-document/txtsearchtool">
البحث في ملفات النص العادي بإمكانيات مطابقة الأنماط.
</Card>
<Card title="أداة بحث المجلدات" icon="folder-open" href="/ar/tools/file-document/directorysearchtool">
البحث عن الملفات والمجلدات داخل هياكل المجلدات.
</Card>
<Card title="أداة قراءة المجلدات" icon="folder" href="/ar/tools/file-document/directoryreadtool">
قراءة وعرض محتويات المجلدات وهياكل الملفات والبيانات الوصفية.
</Card>
<Card title="أداة OCR" icon="image" href="/ar/tools/file-document/ocrtool">
استخراج النص من الصور (ملفات محلية أو عناوين URL) باستخدام نموذج LLM مزود بالرؤية.
</Card>
<Card title="أداة كتابة نص PDF" icon="file-pdf" href="/ar/tools/file-document/pdf-text-writing-tool">
كتابة نص في إحداثيات محددة في ملفات PDF، مع خطوط مخصصة اختيارية.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **معالجة المستندات**: استخراج وتحليل المحتوى من صيغ ملفات متنوعة
- **استيراد البيانات**: قراءة بيانات منظمة من ملفات CSV و JSON و XML
- **بحث المحتوى**: العثور على معلومات محددة داخل مجموعات مستندات كبيرة
- **إدارة الملفات**: تنظيم ومعالجة الملفات والمجلدات
- **تصدير البيانات**: حفظ النتائج المعالجة في صيغ ملفات متنوعة
## **مثال للبدء السريع**
```python
from crewai_tools import FileReadTool, PDFSearchTool, JSONSearchTool
# Create tools
file_reader = FileReadTool()
pdf_searcher = PDFSearchTool()
json_processor = JSONSearchTool()
# Add to your agent
agent = Agent(
role="Document Analyst",
tools=[file_reader, pdf_searcher, json_processor],
goal="Process and analyze various document types"
)
```
## **نصائح لمعالجة المستندات**
- **صلاحيات الملفات**: تأكد من أن وكيلك لديه صلاحيات القراءة/الكتابة المناسبة
- **الملفات الكبيرة**: فكر في التقسيم إلى أجزاء للمستندات الكبيرة جداً
- **دعم الصيغ**: راجع وثائق الأداة لمعرفة صيغ الملفات المدعومة
- **معالجة الأخطاء**: طبّق معالجة أخطاء مناسبة للملفات التالفة أو التي يتعذر الوصول إليها

View File

@@ -0,0 +1,75 @@
---
title: أداة كتابة نص PDF
description: تكتب `PDFTextWritingTool` نصاً في مواضع محددة في ملف PDF، مع دعم الخطوط المخصصة.
icon: file-pdf
mode: "wide"
---
# `PDFTextWritingTool`
## الوصف
كتابة نص في إحداثيات دقيقة على صفحة PDF، مع إمكانية تضمين خط TrueType مخصص اختيارياً.
## المعاملات
### معاملات التشغيل
- `pdf_path` (str, مطلوب): مسار ملف PDF المدخل.
- `text` (str, مطلوب): النص المراد إضافته.
- `position` (tuple[int, int], مطلوب): إحداثيات `(x, y)`.
- `font_size` (int, الافتراضي `12`)
- `font_color` (str, الافتراضي `"0 0 0 rg"`)
- `font_name` (str, الافتراضي `"F1"`)
- `font_file` (str, اختياري): مسار ملف `.ttf`.
- `page_number` (int, الافتراضي `0`)
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import PDFTextWritingTool
tool = PDFTextWritingTool()
agent = Agent(
role="PDF Editor",
goal="Annotate PDFs",
backstory="Documentation specialist",
tools=[tool],
verbose=True,
)
task = Task(
description="Write 'CONFIDENTIAL' at (72, 720) on page 1 of ./sample.pdf",
expected_output="Confirmation message",
agent=agent,
)
crew = Crew(
agents=[agent],
tasks=[task],
verbose=True,
)
result = crew.kickoff()
```
### الاستخدام المباشر
```python Code
from crewai_tools import PDFTextWritingTool
PDFTextWritingTool().run(
pdf_path="./input.pdf",
text="CONFIDENTIAL",
position=(72, 720),
font_size=18,
page_number=0,
)
```
## نصائح
- نقطة أصل الإحداثيات هي الزاوية السفلية اليسرى.
- إذا كنت تستخدم خطاً مخصصاً (`font_file`)، تأكد من أنه ملف `.ttf` صالح.

View File

@@ -0,0 +1,107 @@
---
title: بحث RAG في PDF
description: أداة `PDFSearchTool` مصممة للبحث في ملفات PDF وإرجاع النتائج الأكثر صلة.
icon: file-pdf
mode: "wide"
---
# `PDFSearchTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
أداة PDFSearchTool هي أداة RAG مصممة لعمليات البحث الدلالي داخل محتوى PDF. تتيح إدخال استعلام بحث ومستند PDF، مستفيدة من تقنيات بحث متقدمة للعثور على المحتوى ذي الصلة بكفاءة. هذه القدرة تجعلها مفيدة بشكل خاص لاستخراج معلومات محددة من ملفات PDF الكبيرة بسرعة.
## التثبيت
للبدء مع أداة PDFSearchTool، تأكد أولاً من تثبيت حزمة crewai_tools بالأمر التالي:
```shell
pip install 'crewai[tools]'
```
## مثال
إليك كيفية استخدام PDFSearchTool للبحث داخل مستند PDF:
```python Code
from crewai_tools import PDFSearchTool
# Initialize the tool allowing for any PDF content search if the path is provided during execution
tool = PDFSearchTool()
# OR
# Initialize the tool with a specific PDF path for exclusive search within that document
tool = PDFSearchTool(pdf='path/to/your/document.pdf')
```
## المعاملات
- `pdf`: **اختياري** مسار ملف PDF للبحث. يمكن تقديمه عند التهيئة أو ضمن معاملات طريقة `run`. إذا قُدم عند التهيئة، تقتصر الأداة في بحثها على المستند المحدد.
## النموذج والتضمينات المخصصة
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي. ملاحظة: قاعدة بيانات متجهية مطلوبة لأن التضمينات المولّدة يجب تخزينها والاستعلام عنها من قاعدة بيانات متجهية.
```python Code
from crewai_tools import PDFSearchTool
# - embedding_model (required): choose provider + provider-specific config
# - vectordb (required): choose vector DB and pass its config
tool = PDFSearchTool(
config={
"embedding_model": {
# Supported providers: "openai", "azure", "google-generativeai", "google-vertex",
# "voyageai", "cohere", "huggingface", "jina", "sentence-transformer",
# "text2vec", "ollama", "openclip", "instructor", "onnx", "roboflow", "watsonx", "custom"
"provider": "openai", # or: "google-generativeai", "cohere", "ollama", ...
"config": {
# Model identifier for the chosen provider. "model" will be auto-mapped to "model_name" internally.
"model": "text-embedding-3-small",
# Optional: API key. If omitted, the tool will use provider-specific env vars
# (e.g., OPENAI_API_KEY or EMBEDDINGS_OPENAI_API_KEY for OpenAI).
# "api_key": "sk-...",
# Provider-specific examples:
# --- Google Generative AI ---
# (Set provider="google-generativeai" above)
# "model_name": "gemini-embedding-001",
# "task_type": "RETRIEVAL_DOCUMENT",
# "title": "Embeddings",
# --- Cohere ---
# (Set provider="cohere" above)
# "model": "embed-english-v3.0",
# --- Ollama (local) ---
# (Set provider="ollama" above)
# "model": "nomic-embed-text",
},
},
"vectordb": {
"provider": "chromadb", # or "qdrant"
"config": {
# For ChromaDB: pass "settings" (chromadb.config.Settings) or rely on defaults.
# Example (uncomment and import):
# from chromadb.config import Settings
# "settings": Settings(
# persist_directory="/content/chroma",
# allow_reset=True,
# is_persistent=True,
# ),
# For Qdrant: pass "vectors_config" (qdrant_client.models.VectorParams).
# Example (uncomment and import):
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
# Note: collection name is controlled by the tool (default: "rag_tool_collection"), not set here.
}
},
}
)
```

View File

@@ -0,0 +1,89 @@
---
title: بحث RAG في TXT
description: أداة `TXTSearchTool` مصممة لإجراء بحث RAG (الاسترجاع المعزز بالتوليد) داخل محتوى ملف نصي.
icon: file-lines
mode: "wide"
---
## نظرة عامة
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
تُستخدم هذه الأداة لإجراء بحث RAG (الاسترجاع المعزز بالتوليد) داخل محتوى ملف نصي. تتيح البحث الدلالي عن استعلام داخل محتوى ملف نصي محدد، مما يجعلها مورداً لا يُقدَّر بثمن لاستخراج المعلومات بسرعة أو العثور على أقسام محددة من النص بناءً على الاستعلام المقدم.
## التثبيت
لاستخدام `TXTSearchTool`، تحتاج أولاً إلى تثبيت حزمة `crewai_tools`. يمكن القيام بذلك باستخدام pip، مدير الحزم لـ Python. افتح الطرفية أو موجه الأوامر وأدخل الأمر التالي:
```shell
pip install 'crewai[tools]'
```
سيقوم هذا الأمر بتنزيل وتثبيت TXTSearchTool مع أي تبعيات ضرورية.
## مثال
يوضح المثال التالي كيفية استخدام TXTSearchTool للبحث داخل ملف نصي. يعرض هذا المثال كلاً من تهيئة الأداة بملف نصي محدد والبحث اللاحق داخل محتوى ذلك الملف.
```python Code
from crewai_tools import TXTSearchTool
# Initialize the tool to search within any text file's content
# the agent learns about during its execution
tool = TXTSearchTool()
# OR
# Initialize the tool with a specific text file,
# so the agent can search within the given text file's content
tool = TXTSearchTool(txt='path/to/text/file.txt')
```
## المعاملات
- `txt` (str): **اختياري**. مسار الملف النصي المراد البحث فيه. هذا المعامل مطلوب فقط إذا لم يتم تهيئة الأداة بملف نصي محدد؛ وإلا سيتم إجراء البحث داخل الملف النصي المقدم مبدئياً.
## النموذج والتضمينات المخصصة
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
from chromadb.config import Settings
tool = TXTSearchTool(
config={
# Required: embeddings provider + config
"embedding_model": {
"provider": "openai", # or google-generativeai, cohere, ollama, ...
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...", # optional if env var is set (e.g., OPENAI_API_KEY or EMBEDDINGS_OPENAI_API_KEY)
# Provider examples:
# Google → model_name: "gemini-embedding-001", task_type: "RETRIEVAL_DOCUMENT"
# Cohere → model: "embed-english-v3.0"
# Ollama → model: "nomic-embed-text"
},
},
# Required: vector database config
"vectordb": {
"provider": "chromadb", # or "qdrant"
"config": {
# Chroma settings (optional persistence)
# "settings": Settings(
# persist_directory="/content/chroma",
# allow_reset=True,
# is_persistent=True,
# ),
# Qdrant vector params example:
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
# Note: collection name is controlled by the tool (default: "rag_tool_collection").
}
},
}
)
```

View File

@@ -0,0 +1,74 @@
---
title: بحث RAG في XML
description: أداة `XMLSearchTool` مصممة لإجراء بحث RAG (الاسترجاع المعزز بالتوليد) داخل محتوى ملف XML.
icon: file-xml
mode: "wide"
---
# `XMLSearchTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
أداة XMLSearchTool هي أداة RAG متطورة مصممة لإجراء عمليات بحث دلالي داخل ملفات XML. مثالية للمستخدمين الذين يحتاجون إلى تحليل واستخراج المعلومات من محتوى XML بكفاءة، تدعم هذه الأداة إدخال استعلام بحث ومسار ملف XML اختياري. من خلال تحديد مسار XML، يمكن للمستخدمين استهداف بحثهم بدقة أكبر نحو محتوى ذلك الملف، وبالتالي الحصول على نتائج بحث أكثر صلة.
## التثبيت
للبدء باستخدام XMLSearchTool، يجب أولاً تثبيت حزمة crewai_tools. يمكن القيام بذلك بسهولة بالأمر التالي:
```shell
pip install 'crewai[tools]'
```
## مثال
فيما يلي مثالان يوضحان كيفية استخدام XMLSearchTool. المثال الأول يوضح البحث داخل ملف XML محدد، بينما يوضح المثال الثاني بدء بحث بدون تحديد مسار XML مسبقاً، مما يوفر مرونة في نطاق البحث.
```python Code
from crewai_tools import XMLSearchTool
# Allow agents to search within any XML file's content
#as it learns about their paths during execution
tool = XMLSearchTool()
# OR
# Initialize the tool with a specific XML file path
#for exclusive search within that document
tool = XMLSearchTool(xml='path/to/your/xmlfile.xml')
```
## المعاملات
- `xml`: مسار ملف XML المراد البحث فيه. هذا معامل اختياري أثناء تهيئة الأداة ولكن يجب تقديمه إما عند التهيئة أو كجزء من معاملات طريقة `run` لتنفيذ البحث.
## النموذج والتضمينات المخصصة
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
from chromadb.config import Settings
tool = XMLSearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # or "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```

View File

@@ -0,0 +1,188 @@
---
title: أداة استدعاء وكيل Bedrock
description: تتيح لوكلاء CrewAI استدعاء وكلاء Amazon Bedrock والاستفادة من قدراتهم ضمن سير العمل الخاص بك
icon: aws
mode: "wide"
---
# `BedrockInvokeAgentTool`
تتيح `BedrockInvokeAgentTool` لوكلاء CrewAI استدعاء وكلاء Amazon Bedrock والاستفادة من قدراتهم ضمن سير العمل الخاص بك.
## التثبيت
```bash
uv pip install 'crewai[tools]'
```
## المتطلبات
- بيانات اعتماد AWS مُهيأة (إما من خلال متغيرات البيئة أو AWS CLI)
- حزمتا `boto3` و `python-dotenv`
- الوصول إلى وكلاء Amazon Bedrock
## الاستخدام
إليك كيفية استخدام الأداة مع وكيل CrewAI:
```python {2, 4-8}
from crewai import Agent, Task, Crew
from crewai_tools.aws.bedrock.agents.invoke_agent_tool import BedrockInvokeAgentTool
# Initialize the tool
agent_tool = BedrockInvokeAgentTool(
agent_id="your-agent-id",
agent_alias_id="your-agent-alias-id"
)
# Create a CrewAI agent that uses the tool
aws_expert = Agent(
role='AWS Service Expert',
goal='Help users understand AWS services and quotas',
backstory='I am an expert in AWS services and can provide detailed information about them.',
tools=[agent_tool],
verbose=True
)
# Create a task for the agent
quota_task = Task(
description="Find out the current service quotas for EC2 in us-west-2 and explain any recent changes.",
agent=aws_expert
)
# Create a crew with the agent
crew = Crew(
agents=[aws_expert],
tasks=[quota_task],
verbose=2
)
# Run the crew
result = crew.kickoff()
print(result)
```
## معاملات الأداة
| المعامل | النوع | مطلوب | الافتراضي | الوصف |
|:---------|:-----|:---------|:--------|:------------|
| **agent_id** | `str` | نعم | None | المعرّف الفريد لوكيل Bedrock |
| **agent_alias_id** | `str` | نعم | None | المعرّف الفريد لاسم الوكيل المستعار |
| **session_id** | `str` | لا | الطابع الزمني | المعرّف الفريد للجلسة |
| **enable_trace** | `bool` | لا | False | ما إذا كان سيتم تفعيل التتبع لأغراض التصحيح |
| **end_session** | `bool` | لا | False | ما إذا كان سيتم إنهاء الجلسة بعد الاستدعاء |
| **description** | `str` | لا | None | وصف مخصص للأداة |
## متغيرات البيئة
```bash
BEDROCK_AGENT_ID=your-agent-id # Alternative to passing agent_id
BEDROCK_AGENT_ALIAS_ID=your-agent-alias-id # Alternative to passing agent_alias_id
AWS_REGION=your-aws-region # Defaults to us-west-2
AWS_ACCESS_KEY_ID=your-access-key # Required for AWS authentication
AWS_SECRET_ACCESS_KEY=your-secret-key # Required for AWS authentication
```
## الاستخدام المتقدم
### سير عمل متعدد الوكلاء مع إدارة الجلسات
```python {2, 4-22}
from crewai import Agent, Task, Crew, Process
from crewai_tools.aws.bedrock.agents.invoke_agent_tool import BedrockInvokeAgentTool
# Initialize tools with session management
initial_tool = BedrockInvokeAgentTool(
agent_id="your-agent-id",
agent_alias_id="your-agent-alias-id",
session_id="custom-session-id"
)
followup_tool = BedrockInvokeAgentTool(
agent_id="your-agent-id",
agent_alias_id="your-agent-alias-id",
session_id="custom-session-id"
)
final_tool = BedrockInvokeAgentTool(
agent_id="your-agent-id",
agent_alias_id="your-agent-alias-id",
session_id="custom-session-id",
end_session=True
)
# Create agents for different stages
researcher = Agent(
role='AWS Service Researcher',
goal='Gather information about AWS services',
backstory='I am specialized in finding detailed AWS service information.',
tools=[initial_tool]
)
analyst = Agent(
role='Service Compatibility Analyst',
goal='Analyze service compatibility and requirements',
backstory='I analyze AWS services for compatibility and integration possibilities.',
tools=[followup_tool]
)
summarizer = Agent(
role='Technical Documentation Writer',
goal='Create clear technical summaries',
backstory='I specialize in creating clear, concise technical documentation.',
tools=[final_tool]
)
# Create tasks
research_task = Task(
description="Find all available AWS services in us-west-2 region.",
agent=researcher
)
analysis_task = Task(
description="Analyze which services support IPv6 and their implementation requirements.",
agent=analyst
)
summary_task = Task(
description="Create a summary of IPv6-compatible services and their key features.",
agent=summarizer
)
# Create a crew with the agents and tasks
crew = Crew(
agents=[researcher, analyst, summarizer],
tasks=[research_task, analysis_task, summary_task],
process=Process.sequential,
verbose=2
)
# Run the crew
result = crew.kickoff()
```
## حالات الاستخدام
### التعاون الهجين متعدد الوكلاء
- إنشاء سير عمل حيث يتعاون وكلاء CrewAI مع وكلاء Bedrock المُدارة التي تعمل كخدمات في AWS
- تمكين سيناريوهات حيث تتم معالجة البيانات الحساسة داخل بيئة AWS الخاصة بك بينما تعمل وكلاء أخرى خارجياً
- ربط وكلاء CrewAI المحلية مع وكلاء Bedrock السحابية لسير عمل ذكاء موزع
### سيادة البيانات والامتثال
- الحفاظ على سير عمل الوكلاء الحساسة للبيانات داخل بيئة AWS الخاصة بك مع السماح لوكلاء CrewAI الخارجية بتنسيق المهام
- الحفاظ على الامتثال لمتطلبات إقامة البيانات من خلال معالجة المعلومات الحساسة فقط داخل حساب AWS الخاص بك
- تمكين التعاون الآمن متعدد الوكلاء حيث لا يمكن لبعض الوكلاء الوصول إلى البيانات الخاصة بمؤسستك
### التكامل السلس مع خدمات AWS
- الوصول إلى أي خدمة AWS من خلال Amazon Bedrock Actions دون كتابة كود تكامل معقد
- تمكين وكلاء CrewAI من التفاعل مع خدمات AWS من خلال طلبات اللغة الطبيعية
- الاستفادة من قدرات وكلاء Bedrock المبنية مسبقاً للتفاعل مع خدمات AWS مثل Bedrock Knowledge Bases و Lambda والمزيد
### هياكل وكلاء هجينة قابلة للتوسع
- تفريغ المهام الحسابية المكثفة إلى وكلاء Bedrock المُدارة بينما تعمل المهام الخفيفة في CrewAI
- توسيع معالجة الوكلاء من خلال توزيع أعباء العمل بين وكلاء CrewAI المحلية ووكلاء Bedrock السحابية
### التعاون بين المؤسسات
- تمكين التعاون الآمن بين وكلاء CrewAI الخاصة بمؤسستك ووكلاء Bedrock الخاصة بالمؤسسات الشريكة
- إنشاء سير عمل حيث يمكن دمج الخبرة الخارجية من وكلاء Bedrock دون كشف البيانات الحساسة
- بناء أنظمة وكلاء تمتد عبر حدود المؤسسات مع الحفاظ على الأمان والتحكم في البيانات

View File

@@ -0,0 +1,276 @@
---
title: أداة تشغيل أتمتة CrewAI
description: تتيح لوكلاء CrewAI استدعاء أتمتة منصة CrewAI والاستفادة من خدمات الأطقم الخارجية ضمن سير العمل الخاص بك.
icon: robot
---
# `InvokeCrewAIAutomationTool`
توفر `InvokeCrewAIAutomationTool` تكاملاً مع واجهة برمجة تطبيقات منصة CrewAI مع خدمات الأطقم الخارجية. تتيح لك هذه الأداة استدعاء أتمتة منصة CrewAI والتفاعل معها من داخل وكلاء CrewAI، مما يمكّن التكامل السلس بين سير عمل الأطقم المختلفة.
## التثبيت
```bash
uv pip install 'crewai[tools]'
```
## المتطلبات
- الوصول إلى واجهة برمجة تطبيقات منصة CrewAI
- رمز حامل صالح للمصادقة
- الوصول الشبكي إلى نقاط نهاية أتمتة منصة CrewAI
## الاستخدام
إليك كيفية استخدام الأداة مع وكيل CrewAI:
```python {2, 4-9}
from crewai import Agent, Task, Crew
from crewai_tools import InvokeCrewAIAutomationTool
# Initialize the tool
automation_tool = InvokeCrewAIAutomationTool(
crew_api_url="https://data-analysis-crew-[...].crewai.com",
crew_bearer_token="your_bearer_token_here",
crew_name="Data Analysis Crew",
crew_description="Analyzes data and generates insights"
)
# Create a CrewAI agent that uses the tool
automation_coordinator = Agent(
role='Automation Coordinator',
goal='Coordinate and execute automated crew tasks',
backstory='I am an expert at leveraging automation tools to execute complex workflows.',
tools=[automation_tool],
verbose=True
)
# Create a task for the agent
analysis_task = Task(
description="Execute data analysis automation and provide insights",
agent=automation_coordinator,
expected_output="Comprehensive data analysis report"
)
# Create a crew with the agent
crew = Crew(
agents=[automation_coordinator],
tasks=[analysis_task],
verbose=2
)
# Run the crew
result = crew.kickoff()
print(result)
```
## معاملات الأداة
| المعامل | النوع | مطلوب | الافتراضي | الوصف |
|:---------|:-----|:---------|:--------|:------------|
| **crew_api_url** | `str` | نعم | None | عنوان URL الأساسي لواجهة برمجة تطبيقات أتمتة منصة CrewAI |
| **crew_bearer_token** | `str` | نعم | None | رمز حامل لمصادقة API |
| **crew_name** | `str` | نعم | None | اسم أتمتة الطاقم |
| **crew_description** | `str` | نعم | None | وصف ما تفعله أتمتة الطاقم |
| **max_polling_time** | `int` | لا | 600 | الحد الأقصى للوقت بالثواني للانتظار حتى اكتمال المهمة |
| **crew_inputs** | `dict` | لا | None | قاموس يحدد حقول مخطط المدخلات المخصصة |
## متغيرات البيئة
```bash
CREWAI_API_URL=https://your-crew-automation.crewai.com # Alternative to passing crew_api_url
CREWAI_BEARER_TOKEN=your_bearer_token_here # Alternative to passing crew_bearer_token
```
## الاستخدام المتقدم
### مخطط مدخلات مخصص مع معاملات ديناميكية
```python {2, 4-15}
from crewai import Agent, Task, Crew
from crewai_tools import InvokeCrewAIAutomationTool
from pydantic import Field
# Define custom input schema
custom_inputs = {
"year": Field(..., description="Year to retrieve the report for (integer)"),
"region": Field(default="global", description="Geographic region for analysis"),
"format": Field(default="summary", description="Report format (summary, detailed, raw)")
}
# Create tool with custom inputs
market_research_tool = InvokeCrewAIAutomationTool(
crew_api_url="https://state-of-ai-report-crew-[...].crewai.com",
crew_bearer_token="your_bearer_token_here",
crew_name="State of AI Report",
crew_description="Retrieves a comprehensive report on state of AI for a given year and region",
crew_inputs=custom_inputs,
max_polling_time=15 * 60 # 15 minutes timeout
)
# Create an agent with the tool
research_agent = Agent(
role="Research Coordinator",
goal="Coordinate and execute market research tasks",
backstory="You are an expert at coordinating research tasks and leveraging automation tools.",
tools=[market_research_tool],
verbose=True
)
# Create and execute a task with custom parameters
research_task = Task(
description="Conduct market research on AI tools market for 2024 in North America with detailed format",
agent=research_agent,
expected_output="Comprehensive market research report"
)
crew = Crew(
agents=[research_agent],
tasks=[research_task]
)
result = crew.kickoff()
```
### سير عمل أتمتة متعدد المراحل
```python {2, 4-35}
from crewai import Agent, Task, Crew, Process
from crewai_tools import InvokeCrewAIAutomationTool
# Initialize different automation tools
data_collection_tool = InvokeCrewAIAutomationTool(
crew_api_url="https://data-collection-crew-[...].crewai.com",
crew_bearer_token="your_bearer_token_here",
crew_name="Data Collection Automation",
crew_description="Collects and preprocesses raw data"
)
analysis_tool = InvokeCrewAIAutomationTool(
crew_api_url="https://analysis-crew-[...].crewai.com",
crew_bearer_token="your_bearer_token_here",
crew_name="Analysis Automation",
crew_description="Performs advanced data analysis and modeling"
)
reporting_tool = InvokeCrewAIAutomationTool(
crew_api_url="https://reporting-crew-[...].crewai.com",
crew_bearer_token="your_bearer_token_here",
crew_name="Reporting Automation",
crew_description="Generates comprehensive reports and visualizations"
)
# Create specialized agents
data_collector = Agent(
role='Data Collection Specialist',
goal='Gather and preprocess data from various sources',
backstory='I specialize in collecting and cleaning data from multiple sources.',
tools=[data_collection_tool]
)
data_analyst = Agent(
role='Data Analysis Expert',
goal='Perform advanced analysis on collected data',
backstory='I am an expert in statistical analysis and machine learning.',
tools=[analysis_tool]
)
report_generator = Agent(
role='Report Generation Specialist',
goal='Create comprehensive reports and visualizations',
backstory='I excel at creating clear, actionable reports from complex data.',
tools=[reporting_tool]
)
# Create sequential tasks
collection_task = Task(
description="Collect market data for Q4 2024 analysis",
agent=data_collector
)
analysis_task = Task(
description="Analyze collected data to identify trends and patterns",
agent=data_analyst
)
reporting_task = Task(
description="Generate executive summary report with key insights and recommendations",
agent=report_generator
)
# Create a crew with sequential processing
crew = Crew(
agents=[data_collector, data_analyst, report_generator],
tasks=[collection_task, analysis_task, reporting_task],
process=Process.sequential,
verbose=2
)
result = crew.kickoff()
```
## حالات الاستخدام
### تنسيق الأطقم الموزعة
- تنسيق أتمتة أطقم متخصصة متعددة للتعامل مع سير عمل معقدة ومتعددة المراحل
- تمكين عمليات التسليم السلسة بين خدمات الأتمتة المختلفة لتنفيذ شامل للمهام
- توسيع المعالجة من خلال توزيع أعباء العمل عبر أتمتة منصة CrewAI المتعددة
### التكامل عبر المنصات
- ربط وكلاء CrewAI مع أتمتة منصة CrewAI لسير عمل محلي-سحابي هجين
- الاستفادة من الأتمتة المتخصصة مع الحفاظ على التحكم والتنسيق المحلي
- تمكين التعاون الآمن بين الوكلاء المحليين وخدمات الأتمتة السحابية
### خطوط أنابيب أتمتة المؤسسات
- إنشاء خطوط أنابيب أتمتة بمستوى المؤسسة تجمع بين الذكاء المحلي وقوة المعالجة السحابية
- تنفيذ سير عمل أعمال معقدة تمتد عبر خدمات أتمتة متعددة
- تمكين عمليات قابلة للتوسع ومتكررة لتحليل البيانات وإعداد التقارير واتخاذ القرارات
### تركيب سير العمل الديناميكي
- تركيب سير العمل ديناميكياً من خلال تسلسل خدمات أتمتة مختلفة بناءً على متطلبات المهمة
- تمكين المعالجة التكيفية حيث يعتمد اختيار الأتمتة على خصائص البيانات أو قواعد العمل
- إنشاء مكونات أتمتة مرنة وقابلة لإعادة الاستخدام يمكن دمجها بطرق مختلفة
### المعالجة المتخصصة بالمجال
- الوصول إلى أتمتة خاصة بالمجال (التحليل المالي، البحث القانوني، التوثيق التقني) من وكلاء ذات أغراض عامة
- الاستفادة من أتمتة أطقم متخصصة مبنية مسبقاً دون إعادة بناء منطق المجال المعقد
- تمكين الوكلاء من الوصول إلى قدرات مستوى الخبراء من خلال خدمات أتمتة مستهدفة
## مخطط المدخلات المخصص
عند تعريف `crew_inputs`، استخدم كائنات Pydantic Field لتحديد معاملات المدخلات:
```python
from pydantic import Field
crew_inputs = {
"required_param": Field(..., description="This parameter is required"),
"optional_param": Field(default="default_value", description="This parameter is optional"),
"typed_param": Field(..., description="Integer parameter", ge=1, le=100) # With validation
}
```
## معالجة الأخطاء
توفر الأداة معالجة شاملة للأخطاء للسيناريوهات الشائعة:
- **أخطاء اتصال API**: مشكلات الاتصال الشبكي مع منصة CrewAI
- **أخطاء المصادقة**: رموز حامل غير صالحة أو منتهية الصلاحية
- **أخطاء المهلة**: المهام التي تتجاوز الحد الأقصى لوقت الاستقصاء
- **فشل المهام**: أتمتة الأطقم التي تفشل أثناء التنفيذ
- **أخطاء التحقق من المدخلات**: معاملات غير صالحة مُمررة إلى نقاط نهاية الأتمتة
## نقاط نهاية API
تتفاعل الأداة مع نقطتي نهاية API رئيسيتين:
- `POST {crew_api_url}/kickoff`: بدء مهمة أتمتة طاقم جديدة
- `GET {crew_api_url}/status/{crew_id}`: التحقق من حالة مهمة قيد التشغيل
## ملاحظات
- تقوم الأداة تلقائياً باستقصاء نقطة نهاية الحالة كل ثانية حتى الاكتمال أو انتهاء المهلة
- تُرجع المهام الناجحة النتيجة مباشرة، بينما تُرجع المهام الفاشلة معلومات الخطأ
- يجب الحفاظ على أمان رموز الحامل وعدم ترميزها بشكل ثابت في بيئات الإنتاج
- فكر في استخدام متغيرات البيئة للتكوينات الحساسة مثل رموز الحامل
- يجب أن تكون مخططات المدخلات المخصصة متوافقة مع المعاملات المتوقعة لأتمتة الطاقم المستهدف

View File

@@ -0,0 +1,367 @@
---
title: أداة معالج وكيل Merge
description: تتيح لوكلاء CrewAI الوصول بأمان إلى تكاملات الأطراف الثالثة مثل Linear و GitHub و Slack والمزيد من خلال منصة معالج الوكيل من Merge
icon: diagram-project
mode: "wide"
---
# `MergeAgentHandlerTool`
تتيح `MergeAgentHandlerTool` لوكلاء CrewAI الوصول بأمان إلى تكاملات الأطراف الثالثة من خلال منصة [معالج الوكيل من Merge](https://www.merge.dev/products/merge-agent-handler). يوفر معالج الوكيل موصلات جاهزة وآمنة لأدوات شائعة مثل Linear و GitHub و Slack و Notion ومئات غيرها - جميعها مع مصادقة وصلاحيات ومراقبة مدمجة.
## التثبيت
```bash
uv pip install 'crewai[tools]'
```
## المتطلبات
- حساب معالج وكيل Merge مع حزمة أدوات مُهيأة
- مفتاح API لمعالج الوكيل
- مستخدم مسجل واحد على الأقل مرتبط بحزمة الأدوات الخاصة بك
- تكاملات أطراف ثالثة مُهيأة في حزمة الأدوات الخاصة بك
## البدء مع معالج الوكيل
1. **التسجيل** في حساب معالج وكيل Merge على [ah.merge.dev/signup](https://ah.merge.dev/signup)
2. **إنشاء حزمة أدوات** وتكوين التكاملات التي تحتاجها
3. **تسجيل المستخدمين** الذين سيقومون بالمصادقة مع خدمات الأطراف الثالثة
4. **الحصول على مفتاح API** من لوحة تحكم معالج الوكيل
5. **تعيين متغير البيئة**: `export AGENT_HANDLER_API_KEY='your-key-here'`
6. **البدء بالبناء** مع MergeAgentHandlerTool في CrewAI
## ملاحظات
- يمكن العثور على معرّفات حزمة الأدوات ومعرّفات المستخدمين المسجلين في لوحة تحكم معالج الوكيل أو إنشاؤها عبر API
- تستخدم الأداة بروتوكول سياق النموذج (MCP) للتواصل مع معالج الوكيل
- يتم توليد معرّفات الجلسة تلقائياً ولكن يمكن تخصيصها لاستمرارية السياق
- يتم تسجيل جميع استدعاءات الأدوات وإمكانية مراجعتها من خلال منصة معالج الوكيل
- يتم اكتشاف معاملات الأدوات ديناميكياً من واجهة برمجة تطبيقات معالج الوكيل والتحقق منها تلقائياً
## الاستخدام
### استخدام أداة واحدة
إليك كيفية استخدام أداة محددة من حزمة الأدوات الخاصة بك:
```python {2, 4-9}
from crewai import Agent, Task, Crew
from crewai_tools import MergeAgentHandlerTool
# Create a tool for Linear issue creation
linear_create_tool = MergeAgentHandlerTool.from_tool_name(
tool_name="linear__create_issue",
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa"
)
# Create a CrewAI agent that uses the tool
project_manager = Agent(
role='Project Manager',
goal='Manage project tasks and issues efficiently',
backstory='I am an expert at tracking project work and creating actionable tasks.',
tools=[linear_create_tool],
verbose=True
)
# Create a task for the agent
create_issue_task = Task(
description="Create a new high-priority issue in Linear titled 'Implement user authentication' with a detailed description of the requirements.",
agent=project_manager,
expected_output="Confirmation that the issue was created with its ID"
)
# Create a crew with the agent
crew = Crew(
agents=[project_manager],
tasks=[create_issue_task],
verbose=True
)
# Run the crew
result = crew.kickoff()
print(result)
```
### تحميل أدوات متعددة من حزمة أدوات
يمكنك تحميل جميع الأدوات المتاحة من حزمة الأدوات دفعة واحدة:
```python {2, 4-8}
from crewai import Agent, Task, Crew
from crewai_tools import MergeAgentHandlerTool
# Load all tools from the Tool Pack
tools = MergeAgentHandlerTool.from_tool_pack(
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa"
)
# Create an agent with access to all tools
automation_expert = Agent(
role='Automation Expert',
goal='Automate workflows across multiple platforms',
backstory='I can work with any tool in the toolbox to get things done.',
tools=tools,
verbose=True
)
automation_task = Task(
description="Check for any high-priority issues in Linear and post a summary to Slack.",
agent=automation_expert
)
crew = Crew(
agents=[automation_expert],
tasks=[automation_task],
verbose=True
)
result = crew.kickoff()
```
### تحميل أدوات محددة فقط
تحميل الأدوات التي تحتاجها فقط:
```python {2, 4-10}
from crewai import Agent, Task, Crew
from crewai_tools import MergeAgentHandlerTool
# Load specific tools from the Tool Pack
selected_tools = MergeAgentHandlerTool.from_tool_pack(
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa",
tool_names=["linear__create_issue", "linear__get_issues", "slack__post_message"]
)
developer_assistant = Agent(
role='Developer Assistant',
goal='Help developers track and communicate about their work',
backstory='I help developers stay organized and keep the team informed.',
tools=selected_tools,
verbose=True
)
daily_update_task = Task(
description="Get all issues assigned to the current user in Linear and post a summary to the #dev-updates Slack channel.",
agent=developer_assistant
)
crew = Crew(
agents=[developer_assistant],
tasks=[daily_update_task],
verbose=True
)
result = crew.kickoff()
```
## معاملات الأداة
### طريقة `from_tool_name()`
| المعامل | النوع | مطلوب | الافتراضي | الوصف |
|:---------|:-----|:---------|:--------|:------------|
| **tool_name** | `str` | نعم | None | اسم الأداة المحددة المراد استخدامها (مثل "linear__create_issue") |
| **tool_pack_id** | `str` | نعم | None | معرّف UUID لحزمة أدوات معالج الوكيل |
| **registered_user_id** | `str` | نعم | None | معرّف UUID أو origin_id للمستخدم المسجل |
| **base_url** | `str` | لا | "https://ah-api.merge.dev" | عنوان URL الأساسي لواجهة برمجة تطبيقات معالج الوكيل |
| **session_id** | `str` | لا | يتم توليده تلقائياً | معرّف جلسة MCP للحفاظ على السياق |
### طريقة `from_tool_pack()`
| المعامل | النوع | مطلوب | الافتراضي | الوصف |
|:---------|:-----|:---------|:--------|:------------|
| **tool_pack_id** | `str` | نعم | None | معرّف UUID لحزمة أدوات معالج الوكيل |
| **registered_user_id** | `str` | نعم | None | معرّف UUID أو origin_id للمستخدم المسجل |
| **tool_names** | `list[str]` | لا | None | أسماء أدوات محددة للتحميل. إذا كانت None، يتم تحميل جميع الأدوات المتاحة |
| **base_url** | `str` | لا | "https://ah-api.merge.dev" | عنوان URL الأساسي لواجهة برمجة تطبيقات معالج الوكيل |
## متغيرات البيئة
```bash
AGENT_HANDLER_API_KEY=your_api_key_here # Required for authentication
```
## الاستخدام المتقدم
### سير عمل متعدد الوكلاء مع صلاحيات أدوات مختلفة
```python {2, 4-20}
from crewai import Agent, Task, Crew, Process
from crewai_tools import MergeAgentHandlerTool
# Create specialized tools for different agents
github_tools = MergeAgentHandlerTool.from_tool_pack(
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa",
tool_names=["github__create_pull_request", "github__get_pull_requests"]
)
linear_tools = MergeAgentHandlerTool.from_tool_pack(
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa",
tool_names=["linear__create_issue", "linear__update_issue"]
)
slack_tool = MergeAgentHandlerTool.from_tool_name(
tool_name="slack__post_message",
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa"
)
# Create specialized agents
code_reviewer = Agent(
role='Code Reviewer',
goal='Review pull requests and ensure code quality',
backstory='I am an expert at reviewing code changes and providing constructive feedback.',
tools=github_tools
)
task_manager = Agent(
role='Task Manager',
goal='Track and update project tasks based on code changes',
backstory='I keep the project board up to date with the latest development progress.',
tools=linear_tools
)
communicator = Agent(
role='Team Communicator',
goal='Keep the team informed about important updates',
backstory='I make sure everyone knows what is happening in the project.',
tools=[slack_tool]
)
# Create sequential tasks
review_task = Task(
description="Review all open pull requests in the 'api-service' repository and identify any that need attention.",
agent=code_reviewer,
expected_output="List of pull requests that need review or have issues"
)
update_task = Task(
description="Update Linear issues based on the pull request review findings. Mark completed PRs as done.",
agent=task_manager,
expected_output="Summary of updated Linear issues"
)
notify_task = Task(
description="Post a summary of today's code review and task updates to the #engineering Slack channel.",
agent=communicator,
expected_output="Confirmation that the message was posted"
)
# Create a crew with sequential processing
crew = Crew(
agents=[code_reviewer, task_manager, communicator],
tasks=[review_task, update_task, notify_task],
process=Process.sequential,
verbose=True
)
result = crew.kickoff()
```
### إدارة الجلسات المخصصة
الحفاظ على السياق عبر استدعاءات أدوات متعددة باستخدام معرّفات الجلسة:
```python {2, 4-17}
from crewai import Agent, Task, Crew
from crewai_tools import MergeAgentHandlerTool
# Create tools with the same session ID to maintain context
session_id = "project-sprint-planning-2024"
create_tool = MergeAgentHandlerTool(
name="linear_create_issue",
description="Creates a new issue in Linear",
tool_name="linear__create_issue",
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa",
session_id=session_id
)
update_tool = MergeAgentHandlerTool(
name="linear_update_issue",
description="Updates an existing issue in Linear",
tool_name="linear__update_issue",
tool_pack_id="134e0111-0f67-44f6-98f0-597000290bb3",
registered_user_id="91b2b905-e866-40c8-8be2-efe53827a0aa",
session_id=session_id
)
sprint_planner = Agent(
role='Sprint Planner',
goal='Plan and organize sprint tasks',
backstory='I help teams plan effective sprints with well-defined tasks.',
tools=[create_tool, update_tool],
verbose=True
)
planning_task = Task(
description="Create 5 sprint tasks for the authentication feature and set their priorities based on dependencies.",
agent=sprint_planner
)
crew = Crew(
agents=[sprint_planner],
tasks=[planning_task],
verbose=True
)
result = crew.kickoff()
```
## حالات الاستخدام
### الوصول الموحد للتكاملات
- الوصول إلى مئات أدوات الأطراف الثالثة من خلال واجهة برمجة تطبيقات موحدة واحدة دون إدارة حزم SDK متعددة
- تمكين الوكلاء من العمل مع Linear و GitHub و Slack و Notion و Jira و Asana والمزيد من نقطة تكامل واحدة
- تقليل تعقيد التكامل من خلال السماح لمعالج الوكيل بإدارة المصادقة وإصدارات API
### سير عمل المؤسسات الآمنة
- الاستفادة من إدارة المصادقة والصلاحيات المدمجة لجميع تكاملات الأطراف الثالثة
- الحفاظ على معايير أمان المؤسسة مع التحكم المركزي في الوصول وتسجيل المراجعة
- تمكين الوكلاء من الوصول إلى أدوات الشركة دون كشف مفاتيح API أو بيانات الاعتماد في الكود
### الأتمتة عبر المنصات
- بناء سير عمل يمتد عبر منصات متعددة (مثل إنشاء مشكلات GitHub من مهام Linear، مزامنة صفحات Notion مع Slack)
- تمكين تدفق البيانات السلس بين الأدوات المختلفة في مجموعتك التقنية
- إنشاء أتمتة ذكية تفهم السياق عبر المنصات المختلفة
### اكتشاف الأدوات الديناميكي
- تحميل جميع الأدوات المتاحة أثناء التشغيل دون ترميز منطق التكامل بشكل ثابت
- تمكين الوكلاء من اكتشاف واستخدام أدوات جديدة عند إضافتها إلى حزمة الأدوات
- بناء وكلاء مرنة يمكنها التكيف مع تغير توفر الأدوات
### الوصول إلى الأدوات حسب المستخدم
- يمكن لمستخدمين مختلفين الحصول على صلاحيات ومستويات وصول مختلفة للأدوات
- تمكين سير عمل متعدد المستأجرين حيث تعمل الوكلاء نيابة عن مستخدمين محددين
- الحفاظ على الإسناد والصلاحيات المناسبة لجميع إجراءات الأدوات
## التكاملات المتاحة
يدعم معالج وكيل Merge مئات التكاملات عبر فئات متعددة:
- **إدارة المشاريع**: Linear، Jira، Asana، Monday.com، ClickUp
- **إدارة الكود**: GitHub، GitLab، Bitbucket
- **التواصل**: Slack، Microsoft Teams، Discord
- **التوثيق**: Notion، Confluence، Google Docs
- **إدارة علاقات العملاء**: Salesforce، HubSpot، Pipedrive
- **والمزيد...**
قم بزيارة [وثائق معالج وكيل Merge](https://docs.ah.merge.dev/) للحصول على قائمة كاملة بالتكاملات المتاحة.
## معالجة الأخطاء
توفر الأداة معالجة شاملة للأخطاء:
- **أخطاء المصادقة**: مفاتيح API غير صالحة أو مفقودة
- **أخطاء الصلاحيات**: المستخدم يفتقر إلى صلاحية الإجراء المطلوب
- **أخطاء API**: مشكلات في التواصل مع معالج الوكيل أو خدمات الأطراف الثالثة
- **أخطاء التحقق**: معاملات غير صالحة مُمررة لطرق الأداة
يتم تغليف جميع الأخطاء في `MergeAgentHandlerToolError` لمعالجة أخطاء متسقة.

View File

@@ -0,0 +1,76 @@
---
title: "نظرة عامة"
description: "ربط وكلاء CrewAI مع الأتمتة الخارجية وخدمات الذكاء الاصطناعي المُدارة"
icon: "face-smile"
mode: "wide"
---
تتيح أدوات التكامل لوكلائك تسليم العمل إلى منصات أتمتة أخرى وخدمات ذكاء اصطناعي مُدارة. استخدمها عندما يحتاج سير العمل إلى استدعاء نشر CrewAI موجود أو تفويض مهام متخصصة لمزودين مثل Amazon Bedrock.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة معالج وكيل Merge" icon="diagram-project" href="/ar/tools/integration/mergeagenthandlertool">
الوصول بأمان إلى مئات أدوات الأطراف الثالثة مثل Linear و GitHub و Slack والمزيد من خلال واجهة API الموحدة من Merge.
</Card>
<Card title="أداة تشغيل أتمتة CrewAI" icon="robot" href="/ar/tools/integration/crewaiautomationtool">
استدعاء أتمتة منصة CrewAI المباشرة، تمرير مدخلات مخصصة، واستقصاء النتائج مباشرة من وكيلك.
</Card>
<Card title="أداة استدعاء وكيل Bedrock" icon="aws" href="/ar/tools/integration/bedrockinvokeagenttool">
استدعاء وكلاء Amazon Bedrock من أطقمك، إعادة استخدام حواجز حماية AWS، وبث الاستجابات مرة أخرى إلى سير العمل.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **تسلسل الأتمتة**: بدء نشر CrewAI موجود من داخل طاقم أو تدفق آخر
- **تسليم المؤسسة**: توجيه المهام إلى وكلاء Bedrock التي تغلف بالفعل منطق الشركة وحواجز الحماية
- **سير العمل الهجين**: الجمع بين تفكير CrewAI والأنظمة اللاحقة التي تكشف واجهات برمجة تطبيقات الوكلاء الخاصة بها
- **المهام طويلة التشغيل**: استقصاء الأتمتة الخارجية ودمج النتائج النهائية مرة أخرى في التشغيل الحالي
## **مثال للبدء السريع**
```python
from crewai import Agent, Task, Crew
from crewai_tools import InvokeCrewAIAutomationTool
from crewai_tools.aws.bedrock.agents.invoke_agent_tool import BedrockInvokeAgentTool
# External automation
analysis_automation = InvokeCrewAIAutomationTool(
crew_api_url="https://analysis-crew.acme.crewai.com",
crew_bearer_token="YOUR_BEARER_TOKEN",
crew_name="Analysis Automation",
crew_description="Runs the production-grade analysis pipeline",
)
# Managed agent on Bedrock
knowledge_router = BedrockInvokeAgentTool(
agent_id="bedrock-agent-id",
agent_alias_id="prod",
)
automation_strategist = Agent(
role="Automation Strategist",
goal="Orchestrate external automations and summarise their output",
backstory="You coordinate enterprise workflows and know when to delegate tasks to specialised services.",
tools=[analysis_automation, knowledge_router],
verbose=True,
)
execute_playbook = Task(
description="Run the analysis automation and ask the Bedrock agent for executive talking points.",
agent=automation_strategist,
)
Crew(agents=[automation_strategist], tasks=[execute_playbook]).kickoff()
```
## **أفضل الممارسات**
- **تأمين بيانات الاعتماد**: قم بتخزين مفاتيح API ورموز الحامل في متغيرات البيئة أو مدير الأسرار
- **التخطيط لزمن الاستجابة**: قد تستغرق الأتمتة الخارجية وقتاً أطول - عيّن فترات استقصاء ومهلات مناسبة
- **إعادة استخدام الجلسات**: تدعم وكلاء Bedrock معرّفات الجلسة حتى تتمكن من الحفاظ على السياق عبر استدعاءات أدوات متعددة
- **التحقق من الاستجابات**: قم بتوحيد المخرجات عن بُعد (JSON، نص، رموز الحالة) قبل إعادة توجيهها إلى المهام اللاحقة
- **مراقبة الاستخدام**: تتبع سجلات المراجعة في منصة CrewAI أو AWS CloudWatch للبقاء على اطلاع بحدود الحصص والأعطال

140
docs/ar/tools/overview.mdx Normal file
View File

@@ -0,0 +1,140 @@
---
title: "نظرة عامة على الأدوات"
description: "اكتشف مكتبة CrewAI الواسعة التي تضم أكثر من 40 أداة لتعزيز قدرات وكلاء الذكاء الاصطناعي"
icon: "toolbox"
mode: "wide"
---
توفر CrewAI مكتبة واسعة من الأدوات الجاهزة لتعزيز قدرات وكلائك. من معالجة الملفات إلى استخراج بيانات الويب، ومن استعلامات قواعد البيانات إلى خدمات الذكاء الاصطناعي - لدينا ما تحتاجه.
## **فئات الأدوات**
<CardGroup cols={2}>
<Card
title="الملفات والمستندات"
icon="folder-open"
href="/ar/tools/file-document/overview"
color="#3B82F6"
>
قراءة وكتابة والبحث في صيغ ملفات متنوعة بما في ذلك PDF و DOCX و JSON و CSV والمزيد. مثالية لسير عمل معالجة المستندات.
</Card>
<Card
title="استخراج بيانات الويب والتصفح"
icon="globe"
href="/ar/tools/web-scraping/overview"
color="#10B981"
>
استخراج البيانات من المواقع، أتمتة تفاعلات المتصفح، واستخراج المحتوى على نطاق واسع باستخدام أدوات مثل Firecrawl و Selenium والمزيد.
</Card>
<Card
title="البحث والاستكشاف"
icon="magnifying-glass"
href="/ar/tools/search-research/overview"
color="#F59E0B"
>
إجراء عمليات بحث على الويب، العثور على مستودعات الكود، استكشاف محتوى YouTube، واكتشاف المعلومات عبر الإنترنت.
</Card>
<Card
title="قواعد البيانات والبيانات"
icon="database"
href="/ar/tools/database-data/overview"
color="#8B5CF6"
>
الاتصال بقواعد بيانات SQL ومخازن المتجهات ومستودعات البيانات. الاستعلام عن MySQL و PostgreSQL و Snowflake و Qdrant و Weaviate.
</Card>
<Card
title="الذكاء الاصطناعي والتعلم الآلي"
icon="brain"
href="/ar/tools/ai-ml/overview"
color="#EF4444"
>
توليد الصور باستخدام DALL-E، معالجة مهام الرؤية، التكامل مع LangChain، بناء أنظمة RAG، والاستفادة من مفسرات الكود.
</Card>
<Card
title="السحابة والتخزين"
icon="cloud"
href="/ar/tools/cloud-storage/overview"
color="#06B6D4"
>
التفاعل مع الخدمات السحابية بما في ذلك AWS S3 و Amazon Bedrock وخدمات التخزين السحابي والذكاء الاصطناعي الأخرى.
</Card>
<Card
title="الأتمتة"
icon="bolt"
href="/ar/tools/automation/overview"
color="#84CC16"
>
أتمتة سير العمل مع Apify و Composio ومنصات أخرى لربط وكلائك بالخدمات الخارجية.
</Card>
<Card
title="التكاملات"
icon="plug"
href="/ar/tools/tool-integrations/overview"
color="#0891B2"
>
دمج CrewAI مع الأنظمة الخارجية مثل Amazon Bedrock ومجموعة أدوات أتمتة CrewAI.
</Card>
</CardGroup>
## **الوصول السريع**
هل تحتاج إلى أداة محددة؟ إليك بعض الخيارات الشائعة:
<CardGroup cols={3}>
<Card title="أداة RAG" icon="image" href="/ar/tools/ai-ml/ragtool">
تنفيذ الاسترجاع المعزز بالتوليد
</Card>
<Card title="Serper Dev" icon="book-atlas" href="/ar/tools/search-research/serperdevtool">
واجهة برمجة تطبيقات بحث Google
</Card>
<Card title="قراءة الملفات" icon="file" href="/ar/tools/file-document/filereadtool">
قراءة أي نوع ملف
</Card>
<Card title="استخراج الموقع" icon="globe" href="/ar/tools/web-scraping/scrapewebsitetool">
استخراج محتوى الويب
</Card>
<Card title="مفسر الكود" icon="code" href="/ar/tools/ai-ml/codeinterpretertool">
تنفيذ كود Python
</Card>
<Card title="قارئ S3" icon="cloud" href="/ar/tools/cloud-storage/s3readertool">
الوصول إلى ملفات AWS S3
</Card>
</CardGroup>
## **البدء**
لاستخدام أي أداة في مشروع CrewAI الخاص بك:
1. **استيراد** الأداة في تكوين طاقمك
2. **إضافتها** إلى قائمة أدوات وكيلك
3. **تكوين** أي مفاتيح API أو إعدادات مطلوبة
```python
from crewai_tools import FileReadTool, SerperDevTool
# Add tools to your agent
agent = Agent(
role="Research Analyst",
tools=[FileReadTool(), SerperDevTool()],
# ... other configuration
)
```
## **الحد الأقصى لعدد الاستخدامات**
يمكنك تعيين حد أقصى لعدد استخدامات الأداة لمنع استخدامها أكثر من عدد معين من المرات. بشكل افتراضي، الحد الأقصى لعدد الاستخدامات غير محدود.
```python
from crewai_tools import FileReadTool
tool = FileReadTool(max_usage_count=5, ...)
```
هل أنت مستعد للاستكشاف؟ اختر فئة أعلاه لاكتشاف الأدوات التي تناسب حالة استخدامك!

View File

@@ -0,0 +1,111 @@
---
title: أداة أوراق arXiv
description: تبحث `ArxivPaperTool` في arXiv عن أوراق بحثية مطابقة لاستعلام وتقوم اختيارياً بتنزيل ملفات PDF.
icon: box-archive
mode: "wide"
---
# `ArxivPaperTool`
## الوصف
تستعلم `ArxivPaperTool` من واجهة برمجة تطبيقات arXiv عن الأوراق الأكاديمية وتُرجع نتائج مختصرة وقابلة للقراءة. يمكنها أيضاً تنزيل ملفات PDF اختيارياً إلى القرص.
## التثبيت
لا تحتاج هذه الأداة إلى تثبيت خاص بخلاف `crewai-tools`.
```shell
uv add crewai-tools
```
لا يتطلب مفتاح API. تستخدم هذه الأداة واجهة Atom API العامة من arXiv.
## خطوات البدء
1. قم بتهيئة الأداة.
2. قدّم `search_query` (مثل "transformer neural network").
3. عيّن اختيارياً `max_results` (1-100) وفعّل تنزيل PDF في المُنشئ.
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import ArxivPaperTool
tool = ArxivPaperTool(
download_pdfs=False,
save_dir="./arxiv_pdfs",
use_title_as_filename=True,
)
agent = Agent(
role="Researcher",
goal="Find relevant arXiv papers",
backstory="Expert at literature discovery",
tools=[tool],
verbose=True,
)
task = Task(
description="Search arXiv for 'transformer neural network' and list top 5 results.",
expected_output="A concise list of 5 relevant papers with titles, links, and summaries.",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```
### الاستخدام المباشر (بدون وكيل)
```python Code
from crewai_tools import ArxivPaperTool
tool = ArxivPaperTool(
download_pdfs=True,
save_dir="./arxiv_pdfs",
)
print(tool.run(search_query="mixture of experts", max_results=3))
```
## المعاملات
### معاملات التهيئة
- `download_pdfs` (bool, الافتراضي `False`): ما إذا كان سيتم تنزيل ملفات PDF.
- `save_dir` (str, الافتراضي `./arxiv_pdfs`): المجلد لحفظ ملفات PDF.
- `use_title_as_filename` (bool, الافتراضي `False`): استخدام عناوين الأوراق كأسماء ملفات.
### معاملات التشغيل
- `search_query` (str, مطلوب): استعلام البحث في arXiv.
- `max_results` (int, الافتراضي `5`, النطاق 1-100): عدد النتائج.
## صيغة الإخراج
تُرجع الأداة قائمة أوراق قابلة للقراءة تتضمن:
- العنوان
- الرابط (صفحة الملخص)
- مقتطف/ملخص (مقتطع)
عند تعيين `download_pdfs=True`، يتم حفظ ملفات PDF على القرص ويشير الملخص إلى الملفات المحفوظة.
## ملاحظات الاستخدام
- تُرجع الأداة نصاً منسقاً مع البيانات الوصفية الرئيسية والروابط.
- عند تعيين `download_pdfs=True`، سيتم تخزين ملفات PDF في `save_dir`.
## استكشاف الأخطاء وإصلاحها
- إذا تلقيت انتهاء مهلة الشبكة، أعد المحاولة أو قلل `max_results`.
- أخطاء XML غير صالحة تشير إلى مشكلة في تحليل استجابة arXiv؛ جرب استعلاماً أبسط.
- قد تحدث أخطاء نظام الملفات (مثل رفض الصلاحية) عند حفظ ملفات PDF؛ تأكد من أن `save_dir` قابل للكتابة.
## روابط ذات صلة
- وثائق واجهة arXiv API: https://info.arxiv.org/help/api/index.html
## معالجة الأخطاء
- يتم التعامل مع مشكلات الشبكة و XML غير الصالح وأخطاء نظام التشغيل برسائل توضيحية.

View File

@@ -0,0 +1,314 @@
---
title: أدوات بحث Brave
description: مجموعة أدوات للاستعلام من واجهة برمجة تطبيقات Brave Search - تغطي البحث في الويب والأخبار والصور والفيديو.
icon: searchengin
mode: "wide"
---
# أدوات بحث Brave
## الوصف
تقدم CrewAI عائلة من أدوات بحث Brave، كل منها يستهدف نقطة نهاية محددة في [واجهة برمجة تطبيقات Brave Search](https://brave.com/search/api/). بدلاً من أداة واحدة شاملة، يمكنك اختيار الأداة التي تتطابق بدقة مع نوع النتائج التي يحتاجها وكيلك:
| الأداة | نقطة النهاية | حالة الاستخدام |
| --- | --- | --- |
| `BraveWebSearchTool` | بحث الويب | نتائج ويب عامة ومقتطفات وعناوين URL |
| `BraveNewsSearchTool` | بحث الأخبار | مقالات إخبارية حديثة وعناوين |
| `BraveImageSearchTool` | بحث الصور | نتائج صور مع الأبعاد وعناوين URL المصدر |
| `BraveVideoSearchTool` | بحث الفيديو | نتائج فيديو من جميع أنحاء الويب |
| `BraveLocalPOIsTool` | نقاط الاهتمام المحلية | العثور على نقاط الاهتمام (مثل المطاعم) |
| `BraveLocalPOIsDescriptionTool` | نقاط الاهتمام المحلية | استرجاع أوصاف المواقع المولّدة بالذكاء الاصطناعي |
| `BraveLLMContextTool` | سياق LLM | محتوى ويب مستخرج مسبقاً ومُحسَّن لوكلاء الذكاء الاصطناعي وتأريض LLM وخطوط أنابيب RAG. |
تشترك جميع الأدوات في صنف أساسي مشترك (`BraveSearchToolBase`) يوفر سلوكاً متسقاً - تحديد المعدل، إعادة المحاولة التلقائية عند استجابات `429`، التحقق من صحة الرؤوس والمعاملات، والحفظ الاختياري في الملفات.
<Note>
لا يزال صنف `BraveSearchTool` القديم متاحاً للتوافق مع الإصدارات السابقة، لكنه يُعتبر **قديماً** ولن يحظى بنفس مستوى الاهتمام في المستقبل. نوصي بالانتقال إلى الأدوات المحددة المدرجة أعلاه، والتي توفر تكويناً أغنى وواجهة أكثر تركيزاً.
</Note>
<Note>
بينما يمكن استخدام العديد من الأدوات (مثل _BraveWebSearchTool_ و _BraveNewsSearchTool_ و _BraveImageSearchTool_ و _BraveVideoSearchTool_) مع اشتراك/خطة مجانية لواجهة Brave Search API، تتطلب بعض المعاملات (مثل `enable_snippets`) وبعض الأدوات (مثل _BraveLocalPOIsTool_ و _BraveLocalPOIsDescriptionTool_) خطة مدفوعة. راجع إمكانيات خطة اشتراكك للتوضيح.
</Note>
## التثبيت
```shell
pip install 'crewai[tools]'
```
## البدء
1. **تثبيت الحزمة** - تأكد من تثبيت `crewai[tools]` في بيئة Python الخاصة بك.
2. **الحصول على مفتاح API** - سجّل في [api-dashboard.search.brave.com/login](https://api-dashboard.search.brave.com/login) لتوليد مفتاح.
3. **تعيين متغير البيئة** - خزّن مفتاحك كـ `BRAVE_API_KEY`، أو مرره مباشرة عبر معامل `api_key`.
## أمثلة سريعة
### بحث الويب
```python Code
from crewai_tools import BraveWebSearchTool
tool = BraveWebSearchTool()
results = tool.run(q="CrewAI agent framework")
print(results)
```
### بحث الأخبار
```python Code
from crewai_tools import BraveNewsSearchTool
tool = BraveNewsSearchTool()
results = tool.run(q="latest AI breakthroughs")
print(results)
```
### بحث الصور
```python Code
from crewai_tools import BraveImageSearchTool
tool = BraveImageSearchTool()
results = tool.run(q="northern lights photography")
print(results)
```
### بحث الفيديو
```python Code
from crewai_tools import BraveVideoSearchTool
tool = BraveVideoSearchTool()
results = tool.run(q="how to build AI agents")
print(results)
```
### أوصاف نقاط الاهتمام المحلية
```python Code
from crewai_tools import (
BraveWebSearchTool,
BraveLocalPOIsDescriptionTool,
)
web_search = BraveWebSearchTool(raw=True)
poi_details = BraveLocalPOIsDescriptionTool()
results = web_search.run(q="italian restaurants in pensacola, florida")
if "locations" in results:
location_ids = [ loc["id"] for loc in results["locations"]["results"] ]
if location_ids:
descriptions = poi_details.run(ids=location_ids)
print(descriptions)
```
## معاملات المُنشئ المشتركة
تقبل كل أداة بحث Brave المعاملات التالية عند التهيئة:
| المعامل | النوع | الافتراضي | الوصف |
| --- | --- | --- | --- |
| `api_key` | `str \| None` | `None` | مفتاح Brave API. يعود إلى متغير البيئة `BRAVE_API_KEY`. |
| `headers` | `dict \| None` | `None` | رؤوس HTTP إضافية لإرسالها مع كل طلب (مثل `api-version`، رؤوس تحديد الموقع الجغرافي). |
| `requests_per_second` | `float` | `1.0` | الحد الأقصى لمعدل الطلبات. ستنتظر الأداة بين الاستدعاءات للبقاء ضمن هذا الحد. |
| `save_file` | `bool` | `False` | عند `True`، يتم كتابة كل استجابة في ملف `.txt` مختوم بالوقت. |
| `raw` | `bool` | `False` | عند `True`، يتم إرجاع استجابة JSON الكاملة من API دون أي تنقيح. |
| `timeout` | `int` | `30` | مهلة طلب HTTP بالثواني. |
| `country` | `str \| None` | `None` | اختصار قديم لاستهداف جغرافي (مثل `"US"`). يُفضل استخدام معامل الاستعلام `country` مباشرة. |
| `n_results` | `int` | `10` | اختصار قديم لعدد النتائج. يُفضل استخدام معامل الاستعلام `count` مباشرة. |
<Warning>
معاملات المُنشئ `country` و `n_results` موجودة للتوافق مع الإصدارات السابقة. يتم تطبيقها كقيم افتراضية عندما لا يتم تقديم معاملات الاستعلام المقابلة (`country`، `count`) وقت الاستدعاء. للكود الجديد، نوصي بتمرير `country` و `count` مباشرة كمعاملات استعلام بدلاً من ذلك.
</Warning>
## معاملات الاستعلام
تتحقق كل أداة من صحة معاملات الاستعلام مقابل مخطط Pydantic قبل إرسال الطلب. تتنوع المعاملات قليلاً حسب نقطة النهاية - إليك ملخص لأكثرها استخداماً:
### BraveWebSearchTool
| المعامل | الوصف |
| --- | --- |
| `q` | **(مطلوب)** سلسلة استعلام البحث (الحد الأقصى 400 حرف). |
| `country` | رمز بلد من حرفين للاستهداف الجغرافي (مثل `"US"`). |
| `search_lang` | رمز لغة من حرفين للنتائج (مثل `"en"`). |
| `count` | الحد الأقصى لعدد النتائج المُرجعة (1-20). |
| `offset` | تخطي أول N صفحة من النتائج (0-9). |
| `safesearch` | مرشح المحتوى: `"off"` أو `"moderate"` أو `"strict"`. |
| `freshness` | مرشح الحداثة: `"pd"` (اليوم الماضي)، `"pw"` (الأسبوع الماضي)، `"pm"` (الشهر الماضي)، `"py"` (السنة الماضية)، أو نطاق تاريخ مثل `"2025-01-01to2025-06-01"`. |
| `extra_snippets` | تضمين حتى 5 مقتطفات نصية إضافية لكل نتيجة. |
| `goggles` | عنوان(عناوين) URL لـ Brave Goggles و/أو المصدر لإعادة الترتيب المخصص. |
للمرجع الكامل للمعاملات والرؤوس، انظر [وثائق واجهة Brave Web Search API](https://api-dashboard.search.brave.com/api-reference/web/search/get).
### BraveNewsSearchTool
| المعامل | الوصف |
| --- | --- |
| `q` | **(مطلوب)** سلسلة استعلام البحث (الحد الأقصى 400 حرف). |
| `country` | رمز بلد من حرفين للاستهداف الجغرافي. |
| `search_lang` | رمز لغة من حرفين للنتائج. |
| `count` | الحد الأقصى لعدد النتائج المُرجعة (1-50). |
| `offset` | تخطي أول N صفحة من النتائج (0-9). |
| `safesearch` | مرشح المحتوى: `"off"` أو `"moderate"` أو `"strict"`. |
| `freshness` | مرشح الحداثة (نفس خيارات بحث الويب). |
| `goggles` | عنوان(عناوين) URL لـ Brave Goggles و/أو المصدر لإعادة الترتيب المخصص. |
للمرجع الكامل للمعاملات والرؤوس، انظر [وثائق واجهة Brave News Search API](https://api-dashboard.search.brave.com/api-reference/news/news_search/get).
### BraveImageSearchTool
| المعامل | الوصف |
| --- | --- |
| `q` | **(مطلوب)** سلسلة استعلام البحث (الحد الأقصى 400 حرف). |
| `country` | رمز بلد من حرفين للاستهداف الجغرافي. |
| `search_lang` | رمز لغة من حرفين للنتائج. |
| `count` | الحد الأقصى لعدد النتائج المُرجعة (1-200). |
| `safesearch` | مرشح المحتوى: `"off"` أو `"strict"`. |
| `spellcheck` | محاولة تصحيح الأخطاء الإملائية في الاستعلام. |
للمرجع الكامل للمعاملات والرؤوس، انظر [وثائق واجهة Brave Image Search API](https://api-dashboard.search.brave.com/api-reference/images/image_search).
### BraveVideoSearchTool
| المعامل | الوصف |
| --- | --- |
| `q` | **(مطلوب)** سلسلة استعلام البحث (الحد الأقصى 400 حرف). |
| `country` | رمز بلد من حرفين للاستهداف الجغرافي. |
| `search_lang` | رمز لغة من حرفين للنتائج. |
| `count` | الحد الأقصى لعدد النتائج المُرجعة (1-50). |
| `offset` | تخطي أول N صفحة من النتائج (0-9). |
| `safesearch` | مرشح المحتوى: `"off"` أو `"moderate"` أو `"strict"`. |
| `freshness` | مرشح الحداثة (نفس خيارات بحث الويب). |
للمرجع الكامل للمعاملات والرؤوس، انظر [وثائق واجهة Brave Video Search API](https://api-dashboard.search.brave.com/api-reference/videos/video_search/get).
### BraveLocalPOIsTool
| المعامل | الوصف |
| --- | --- |
| `ids` | **(مطلوب)** قائمة معرّفات فريدة للمواقع المطلوبة. |
| `search_lang` | رمز لغة من حرفين للنتائج. |
للمرجع الكامل للمعاملات والرؤوس، انظر [وثائق واجهة Brave Local POIs API](https://api-dashboard.search.brave.com/api-reference/web/local_pois).
### BraveLocalPOIsDescriptionTool
| المعامل | الوصف |
| --- | --- |
| `ids` | **(مطلوب)** قائمة معرّفات فريدة للمواقع المطلوبة. |
للمرجع الكامل للمعاملات والرؤوس، انظر [وثائق واجهة Brave POI Descriptions API](https://api-dashboard.search.brave.com/api-reference/web/poi_descriptions).
## الرؤوس المخصصة
تدعم جميع الأدوات رؤوس طلبات HTTP مخصصة. أداة بحث الويب، على سبيل المثال، تقبل رؤوس تحديد الموقع الجغرافي للحصول على نتائج واعية بالموقع:
```python Code
from crewai_tools import BraveWebSearchTool
tool = BraveWebSearchTool(
headers={
"x-loc-lat": "37.7749",
"x-loc-long": "-122.4194",
"x-loc-city": "San Francisco",
"x-loc-state": "CA",
"x-loc-country": "US",
}
)
results = tool.run(q="best coffee shops nearby")
```
يمكنك أيضاً تحديث الرؤوس بعد التهيئة باستخدام طريقة `set_headers()`:
```python Code
tool.set_headers({"api-version": "2025-01-01"})
```
## الوضع الخام
بشكل افتراضي، تقوم كل أداة بتنقيح استجابة API إلى قائمة نتائج مختصرة. إذا كنت تحتاج إلى استجابة API الكاملة غير المعالجة، فعّل الوضع الخام:
```python Code
from crewai_tools import BraveWebSearchTool
tool = BraveWebSearchTool(raw=True)
full_response = tool.run(q="Brave Search API")
```
## مثال على التكامل مع الوكيل
إليك كيفية تزويد وكيل CrewAI بأدوات بحث Brave متعددة:
```python Code
from crewai import Agent
from crewai.project import agent
from crewai_tools import BraveWebSearchTool, BraveNewsSearchTool
web_search = BraveWebSearchTool()
news_search = BraveNewsSearchTool()
@agent
def researcher(self) -> Agent:
return Agent(
config=self.agents_config["researcher"],
tools=[web_search, news_search],
)
```
## مثال متقدم
الجمع بين معاملات متعددة لبحث مستهدف:
```python Code
from crewai_tools import BraveWebSearchTool
tool = BraveWebSearchTool(
requests_per_second=0.5, # conservative rate limit
save_file=True,
)
results = tool.run(
q="artificial intelligence news",
country="US",
search_lang="en",
count=5,
freshness="pm", # past month only
extra_snippets=True,
)
print(results)
```
## الانتقال من `BraveSearchTool` (القديمة)
إذا كنت تستخدم حالياً `BraveSearchTool`، فالتبديل إلى الأدوات الجديدة بسيط:
```python Code
# Before (legacy)
from crewai_tools import BraveSearchTool
tool = BraveSearchTool(country="US", n_results=5, save_file=True)
results = tool.run(search_query="AI agents")
# After (recommended)
from crewai_tools import BraveWebSearchTool
tool = BraveWebSearchTool(save_file=True)
results = tool.run(q="AI agents", country="US", count=5)
```
الاختلافات الرئيسية:
- **الاستيراد**: استخدم `BraveWebSearchTool` (أو متغير الأخبار/الصور/الفيديو) بدلاً من `BraveSearchTool`.
- **معامل الاستعلام**: استخدم `q` بدلاً من `search_query`. (لا يزال كلا `search_query` و `query` مقبولين للراحة، لكن `q` هو المعامل المفضل.)
- **عدد النتائج**: مرر `count` كمعامل استعلام بدلاً من `n_results` عند التهيئة.
- **البلد**: مرر `country` كمعامل استعلام بدلاً من عند التهيئة.
- **مفتاح API**: يمكن الآن تمريره مباشرة عبر `api_key=` بالإضافة إلى متغير البيئة `BRAVE_API_KEY`.
- **تحديد المعدل**: قابل للتكوين عبر `requests_per_second` مع إعادة محاولة تلقائية عند استجابات `429`.
## الخلاصة
توفر مجموعة أدوات بحث Brave لوكلاء CrewAI وصولاً مرناً ومحدداً بنقطة النهاية إلى واجهة برمجة تطبيقات Brave Search. سواء كنت تحتاج إلى صفحات ويب أو أخبار عاجلة أو صور أو مقاطع فيديو، هناك أداة مخصصة مع معاملات مُتحقق منها ومرونة مدمجة. اختر الأداة المناسبة لحالة استخدامك، وارجع إلى [وثائق واجهة Brave Search API](https://brave.com/search/api/) للحصول على التفاصيل الكاملة حول المعاملات المتاحة وصيغ الاستجابة.

View File

@@ -0,0 +1,85 @@
---
title: البحث في توثيق الكود باستخدام RAG
description: أداة `CodeDocsSearchTool` هي أداة RAG (التوليد المعزز بالاسترجاع) قوية مصممة للبحث الدلالي داخل توثيق الكود.
icon: code
mode: "wide"
---
# `CodeDocsSearchTool`
<Note>
**تجريبي**: لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
أداة CodeDocsSearchTool هي أداة RAG (التوليد المعزز بالاسترجاع) قوية مصممة للبحث الدلالي داخل توثيق الكود.
تتيح للمستخدمين العثور بكفاءة على معلومات أو مواضيع محددة داخل توثيق الكود. من خلال تقديم `docs_url` أثناء التهيئة،
تقتصر الأداة على البحث في موقع التوثيق المحدد. بدلاً من ذلك، بدون `docs_url` محدد،
تبحث الأداة عبر مجموعة واسعة من توثيق الكود المعروف أو المكتشف خلال تنفيذها، مما يجعلها متعددة الاستخدامات لاحتياجات البحث المختلفة في التوثيق.
## التثبيت
للبدء في استخدام CodeDocsSearchTool، قم أولاً بتثبيت حزمة crewai_tools عبر pip:
```shell
pip install 'crewai[tools]'
```
## مثال
استخدم CodeDocsSearchTool كما يلي لإجراء عمليات بحث داخل توثيق الكود:
```python Code
from crewai_tools import CodeDocsSearchTool
# To search any code documentation content
# if the URL is known or discovered during its execution:
tool = CodeDocsSearchTool()
# OR
# To specifically focus your search on a given documentation site
# by providing its URL:
tool = CodeDocsSearchTool(docs_url='https://docs.example.com/reference')
```
<Note>
استبدل 'https://docs.example.com/reference' بعنوان URL الخاص بالتوثيق المستهدف
و 'How to use search tool' باستعلام البحث المناسب لاحتياجاتك.
</Note>
## المعاملات
يمكن استخدام المعاملات التالية لتخصيص سلوك `CodeDocsSearchTool`:
| المعامل | النوع | الوصف |
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
| **docs_url** | `string` | _اختياري_. يحدد عنوان URL لتوثيق الكود المراد البحث فيه. |
## النموذج المخصص والتضمينات
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
tool = CodeDocsSearchTool(
config=dict(
llm=dict(
provider="ollama", # or google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google-generativeai", # or openai, ollama, ...
config=dict(
model_name="gemini-embedding-001",
task_type="RETRIEVAL_DOCUMENT",
# title="Embeddings",
),
),
)
)
```

View File

@@ -0,0 +1,81 @@
---
title: أداة استعلام Databricks SQL
description: أداة `DatabricksQueryTool` تنفذ استعلامات SQL على جداول مساحة عمل Databricks.
icon: trowel-bricks
mode: "wide"
---
# `DatabricksQueryTool`
## الوصف
تنفيذ استعلامات SQL على جداول مساحة عمل Databricks باستخدام ملف تعريف CLI أو مصادقة المضيف/الرمز المباشرة.
## التثبيت
```shell
uv add crewai-tools[databricks-sdk]
```
## متغيرات البيئة
- `DATABRICKS_CONFIG_PROFILE` أو (`DATABRICKS_HOST` + `DATABRICKS_TOKEN`)
أنشئ رمز وصول شخصي واعثر على تفاصيل المضيف في مساحة عمل Databricks ضمن إعدادات المستخدم ← المطور.
التوثيق: https://docs.databricks.com/en/dev-tools/auth/pat.html
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import DatabricksQueryTool
tool = DatabricksQueryTool(
default_catalog="main",
default_schema="default",
)
agent = Agent(
role="Data Analyst",
goal="Query Databricks",
tools=[tool],
verbose=True,
)
task = Task(
description="SELECT * FROM my_table LIMIT 10",
expected_output="10 rows",
agent=agent,
)
crew = Crew(
agents=[agent],
tasks=[task],
verbose=True,
)
result = crew.kickoff()
print(result)
```
## المعاملات
- `query` (مطلوب): استعلام SQL المراد تنفيذه
- `catalog` (اختياري): تجاوز الكتالوج الافتراضي
- `db_schema` (اختياري): تجاوز المخطط الافتراضي
- `warehouse_id` (اختياري): تجاوز مستودع SQL الافتراضي
- `row_limit` (اختياري): الحد الأقصى لعدد الصفوف المُرجعة (الافتراضي: 1000)
## القيم الافتراضية عند التهيئة
- `default_catalog`
- `default_schema`
- `default_warehouse_id`
### معالجة الأخطاء والنصائح
- أخطاء المصادقة: تحقق من أن `DATABRICKS_HOST` يبدأ بـ `https://` وأن الرمز صالح.
- الصلاحيات: تأكد من أن مستودع SQL والمخطط متاحان لرمزك.
- الحدود: يجب تجنب الاستعلامات طويلة التشغيل في حلقات الـ Agent؛ أضف فلاتر/حدود.

View File

@@ -0,0 +1,110 @@
---
title: "أداة بحث Exa"
description: "ابحث في الويب باستخدام Exa Search API للعثور على النتائج الأكثر صلة لأي استعلام، مع خيارات لمحتوى الصفحة الكامل والمقتطفات والملخصات."
icon: "magnifying-glass"
mode: "wide"
---
تتيح أداة `EXASearchTool` لوكلاء CrewAI البحث في الويب باستخدام [Exa](https://exa.ai/) search API. تُرجع النتائج الأكثر صلة لأي استعلام، مع خيارات لمحتوى الصفحة الكامل والملخصات المولّدة بالذكاء الاصطناعي.
## التثبيت
ثبّت حزمة أدوات CrewAI:
```shell
pip install 'crewai[tools]'
```
## متغيرات البيئة
عيّن مفتاح Exa API كمتغير بيئة:
```bash
export EXA_API_KEY='your_exa_api_key'
```
احصل على مفتاح API من [لوحة تحكم Exa](https://dashboard.exa.ai/api-keys).
## مثال على الاستخدام
إليك كيفية استخدام `EXASearchTool` مع وكيل CrewAI:
```python
import os
from crewai import Agent, Task, Crew
from crewai_tools import EXASearchTool
# Initialize the tool
exa_tool = EXASearchTool()
# Create an agent that uses the tool
researcher = Agent(
role='Research Analyst',
goal='Find the latest information on any topic',
backstory='An expert researcher who finds the most relevant and up-to-date information.',
tools=[exa_tool],
verbose=True
)
# Create a task for the agent
research_task = Task(
description='Find the top 3 recent breakthroughs in quantum computing.',
expected_output='A summary of the top 3 breakthroughs with source URLs.',
agent=researcher
)
# Form the crew and kick it off
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=True
)
result = crew.kickoff()
print(result)
```
## خيارات التكوين
تقبل أداة `EXASearchTool` المعاملات التالية أثناء التهيئة:
- `type` (str، اختياري): نوع البحث المستخدم. الافتراضي هو `"auto"`. الخيارات: `"auto"`، `"instant"`، `"fast"`، `"deep"`.
- `content` (bool، اختياري): ما إذا كان يجب تضمين محتوى الصفحة الكامل في النتائج. الافتراضي هو `False`.
- `summary` (bool، اختياري): ما إذا كان يجب تضمين ملخصات مولّدة بالذكاء الاصطناعي لكل نتيجة. يتطلب `content=True`. الافتراضي هو `False`.
- `api_key` (str، اختياري): مفتاح Exa API الخاص بك. يعود إلى متغير البيئة `EXA_API_KEY` إذا لم يتم تقديمه.
- `base_url` (str، اختياري): عنوان URL مخصص لخادم API. يعود إلى متغير البيئة `EXA_BASE_URL` إذا لم يتم تقديمه.
عند استدعاء الأداة (أو عندما يستدعيها وكيل)، تتوفر معاملات البحث التالية:
- `search_query` (str): **مطلوب**. سلسلة استعلام البحث.
- `start_published_date` (str، اختياري): تصفية النتائج المنشورة بعد هذا التاريخ (تنسيق ISO 8601، مثل `"2024-01-01"`).
- `end_published_date` (str، اختياري): تصفية النتائج المنشورة قبل هذا التاريخ (تنسيق ISO 8601).
- `include_domains` (list[str]، اختياري): قائمة بالنطاقات لتقييد البحث عليها.
## الاستخدام المتقدم
يمكنك تكوين الأداة بمعاملات مخصصة للحصول على نتائج أغنى:
```python
# Get full page content with AI summaries
exa_tool = EXASearchTool(
content=True,
summary=True,
type="deep"
)
# Use it in an agent
agent = Agent(
role="Deep Researcher",
goal="Conduct thorough research with full content and summaries",
tools=[exa_tool]
)
```
## الميزات
- **البحث الدلالي**: العثور على نتائج بناءً على المعنى، وليس الكلمات المفتاحية فقط
- **استرجاع المحتوى الكامل**: الحصول على النص الكامل لصفحات الويب مع نتائج البحث
- **ملخصات الذكاء الاصطناعي**: الحصول على ملخصات موجزة مولّدة بالذكاء الاصطناعي لكل نتيجة
- **تصفية التاريخ**: تقييد النتائج لفترات زمنية محددة باستخدام فلاتر تاريخ النشر
- **تصفية النطاقات**: تقييد عمليات البحث على نطاقات محددة

View File

@@ -0,0 +1,86 @@
---
title: بحث Github
description: أداة `GithubSearchTool` مصممة للبحث في المواقع وتحويلها إلى markdown نظيف أو بيانات منظمة.
icon: github
mode: "wide"
---
# `GithubSearchTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
أداة GithubSearchTool هي أداة التوليد المعزز بالاسترجاع (RAG) مصممة خصيصاً لإجراء عمليات بحث دلالية داخل مستودعات GitHub. باستخدام قدرات البحث الدلالي المتقدمة، تقوم بتصفية الكود وطلبات السحب والمشكلات والمستودعات، مما يجعلها أداة أساسية للمطورين والباحثين أو أي شخص يحتاج إلى معلومات دقيقة من GitHub.
## التثبيت
لاستخدام GithubSearchTool، تأكد أولاً من تثبيت حزمة crewai_tools في بيئة Python الخاصة بك:
```shell
pip install 'crewai[tools]'
```
يثبّت هذا الأمر الحزمة اللازمة لتشغيل GithubSearchTool مع أي أدوات أخرى مضمنة في حزمة crewai_tools.
احصل على رمز وصول شخصي من GitHub على https://github.com/settings/tokens (إعدادات المطور ← الرموز الدقيقة أو الرموز الكلاسيكية).
## مثال
إليك كيفية استخدام GithubSearchTool لإجراء عمليات بحث دلالية داخل مستودع GitHub:
```python Code
from crewai_tools import GithubSearchTool
# Initialize the tool for semantic searches within a specific GitHub repository
tool = GithubSearchTool(
github_repo='https://github.com/example/repo',
gh_token='your_github_personal_access_token',
content_types=['code', 'issue'] # Options: code, repo, pr, issue
)
# OR
# Initialize the tool for semantic searches within a specific GitHub repository, so the agent can search any repository if it learns about during its execution
tool = GithubSearchTool(
gh_token='your_github_personal_access_token',
content_types=['code', 'issue'] # Options: code, repo, pr, issue
)
```
## المعاملات
- `github_repo`: عنوان URL لمستودع GitHub حيث سيتم إجراء البحث. هذا حقل إلزامي ويحدد المستودع المستهدف لبحثك.
- `gh_token`: رمز الوصول الشخصي من GitHub (PAT) المطلوب للمصادقة. يمكنك إنشاء واحد في إعدادات حساب GitHub الخاص بك ضمن إعدادات المطور > رموز الوصول الشخصية.
- `content_types`: يحدد أنواع المحتوى المراد تضمينها في بحثك. يجب تقديم قائمة بأنواع المحتوى من الخيارات التالية: `code` للبحث داخل الكود،
`repo` للبحث في المعلومات العامة للمستودع، `pr` للبحث داخل طلبات السحب، و `issue` للبحث داخل المشكلات.
هذا الحقل إلزامي ويسمح بتخصيص البحث لأنواع محتوى محددة داخل مستودع GitHub.
## النموذج المخصص والتضمينات
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
tool = GithubSearchTool(
config=dict(
llm=dict(
provider="ollama", # or google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google-generativeai", # or openai, ollama, ...
config=dict(
model_name="gemini-embedding-001",
task_type="RETRIEVAL_DOCUMENT",
# title="Embeddings",
),
),
)
)

View File

@@ -0,0 +1,113 @@
---
title: أداة بحث Linkup
description: أداة `LinkupSearchTool` تتيح الاستعلام من Linkup API للحصول على معلومات سياقية.
icon: link
mode: "wide"
---
# `LinkupSearchTool`
## الوصف
توفر أداة `LinkupSearchTool` القدرة على الاستعلام من Linkup API للحصول على معلومات سياقية واسترجاع نتائج منظمة. هذه الأداة مثالية لإثراء سير العمل بمعلومات محدّثة وموثوقة من Linkup، مما يسمح للوكلاء بالوصول إلى بيانات ذات صلة أثناء مهامهم.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت Linkup SDK:
```shell
uv add linkup-sdk
```
## خطوات البدء
لاستخدام `LinkupSearchTool` بفعالية، اتبع هذه الخطوات:
1. **مفتاح API**: احصل على مفتاح Linkup API.
2. **إعداد البيئة**: قم بإعداد بيئتك بمفتاح API.
3. **تثبيت SDK**: ثبّت Linkup SDK باستخدام الأمر أعلاه.
## مثال
يوضح المثال التالي كيفية تهيئة الأداة واستخدامها مع وكيل:
```python Code
from crewai_tools import LinkupSearchTool
from crewai import Agent
import os
# Initialize the tool with your API key
linkup_tool = LinkupSearchTool(api_key=os.getenv("LINKUP_API_KEY"))
# Define an agent that uses the tool
@agent
def researcher(self) -> Agent:
'''
This agent uses the LinkupSearchTool to retrieve contextual information
from the Linkup API.
'''
return Agent(
config=self.agents_config["researcher"],
tools=[linkup_tool]
)
```
## المعاملات
تقبل أداة `LinkupSearchTool` المعاملات التالية:
### معاملات المُنشئ
- **api_key**: مطلوب. مفتاح Linkup API الخاص بك.
### معاملات التشغيل
- **query**: مطلوب. مصطلح أو عبارة البحث.
- **depth**: اختياري. عمق البحث. الافتراضي هو "standard".
- **output_type**: اختياري. نوع المخرجات. الافتراضي هو "searchResults".
## الاستخدام المتقدم
يمكنك تخصيص معاملات البحث للحصول على نتائج أكثر تحديداً:
```python Code
# Perform a search with custom parameters
results = linkup_tool.run(
query="Women Nobel Prize Physics",
depth="deep",
output_type="searchResults"
)
```
## تنسيق الإرجاع
تُرجع الأداة النتائج بالتنسيق التالي:
```json
{
"success": true,
"results": [
{
"name": "Result Title",
"url": "https://example.com/result",
"content": "Content of the result..."
},
// Additional results...
]
}
```
في حالة حدوث خطأ، ستكون الاستجابة:
```json
{
"success": false,
"error": "Error message"
}
```
## معالجة الأخطاء
تتعامل الأداة بسلاسة مع أخطاء API وتوفر ملاحظات منظمة. إذا فشل طلب API، ستُرجع الأداة قاموساً يحتوي على `success: false` ورسالة خطأ.
## الخلاصة
توفر أداة `LinkupSearchTool` طريقة سلسة لدمج قدرات استرجاع المعلومات السياقية من Linkup في وكلاء CrewAI. من خلال الاستفادة من هذه الأداة، يمكن للوكلاء الوصول إلى معلومات ذات صلة ومحدّثة لتعزيز اتخاذ القرارات وتنفيذ المهام.

View File

@@ -0,0 +1,94 @@
---
title: "نظرة عامة"
description: "إجراء عمليات بحث على الويب، والعثور على المستودعات، والبحث عن المعلومات عبر الإنترنت"
icon: "face-smile"
mode: "wide"
---
تتيح هذه الأدوات لوكلائك البحث في الويب، والبحث في المواضيع، والعثور على المعلومات عبر منصات متعددة بما في ذلك محركات البحث و GitHub و YouTube.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة Serper Dev" icon="google" href="/ar/tools/search-research/serperdevtool">
تكامل مع Google search API لقدرات بحث شاملة على الويب.
</Card>
<Card title="أداة بحث Brave" icon="shield" href="/ar/tools/search-research/bravesearchtool">
بحث يركز على الخصوصية مع فهرس بحث Brave المستقل.
</Card>
<Card title="أداة بحث Exa" icon="magnifying-glass" href="/ar/tools/search-research/exasearchtool">
بحث مدعوم بالذكاء الاصطناعي للعثور على محتوى محدد وذي صلة.
</Card>
<Card title="أداة بحث LinkUp" icon="link" href="/ar/tools/search-research/linkupsearchtool">
بحث في الويب في الوقت الحقيقي مع فهرسة محتوى حديث.
</Card>
<Card title="أداة بحث GitHub" icon="github" href="/ar/tools/search-research/githubsearchtool">
البحث في مستودعات GitHub والكود والمشكلات والتوثيق.
</Card>
<Card title="أداة البحث في المواقع" icon="globe" href="/ar/tools/search-research/websitesearchtool">
البحث داخل مواقع ونطاقات محددة.
</Card>
<Card title="أداة البحث في توثيق الكود" icon="code" href="/ar/tools/search-research/codedocssearchtool">
البحث في توثيق الكود والموارد التقنية.
</Card>
<Card title="بحث قنوات YouTube" icon="youtube" href="/ar/tools/search-research/youtubechannelsearchtool">
البحث في قنوات YouTube عن محتوى ومنشئين محددين.
</Card>
<Card title="بحث فيديو YouTube" icon="play" href="/ar/tools/search-research/youtubevideosearchtool">
العثور على مقاطع فيديو YouTube وتحليلها حسب الموضوع أو الكلمة المفتاحية أو المعايير.
</Card>
<Card title="أداة بحث Tavily" icon="magnifying-glass" href="/ar/tools/search-research/tavilysearchtool">
بحث شامل على الويب باستخدام Tavily search API المدعوم بالذكاء الاصطناعي.
</Card>
<Card title="أداة استخراج Tavily" icon="file-text" href="/ar/tools/search-research/tavilyextractortool">
استخراج محتوى منظم من صفحات الويب باستخدام Tavily API.
</Card>
<Card title="أداة أوراق Arxiv" icon="box-archive" href="/ar/tools/search-research/arxivpapertool">
البحث في arXiv وتنزيل ملفات PDF اختيارياً.
</Card>
<Card title="بحث Google عبر SerpApi" icon="search" href="/ar/tools/search-research/serpapi-googlesearchtool">
بحث Google عبر SerpApi مع نتائج منظمة.
</Card>
<Card title="تسوق Google عبر SerpApi" icon="cart-shopping" href="/ar/tools/search-research/serpapi-googleshoppingtool">
استعلامات Google Shopping عبر SerpApi.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **أبحاث السوق**: البحث عن اتجاهات الصناعة وتحليل المنافسين
- **اكتشاف المحتوى**: العثور على مقالات وفيديوهات وموارد ذات صلة
- **بحث الكود**: البحث في المستودعات والتوثيق عن حلول
- **توليد العملاء المحتملين**: البحث عن الشركات والأفراد
- **البحث الأكاديمي**: العثور على مقالات علمية وأوراق تقنية
```python
from crewai_tools import SerperDevTool, GitHubSearchTool, YoutubeVideoSearchTool, TavilySearchTool, TavilyExtractorTool
# Create research tools
web_search = SerperDevTool()
code_search = GitHubSearchTool()
video_research = YoutubeVideoSearchTool()
tavily_search = TavilySearchTool()
content_extractor = TavilyExtractorTool()
# Add to your agent
agent = Agent(
role="Research Analyst",
tools=[web_search, code_search, video_research, tavily_search, content_extractor],
goal="Gather comprehensive information on any topic"
)
```

View File

@@ -0,0 +1,66 @@
---
title: أداة بحث Google عبر SerpApi
description: أداة `SerpApiGoogleSearchTool` تنفذ عمليات بحث Google باستخدام خدمة SerpApi.
icon: google
mode: "wide"
---
# `SerpApiGoogleSearchTool`
## الوصف
استخدم `SerpApiGoogleSearchTool` لتشغيل عمليات بحث Google باستخدام SerpApi واسترجاع نتائج منظمة. يتطلب مفتاح SerpApi API.
## التثبيت
```shell
uv add crewai-tools[serpapi]
```
## متغيرات البيئة
- `SERPAPI_API_KEY` (مطلوب): مفتاح API لـ SerpApi. أنشئ واحداً على https://serpapi.com/ (طبقة مجانية متاحة).
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import SerpApiGoogleSearchTool
tool = SerpApiGoogleSearchTool()
agent = Agent(
role="Researcher",
goal="Answer questions using Google search",
backstory="Search specialist",
tools=[tool],
verbose=True,
)
task = Task(
description="Search for the latest CrewAI releases",
expected_output="A concise list of relevant results with titles and links",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```
## ملاحظات
- عيّن `SERPAPI_API_KEY` في البيئة. أنشئ مفتاحاً على https://serpapi.com/
- انظر أيضاً Google Shopping عبر SerpApi: `/ar/tools/search-research/serpapi-googleshoppingtool`
## المعاملات
### معاملات التشغيل
- `search_query` (str، مطلوب): استعلام Google.
- `location` (str، اختياري): معامل الموقع الجغرافي.
## ملاحظات
- هذه الأداة تغلّف SerpApi وتُرجع نتائج بحث منظمة.

View File

@@ -0,0 +1,62 @@
---
title: أداة تسوق Google عبر SerpApi
description: أداة `SerpApiGoogleShoppingTool` تبحث في نتائج Google Shopping باستخدام SerpApi.
icon: cart-shopping
mode: "wide"
---
# `SerpApiGoogleShoppingTool`
## الوصف
استفد من `SerpApiGoogleShoppingTool` للاستعلام من Google Shopping عبر SerpApi واسترجاع نتائج موجّهة للمنتجات.
## التثبيت
```shell
uv add crewai-tools[serpapi]
```
## متغيرات البيئة
- `SERPAPI_API_KEY` (مطلوب): مفتاح API لـ SerpApi. أنشئ واحداً على https://serpapi.com/ (طبقة مجانية متاحة).
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import SerpApiGoogleShoppingTool
tool = SerpApiGoogleShoppingTool()
agent = Agent(
role="Shopping Researcher",
goal="Find relevant products",
backstory="Expert in product search",
tools=[tool],
verbose=True,
)
task = Task(
description="Search Google Shopping for 'wireless noise-canceling headphones'",
expected_output="Top relevant products with titles and links",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```
## ملاحظات
- عيّن `SERPAPI_API_KEY` في البيئة. أنشئ مفتاحاً على https://serpapi.com/
- انظر أيضاً بحث Google على الويب عبر SerpApi: `/ar/tools/search-research/serpapi-googlesearchtool`
## المعاملات
### معاملات التشغيل
- `search_query` (str، مطلوب): استعلام البحث عن المنتجات.
- `location` (str، اختياري): معامل الموقع الجغرافي.

View File

@@ -0,0 +1,107 @@
---
title: بحث Google عبر Serper
description: أداة `SerperDevTool` مصممة للبحث في الإنترنت وإرجاع النتائج الأكثر صلة.
icon: google
mode: "wide"
---
# `SerperDevTool`
## الوصف
هذه الأداة مصممة لإجراء بحث دلالي عن استعلام محدد من محتوى نصي عبر الإنترنت. تستخدم [serper.dev](https://serper.dev) API
لجلب وعرض نتائج البحث الأكثر صلة بناءً على الاستعلام المقدم من المستخدم.
## التثبيت
لاستخدام `SerperDevTool` بفعالية، اتبع هذه الخطوات:
1. **تثبيت الحزمة**: تأكد من تثبيت حزمة `crewai[tools]` في بيئة Python الخاصة بك.
2. **الحصول على مفتاح API**: احصل على مفتاح `serper.dev` API على https://serper.dev/ (طبقة مجانية متاحة).
3. **تكوين البيئة**: خزّن مفتاح API الذي حصلت عليه في متغير بيئة باسم `SERPER_API_KEY` لتسهيل استخدامه بواسطة الأداة.
لدمج هذه الأداة في مشروعك، اتبع تعليمات التثبيت أدناه:
```shell
pip install 'crewai[tools]'
```
## مثال
يوضح المثال التالي كيفية تهيئة الأداة وتنفيذ بحث باستعلام معين:
```python Code
from crewai_tools import SerperDevTool
# Initialize the tool for internet searching capabilities
tool = SerperDevTool()
```
## المعاملات
تأتي أداة `SerperDevTool` مع عدة معاملات تُمرّر إلى API:
- **search_url**: نقطة نهاية URL لـ search API. (الافتراضي هو `https://google.serper.dev/search`)
- **country**: اختياري. تحديد البلد لنتائج البحث.
- **location**: اختياري. تحديد الموقع لنتائج البحث.
- **locale**: اختياري. تحديد اللغة المحلية لنتائج البحث.
- **n_results**: عدد نتائج البحث المُرجعة. الافتراضي هو `10`.
يمكن العثور على قيم `country` و `location` و `locale` و `search_url` في [Serper Playground](https://serper.dev/playground).
## مثال مع المعاملات
إليك مثالاً يوضح كيفية استخدام الأداة مع معاملات إضافية:
```python Code
from crewai_tools import SerperDevTool
tool = SerperDevTool(
search_url="https://google.serper.dev/scholar",
n_results=2,
)
print(tool.run(search_query="ChatGPT"))
# Using Tool: Search the internet
# Search results: Title: Role of chat gpt in public health
# Link: https://link.springer.com/article/10.1007/s10439-023-03172-7
# Snippet: … ChatGPT in public health. In this overview, we will examine the potential uses of ChatGPT in
# ---
# Title: Potential use of chat gpt in global warming
# Link: https://link.springer.com/article/10.1007/s10439-023-03171-8
# Snippet: … as ChatGPT, have the potential to play a critical role in advancing our understanding of climate
# ---
```
```python Code
from crewai_tools import SerperDevTool
tool = SerperDevTool(
country="fr",
locale="fr",
location="Paris, Paris, Ile-de-France, France",
n_results=2,
)
print(tool.run(search_query="Jeux Olympiques"))
# Using Tool: Search the internet
# Search results: Title: Jeux Olympiques de Paris 2024 - Actualités, calendriers, résultats
# Link: https://olympics.com/fr/paris-2024
# Snippet: Quels sont les sports présents aux Jeux Olympiques de Paris 2024 ? · Athlétisme · Aviron · Badminton · Basketball · Basketball 3x3 · Boxe · Breaking · Canoë ...
# ---
# Title: Billetterie Officielle de Paris 2024 - Jeux Olympiques et Paralympiques
# Link: https://tickets.paris2024.org/
# Snippet: Achetez vos billets exclusivement sur le site officiel de la billetterie de Paris 2024 pour participer au plus grand événement sportif au monde.
# ---
```
## الخلاصة
من خلال دمج `SerperDevTool` في مشاريع Python، يكتسب المستخدمون القدرة على إجراء عمليات بحث فورية وذات صلة عبر الإنترنت مباشرة من تطبيقاتهم.
تسمح المعاملات المحدّثة بنتائج بحث أكثر تخصيصاً وتوطيناً. من خلال الالتزام بإرشادات الإعداد والاستخدام المقدمة، يصبح دمج هذه الأداة في المشاريع سلساً ومباشراً.

View File

@@ -0,0 +1,140 @@
---
title: "أداة استخراج Tavily"
description: "استخراج محتوى منظم من صفحات الويب باستخدام Tavily API"
icon: square-poll-horizontal
mode: "wide"
---
تتيح أداة `TavilyExtractorTool` لوكلاء CrewAI استخراج محتوى منظم من صفحات الويب باستخدام Tavily API. يمكنها معالجة عناوين URL مفردة أو قوائم من عناوين URL وتوفر خيارات للتحكم في عمق الاستخراج وتضمين الصور.
## التثبيت
لاستخدام `TavilyExtractorTool`، تحتاج إلى تثبيت مكتبة `tavily-python`:
```shell
pip install 'crewai[tools]' tavily-python
```
تحتاج أيضاً إلى تعيين مفتاح Tavily API كمتغير بيئة:
```bash
export TAVILY_API_KEY='your-tavily-api-key'
```
## مثال على الاستخدام
إليك كيفية تهيئة واستخدام `TavilyExtractorTool` مع وكيل CrewAI:
```python
import os
from crewai import Agent, Task, Crew
from crewai_tools import TavilyExtractorTool
# Ensure TAVILY_API_KEY is set in your environment
# os.environ["TAVILY_API_KEY"] = "YOUR_API_KEY"
# Initialize the tool
tavily_tool = TavilyExtractorTool()
# Create an agent that uses the tool
extractor_agent = Agent(
role='Web Content Extractor',
goal='Extract key information from specified web pages',
backstory='You are an expert at extracting relevant content from websites using the Tavily API.',
tools=[tavily_tool],
verbose=True
)
# Define a task for the agent
extract_task = Task(
description='Extract the main content from the URL https://example.com using basic extraction depth.',
expected_output='A JSON string containing the extracted content from the URL.',
agent=extractor_agent
)
# Create and run the crew
crew = Crew(
agents=[extractor_agent],
tasks=[extract_task],
verbose=2
)
result = crew.kickoff()
print(result)
```
## خيارات التكوين
تقبل أداة `TavilyExtractorTool` المعاملات التالية:
- `urls` (Union[List[str], str]): **مطلوب**. سلسلة URL واحدة أو قائمة من سلاسل URL لاستخراج البيانات منها.
- `include_images` (Optional[bool]): ما إذا كان يجب تضمين الصور في نتائج الاستخراج. الافتراضي هو `False`.
- `extract_depth` (Literal["basic", "advanced"]): عمق الاستخراج. استخدم `"basic"` للاستخراج السريع السطحي أو `"advanced"` للاستخراج الأكثر شمولاً. الافتراضي هو `"basic"`.
- `timeout` (int): الحد الأقصى للوقت بالثواني لانتظار إكمال طلب الاستخراج. الافتراضي هو `60`.
## الاستخدام المتقدم
### عناوين URL متعددة مع استخراج متقدم
```python
# Example with multiple URLs and advanced extraction
multi_extract_task = Task(
description='Extract content from https://example.com and https://anotherexample.org using advanced extraction.',
expected_output='A JSON string containing the extracted content from both URLs.',
agent=extractor_agent
)
# Configure the tool with custom parameters
custom_extractor = TavilyExtractorTool(
extract_depth='advanced',
include_images=True,
timeout=120
)
agent_with_custom_tool = Agent(
role="Advanced Content Extractor",
goal="Extract comprehensive content with images",
tools=[custom_extractor]
)
```
### معاملات الأداة
يمكنك تخصيص سلوك الأداة عن طريق تعيين المعاملات أثناء التهيئة:
```python
# Initialize with custom configuration
extractor_tool = TavilyExtractorTool(
extract_depth='advanced', # More comprehensive extraction
include_images=True, # Include image results
timeout=90 # Custom timeout
)
```
## الميزات
- **عنوان URL واحد أو متعدد**: استخراج المحتوى من عنوان URL واحد أو معالجة عناوين URL متعددة في طلب واحد
- **عمق قابل للتكوين**: الاختيار بين أوضاع الاستخراج الأساسي (السريع) والمتقدم (الشامل)
- **دعم الصور**: تضمين الصور اختيارياً في نتائج الاستخراج
- **مخرجات منظمة**: إرجاع JSON منسّق يحتوي على المحتوى المستخرج
- **معالجة الأخطاء**: معالجة قوية لمهلات الشبكة وأخطاء الاستخراج
## تنسيق الاستجابة
تُرجع الأداة سلسلة JSON تمثل البيانات المنظمة المستخرجة من عنوان (عناوين) URL المقدمة. يعتمد الهيكل الدقيق على محتوى الصفحات و `extract_depth` المستخدم.
تشمل عناصر الاستجابة الشائعة:
- **Title**: عنوان الصفحة
- **Content**: المحتوى النصي الرئيسي للصفحة
- **Images**: عناوين URL للصور والبيانات الوصفية (عند `include_images=True`)
- **Metadata**: معلومات إضافية عن الصفحة مثل المؤلف والوصف وغيرها
## حالات الاستخدام
- **تحليل المحتوى**: استخراج وتحليل المحتوى من مواقع المنافسين
- **البحث**: جمع بيانات منظمة من مصادر متعددة للتحليل
- **ترحيل المحتوى**: استخراج المحتوى من المواقع الحالية للترحيل
- **المراقبة**: الاستخراج المنتظم للمحتوى لاكتشاف التغييرات
- **جمع البيانات**: الاستخراج المنهجي للمعلومات من مصادر الويب
راجع [توثيق Tavily API](https://docs.tavily.com/docs/tavily-api/python-sdk#extract) للحصول على معلومات مفصلة حول هيكل الاستجابة والخيارات المتاحة.

View File

@@ -0,0 +1,125 @@
---
title: "أداة بحث Tavily"
description: "إجراء عمليات بحث شاملة على الويب باستخدام Tavily Search API"
icon: "magnifying-glass"
mode: "wide"
---
توفر أداة `TavilySearchTool` واجهة لـ Tavily Search API، مما يتيح لوكلاء CrewAI إجراء عمليات بحث شاملة على الويب. تسمح بتحديد عمق البحث والمواضيع والنطاقات الزمنية والنطاقات المضمنة/المستبعدة، وما إذا كان يجب تضمين إجابات مباشرة أو محتوى خام أو صور في النتائج.
## التثبيت
لاستخدام `TavilySearchTool`، تحتاج إلى تثبيت مكتبة `tavily-python`:
```shell
pip install 'crewai[tools]' tavily-python
```
## متغيرات البيئة
تأكد من تعيين مفتاح Tavily API كمتغير بيئة:
```bash
export TAVILY_API_KEY='your_tavily_api_key'
```
احصل على مفتاح API على https://app.tavily.com/ (سجّل، ثم أنشئ مفتاحاً).
## مثال على الاستخدام
إليك كيفية تهيئة واستخدام `TavilySearchTool` مع وكيل CrewAI:
```python
import os
from crewai import Agent, Task, Crew
from crewai_tools import TavilySearchTool
# Ensure the TAVILY_API_KEY environment variable is set
# os.environ["TAVILY_API_KEY"] = "YOUR_TAVILY_API_KEY"
# Initialize the tool
tavily_tool = TavilySearchTool()
# Create an agent that uses the tool
researcher = Agent(
role='Market Researcher',
goal='Find information about the latest AI trends',
backstory='An expert market researcher specializing in technology.',
tools=[tavily_tool],
verbose=True
)
# Create a task for the agent
research_task = Task(
description='Search for the top 3 AI trends in 2024.',
expected_output='A JSON report summarizing the top 3 AI trends found.',
agent=researcher
)
# Form the crew and kick it off
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=2
)
result = crew.kickoff()
print(result)
```
## خيارات التكوين
تقبل أداة `TavilySearchTool` المعاملات التالية أثناء التهيئة أو عند استدعاء طريقة `run`:
- `query` (str): **مطلوب**. سلسلة استعلام البحث.
- `search_depth` (Literal["basic", "advanced"]، اختياري): عمق البحث. الافتراضي هو `"basic"`.
- `topic` (Literal["general", "news", "finance"]، اختياري): الموضوع لتركيز البحث عليه. الافتراضي هو `"general"`.
- `time_range` (Literal["day", "week", "month", "year"]، اختياري): النطاق الزمني للبحث. الافتراضي هو `None`.
- `days` (int، اختياري): عدد الأيام للبحث للخلف. ذو صلة إذا لم يتم تعيين `time_range`. الافتراضي هو `7`.
- `max_results` (int، اختياري): الحد الأقصى لعدد نتائج البحث المُرجعة. الافتراضي هو `5`.
- `include_domains` (Sequence[str]، اختياري): قائمة بالنطاقات لإعطائها الأولوية في البحث. الافتراضي هو `None`.
- `exclude_domains` (Sequence[str]، اختياري): قائمة بالنطاقات لاستبعادها من البحث. الافتراضي هو `None`.
- `include_answer` (Union[bool, Literal["basic", "advanced"]]، اختياري): ما إذا كان يجب تضمين إجابة مباشرة مُركّبة من نتائج البحث. الافتراضي هو `False`.
- `include_raw_content` (bool، اختياري): ما إذا كان يجب تضمين محتوى HTML الخام للصفحات المبحوث عنها. الافتراضي هو `False`.
- `include_images` (bool، اختياري): ما إذا كان يجب تضمين نتائج الصور. الافتراضي هو `False`.
- `timeout` (int، اختياري): مهلة الطلب بالثواني. الافتراضي هو `60`.
## الاستخدام المتقدم
يمكنك تكوين الأداة بمعاملات مخصصة:
```python
# Example: Initialize with specific parameters
custom_tavily_tool = TavilySearchTool(
search_depth='advanced',
max_results=10,
include_answer=True
)
# The agent will use these defaults
agent_with_custom_tool = Agent(
role="Advanced Researcher",
goal="Conduct detailed research with comprehensive results",
tools=[custom_tavily_tool]
)
```
## الميزات
- **بحث شامل**: الوصول إلى فهرس بحث Tavily القوي
- **عمق قابل للتكوين**: الاختيار بين أوضاع البحث الأساسي والمتقدم
- **تصفية المواضيع**: تركيز عمليات البحث على المواضيع العامة أو الأخبار أو المالية
- **التحكم في النطاق الزمني**: تقييد النتائج لفترات زمنية محددة
- **التحكم في النطاقات**: تضمين أو استبعاد نطاقات محددة
- **إجابات مباشرة**: الحصول على إجابات مُركّبة من نتائج البحث
- **تصفية المحتوى**: منع مشاكل نافذة السياق مع اقتطاع المحتوى التلقائي
## تنسيق الاستجابة
تُرجع الأداة نتائج البحث كسلسلة JSON تحتوي على:
- نتائج بحث مع عناوين وعناوين URL ومقتطفات محتوى
- إجابات مباشرة اختيارية للاستعلامات
- نتائج صور اختيارية
- محتوى HTML خام اختياري (عند التفعيل)
يتم اقتطاع المحتوى لكل نتيجة تلقائياً لمنع مشاكل نافذة السياق مع الحفاظ على المعلومات الأكثر صلة.

View File

@@ -0,0 +1,78 @@
---
title: البحث في المواقع باستخدام RAG
description: أداة `WebsiteSearchTool` مصممة لإجراء بحث RAG (التوليد المعزز بالاسترجاع) داخل محتوى موقع ويب.
icon: globe-stand
mode: "wide"
---
# `WebsiteSearchTool`
<Note>
أداة WebsiteSearchTool حالياً في مرحلة تجريبية. نحن نعمل بنشاط على دمج هذه الأداة في مجموعة عروضنا وسنقوم بتحديث التوثيق وفقاً لذلك.
</Note>
## الوصف
أداة WebsiteSearchTool مصممة كمفهوم لإجراء عمليات بحث دلالية داخل محتوى المواقع.
تهدف إلى الاستفادة من نماذج التعلم الآلي المتقدمة مثل التوليد المعزز بالاسترجاع (RAG) للتنقل واستخراج المعلومات من عناوين URL المحددة بكفاءة.
تهدف هذه الأداة إلى توفير المرونة، مما يسمح للمستخدمين بإجراء عمليات بحث عبر أي موقع أو التركيز على مواقع محددة ذات اهتمام.
يرجى ملاحظة أن تفاصيل التنفيذ الحالية لأداة WebsiteSearchTool قيد التطوير، وقد لا تكون وظائفها كما هو موصوف متاحة بعد.
## التثبيت
لتحضير بيئتك لعندما تصبح أداة WebsiteSearchTool متاحة، يمكنك تثبيت الحزمة الأساسية بـ:
```shell
pip install 'crewai[tools]'
```
يثبّت هذا الأمر التبعيات اللازمة لضمان أنه بمجرد دمج الأداة بالكامل، يمكن للمستخدمين البدء في استخدامها فوراً.
## مثال على الاستخدام
فيما يلي أمثلة على كيفية استخدام أداة WebsiteSearchTool في سيناريوهات مختلفة. يرجى ملاحظة أن هذه الأمثلة توضيحية وتمثل وظائف مخططة:
```python Code
from crewai_tools import WebsiteSearchTool
# Example of initiating tool that agents can use
# to search across any discovered websites
tool = WebsiteSearchTool()
# Example of limiting the search to the content of a specific website,
# so now agents can only search within that website
tool = WebsiteSearchTool(website='https://example.com')
```
## المعاملات
- `website`: معامل اختياري مخصص لتحديد عنوان URL للموقع لعمليات البحث المركزة. هذا المعامل مصمم لتعزيز مرونة الأداة من خلال السماح بعمليات بحث موجّهة عند الحاجة.
## خيارات التخصيص
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
tool = WebsiteSearchTool(
config=dict(
llm=dict(
provider="ollama", # or google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google-generativeai", # or openai, ollama, ...
config=dict(
model_name="gemini-embedding-001",
task_type="RETRIEVAL_DOCUMENT",
# title="Embeddings",
),
),
)
)
```

View File

@@ -0,0 +1,195 @@
---
title: البحث في قنوات YouTube باستخدام RAG
description: أداة `YoutubeChannelSearchTool` مصممة لإجراء بحث RAG (التوليد المعزز بالاسترجاع) داخل محتوى قناة YouTube.
icon: youtube
mode: "wide"
---
# `YoutubeChannelSearchTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
هذه الأداة مصممة لإجراء عمليات بحث دلالية داخل محتوى قناة YouTube محددة.
من خلال الاستفادة من منهجية RAG (التوليد المعزز بالاسترجاع)، توفر نتائج بحث ذات صلة،
مما يجعلها لا تقدر بثمن لاستخراج المعلومات أو العثور على محتوى محدد دون الحاجة إلى تصفح الفيديوهات يدوياً.
تبسّط عملية البحث داخل قنوات YouTube، مما يخدم الباحثين ومنشئي المحتوى والمشاهدين الذين يبحثون عن معلومات أو مواضيع محددة.
## التثبيت
لاستخدام YoutubeChannelSearchTool، يجب تثبيت حزمة `crewai_tools`. نفّذ الأمر التالي في الطرفية للتثبيت:
```shell
pip install 'crewai[tools]'
```
## مثال
يوضح المثال التالي كيفية استخدام `YoutubeChannelSearchTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import YoutubeChannelSearchTool
# Initialize the tool for general YouTube channel searches
youtube_channel_tool = YoutubeChannelSearchTool()
# Define an agent that uses the tool
channel_researcher = Agent(
role="Channel Researcher",
goal="Extract relevant information from YouTube channels",
backstory="An expert researcher who specializes in analyzing YouTube channel content.",
tools=[youtube_channel_tool],
verbose=True,
)
# Example task to search for information in a specific channel
research_task = Task(
description="Search for information about machine learning tutorials in the YouTube channel {youtube_channel_handle}",
expected_output="A summary of the key machine learning tutorials available on the channel.",
agent=channel_researcher,
)
# Create and run the crew
crew = Crew(agents=[channel_researcher], tasks=[research_task])
result = crew.kickoff(inputs={"youtube_channel_handle": "@exampleChannel"})
```
يمكنك أيضاً تهيئة الأداة بمعرّف قناة YouTube محدد:
```python Code
# Initialize the tool with a specific YouTube channel handle
youtube_channel_tool = YoutubeChannelSearchTool(
youtube_channel_handle='@exampleChannel'
)
# Define an agent that uses the tool
channel_researcher = Agent(
role="Channel Researcher",
goal="Extract relevant information from a specific YouTube channel",
backstory="An expert researcher who specializes in analyzing YouTube channel content.",
tools=[youtube_channel_tool],
verbose=True,
)
```
## المعاملات
تقبل أداة `YoutubeChannelSearchTool` المعاملات التالية:
- **youtube_channel_handle**: اختياري. معرّف قناة YouTube للبحث داخلها. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة. إذا لم يبدأ المعرّف بـ '@'، سيتم إضافته تلقائياً.
- **config**: اختياري. تكوين لنظام RAG الأساسي، بما في ذلك إعدادات LLM والتضمينات.
- **summarize**: اختياري. ما إذا كان يجب تلخيص المحتوى المسترجع. الافتراضي هو `False`.
عند استخدام الأداة مع وكيل، سيحتاج الوكيل إلى تقديم:
- **search_query**: مطلوب. استعلام البحث للعثور على معلومات ذات صلة في محتوى القناة.
- **youtube_channel_handle**: مطلوب فقط إذا لم يتم تقديمه أثناء التهيئة. معرّف قناة YouTube للبحث داخلها.
## النموذج المخصص والتضمينات
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
youtube_channel_tool = YoutubeChannelSearchTool(
config=dict(
llm=dict(
provider="ollama", # or google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google-generativeai", # or openai, ollama, ...
config=dict(
model_name="gemini-embedding-001",
task_type="RETRIEVAL_DOCUMENT",
# title="Embeddings",
),
),
)
)
```
## مثال على التكامل مع الوكيل
إليك مثالاً أكثر تفصيلاً لكيفية دمج `YoutubeChannelSearchTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import YoutubeChannelSearchTool
# Initialize the tool
youtube_channel_tool = YoutubeChannelSearchTool()
# Define an agent that uses the tool
channel_researcher = Agent(
role="Channel Researcher",
goal="Extract and analyze information from YouTube channels",
backstory="""You are an expert channel researcher who specializes in extracting
and analyzing information from YouTube channels. You have a keen eye for detail
and can quickly identify key points and insights from video content across an entire channel.""",
tools=[youtube_channel_tool],
verbose=True,
)
# Create a task for the agent
research_task = Task(
description="""
Search for information about data science projects and tutorials
in the YouTube channel {youtube_channel_handle}.
Focus on:
1. Key data science techniques covered
2. Popular tutorial series
3. Most viewed or recommended videos
Provide a comprehensive summary of these points.
""",
expected_output="A detailed summary of data science content available on the channel.",
agent=channel_researcher,
)
# Run the task
crew = Crew(agents=[channel_researcher], tasks=[research_task])
result = crew.kickoff(inputs={"youtube_channel_handle": "@exampleDataScienceChannel"})
```
## تفاصيل التنفيذ
أداة `YoutubeChannelSearchTool` مُنفّذة كفئة فرعية من `RagTool`، التي توفر الوظائف الأساسية للتوليد المعزز بالاسترجاع:
```python Code
class YoutubeChannelSearchTool(RagTool):
name: str = "Search a Youtube Channels content"
description: str = "A tool that can be used to semantic search a query from a Youtube Channels content."
args_schema: Type[BaseModel] = YoutubeChannelSearchToolSchema
def __init__(self, youtube_channel_handle: Optional[str] = None, **kwargs):
super().__init__(**kwargs)
if youtube_channel_handle is not None:
kwargs["data_type"] = DataType.YOUTUBE_CHANNEL
self.add(youtube_channel_handle)
self.description = f"A tool that can be used to semantic search a query the {youtube_channel_handle} Youtube Channels content."
self.args_schema = FixedYoutubeChannelSearchToolSchema
self._generate_description()
def add(
self,
youtube_channel_handle: str,
**kwargs: Any,
) -> None:
if not youtube_channel_handle.startswith("@"):
youtube_channel_handle = f"@{youtube_channel_handle}"
super().add(youtube_channel_handle, **kwargs)
```
## الخلاصة
توفر أداة `YoutubeChannelSearchTool` طريقة قوية للبحث واستخراج المعلومات من محتوى قنوات YouTube باستخدام تقنيات RAG. من خلال تمكين الوكلاء من البحث عبر فيديوهات قناة كاملة، تسهّل مهام استخراج المعلومات والتحليل التي قد يكون من الصعب تنفيذها بطريقة أخرى. هذه الأداة مفيدة بشكل خاص للبحث وتحليل المحتوى واستخراج المعرفة من قنوات YouTube.

View File

@@ -0,0 +1,188 @@
---
title: البحث في فيديوهات YouTube باستخدام RAG
description: أداة `YoutubeVideoSearchTool` مصممة لإجراء بحث RAG (التوليد المعزز بالاسترجاع) داخل محتوى فيديو YouTube.
icon: youtube
mode: "wide"
---
# `YoutubeVideoSearchTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
هذه الأداة جزء من حزمة `crewai_tools` وهي مصممة لإجراء عمليات بحث دلالية داخل محتوى فيديو YouTube، باستخدام تقنيات التوليد المعزز بالاسترجاع (RAG).
هي واحدة من عدة أدوات "بحث" في الحزمة التي تستفيد من RAG لمصادر مختلفة.
تتيح أداة YoutubeVideoSearchTool المرونة في عمليات البحث؛ يمكن للمستخدمين البحث عبر أي محتوى فيديو YouTube دون تحديد عنوان URL للفيديو،
أو يمكنهم توجيه بحثهم إلى فيديو YouTube محدد من خلال تقديم عنوان URL الخاص به.
## التثبيت
لاستخدام `YoutubeVideoSearchTool`، يجب أولاً تثبيت حزمة `crewai_tools`.
تحتوي هذه الحزمة على `YoutubeVideoSearchTool` إلى جانب أدوات مساعدة أخرى مصممة لتعزيز مهام تحليل ومعالجة البيانات.
ثبّت الحزمة بتنفيذ الأمر التالي في الطرفية:
```shell
pip install 'crewai[tools]'
```
## مثال
يوضح المثال التالي كيفية استخدام `YoutubeVideoSearchTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import YoutubeVideoSearchTool
# Initialize the tool for general YouTube video searches
youtube_search_tool = YoutubeVideoSearchTool()
# Define an agent that uses the tool
video_researcher = Agent(
role="Video Researcher",
goal="Extract relevant information from YouTube videos",
backstory="An expert researcher who specializes in analyzing video content.",
tools=[youtube_search_tool],
verbose=True,
)
# Example task to search for information in a specific video
research_task = Task(
description="Search for information about machine learning frameworks in the YouTube video at {youtube_video_url}",
expected_output="A summary of the key machine learning frameworks mentioned in the video.",
agent=video_researcher,
)
# Create and run the crew
crew = Crew(agents=[video_researcher], tasks=[research_task])
result = crew.kickoff(inputs={"youtube_video_url": "https://youtube.com/watch?v=example"})
```
يمكنك أيضاً تهيئة الأداة بعنوان URL محدد لفيديو YouTube:
```python Code
# Initialize the tool with a specific YouTube video URL
youtube_search_tool = YoutubeVideoSearchTool(
youtube_video_url='https://youtube.com/watch?v=example'
)
# Define an agent that uses the tool
video_researcher = Agent(
role="Video Researcher",
goal="Extract relevant information from a specific YouTube video",
backstory="An expert researcher who specializes in analyzing video content.",
tools=[youtube_search_tool],
verbose=True,
)
```
## المعاملات
تقبل أداة `YoutubeVideoSearchTool` المعاملات التالية:
- **youtube_video_url**: اختياري. عنوان URL لفيديو YouTube للبحث داخله. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
- **config**: اختياري. تكوين لنظام RAG الأساسي، بما في ذلك إعدادات LLM والتضمينات.
- **summarize**: اختياري. ما إذا كان يجب تلخيص المحتوى المسترجع. الافتراضي هو `False`.
عند استخدام الأداة مع وكيل، سيحتاج الوكيل إلى تقديم:
- **search_query**: مطلوب. استعلام البحث للعثور على معلومات ذات صلة في محتوى الفيديو.
- **youtube_video_url**: مطلوب فقط إذا لم يتم تقديمه أثناء التهيئة. عنوان URL لفيديو YouTube للبحث داخله.
## النموذج المخصص والتضمينات
بشكل افتراضي، تستخدم الأداة OpenAI لكل من التضمينات والتلخيص. لتخصيص النموذج، يمكنك استخدام قاموس تكوين كما يلي:
```python Code
youtube_search_tool = YoutubeVideoSearchTool(
config=dict(
llm=dict(
provider="ollama", # or google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google-generativeai", # or openai, ollama, ...
config=dict(
model_name="gemini-embedding-001",
task_type="RETRIEVAL_DOCUMENT",
# title="Embeddings",
),
),
)
)
```
## مثال على التكامل مع الوكيل
إليك مثالاً أكثر تفصيلاً لكيفية دمج `YoutubeVideoSearchTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import YoutubeVideoSearchTool
# Initialize the tool
youtube_search_tool = YoutubeVideoSearchTool()
# Define an agent that uses the tool
video_researcher = Agent(
role="Video Researcher",
goal="Extract and analyze information from YouTube videos",
backstory="""You are an expert video researcher who specializes in extracting
and analyzing information from YouTube videos. You have a keen eye for detail
and can quickly identify key points and insights from video content.""",
tools=[youtube_search_tool],
verbose=True,
)
# Create a task for the agent
research_task = Task(
description="""
Search for information about recent advancements in artificial intelligence
in the YouTube video at {youtube_video_url}.
Focus on:
1. Key AI technologies mentioned
2. Real-world applications discussed
3. Future predictions made by the speaker
Provide a comprehensive summary of these points.
""",
expected_output="A detailed summary of AI advancements, applications, and future predictions from the video.",
agent=video_researcher,
)
# Run the task
crew = Crew(agents=[video_researcher], tasks=[research_task])
result = crew.kickoff(inputs={"youtube_video_url": "https://youtube.com/watch?v=example"})
```
## تفاصيل التنفيذ
أداة `YoutubeVideoSearchTool` مُنفّذة كفئة فرعية من `RagTool`، التي توفر الوظائف الأساسية للتوليد المعزز بالاسترجاع:
```python Code
class YoutubeVideoSearchTool(RagTool):
name: str = "Search a Youtube Video content"
description: str = "A tool that can be used to semantic search a query from a Youtube Video content."
args_schema: Type[BaseModel] = YoutubeVideoSearchToolSchema
def __init__(self, youtube_video_url: Optional[str] = None, **kwargs):
super().__init__(**kwargs)
if youtube_video_url is not None:
kwargs["data_type"] = DataType.YOUTUBE_VIDEO
self.add(youtube_video_url)
self.description = f"A tool that can be used to semantic search a query the {youtube_video_url} Youtube Video content."
self.args_schema = FixedYoutubeVideoSearchToolSchema
self._generate_description()
```
## الخلاصة
توفر أداة `YoutubeVideoSearchTool` طريقة قوية للبحث واستخراج المعلومات من محتوى فيديو YouTube باستخدام تقنيات RAG. من خلال تمكين الوكلاء من البحث داخل محتوى الفيديو، تسهّل مهام استخراج المعلومات والتحليل التي قد يكون من الصعب تنفيذها بطريقة أخرى. هذه الأداة مفيدة بشكل خاص للبحث وتحليل المحتوى واستخراج المعرفة من مصادر الفيديو.

View File

@@ -0,0 +1,31 @@
---
title: نظرة عامة
description: تكاملات لنشر وأتمتة الطواقم مع منصات خارجية
icon: face-smile
mode: "wide"
---
## التكاملات المتاحة
<CardGroup cols={2}>
<Card
title="أداة Bedrock Invoke Agent"
icon="cloud"
href="/ar/tools/integration/bedrockinvokeagenttool"
color="#0891B2"
>
استدعاء Amazon Bedrock Agents من CrewAI لتنسيق الإجراءات عبر خدمات AWS.
</Card>
<Card
title="أداة أتمتة CrewAI"
icon="bolt"
href="/ar/tools/integration/crewaiautomationtool"
color="#7C3AED"
>
أتمتة النشر والعمليات من خلال دمج CrewAI مع المنصات وسير العمل الخارجية.
</Card>
</CardGroup>
استخدم هذه التكاملات لربط CrewAI بالبنية التحتية وسير العمل الخاصة بك.

View File

@@ -0,0 +1,112 @@
---
title: أدوات Bright Data
description: تكاملات Bright Data للبحث في SERP واستخراج البيانات عبر Web Unlocker وDataset API.
icon: spider
mode: "wide"
---
# أدوات Bright Data
هذه المجموعة من الأدوات تدمج خدمات Bright Data لاستخراج البيانات من الويب.
## التثبيت
```shell
uv add crewai-tools requests aiohttp
```
## متغيرات البيئة
- `BRIGHT_DATA_API_KEY` (مطلوب)
- `BRIGHT_DATA_ZONE` (لـ SERP/Web Unlocker)
أنشئ بيانات الاعتماد على https://brightdata.com/ (سجّل، ثم أنشئ رمز API ومنطقة).
راجع التوثيق: https://developers.brightdata.com/
## الأدوات المضمنة
- `BrightDataSearchTool`: بحث SERP (Google/Bing/Yandex) مع خيارات الموقع الجغرافي واللغة والجهاز.
- `BrightDataWebUnlockerTool`: استخراج الصفحات مع تجاوز مكافحة الروبوتات والتصيير.
- `BrightDataDatasetTool`: تشغيل مهام Dataset API وجلب النتائج.
## أمثلة
### بحث SERP
```python Code
from crewai_tools import BrightDataSearchTool
tool = BrightDataSearchTool(
query="CrewAI",
country="us",
)
print(tool.run())
```
### Web Unlocker
```python Code
from crewai_tools import BrightDataWebUnlockerTool
tool = BrightDataWebUnlockerTool(
url="https://example.com",
format="markdown",
)
print(tool.run(url="https://example.com"))
```
### Dataset API
```python Code
from crewai_tools import BrightDataDatasetTool
tool = BrightDataDatasetTool(
dataset_type="ecommerce",
url="https://example.com/product",
)
print(tool.run())
```
## استكشاف الأخطاء وإصلاحها
- 401/403: تحقق من `BRIGHT_DATA_API_KEY` و `BRIGHT_DATA_ZONE`.
- محتوى فارغ/محظور: فعّل التصيير أو جرّب منطقة مختلفة.
## مثال
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import BrightDataSearchTool
tool = BrightDataSearchTool(
query="CrewAI",
country="us",
)
agent = Agent(
role="Web Researcher",
goal="Search with Bright Data",
backstory="Finds reliable results",
tools=[tool],
verbose=True,
)
task = Task(
description="Search for CrewAI and summarize top results",
expected_output="Short summary with links",
agent=agent,
)
crew = Crew(
agents=[agent],
tasks=[task],
verbose=True,
)
result = crew.kickoff()
```

View File

@@ -0,0 +1,51 @@
---
title: أداة تحميل Browserbase
description: Browserbase هي منصة للمطورين لتشغيل وإدارة ومراقبة المتصفحات بدون واجهة بشكل موثوق.
icon: browser
mode: "wide"
---
# `BrowserbaseLoadTool`
## الوصف
[Browserbase](https://browserbase.com) هي منصة للمطورين لتشغيل وإدارة ومراقبة المتصفحات بدون واجهة بشكل موثوق.
عزّز عمليات استرجاع بيانات الذكاء الاصطناعي الخاصة بك بـ:
- [بنية تحتية بدون خادم](https://docs.browserbase.com/under-the-hood) توفر متصفحات موثوقة لاستخراج البيانات من واجهات المستخدم المعقدة
- [وضع التخفي](https://docs.browserbase.com/features/stealth-mode) مع تكتيكات البصمة المضمنة وحل CAPTCHA التلقائي
- [مصحح الجلسات](https://docs.browserbase.com/features/sessions) لفحص جلسة المتصفح مع الجدول الزمني للشبكة والسجلات
- [التصحيح المباشر](https://docs.browserbase.com/guides/session-debug-connection/browser-remote-control) لتصحيح الأتمتة بسرعة
## التثبيت
- احصل على مفتاح API ومعرّف المشروع من [browserbase.com](https://browserbase.com) وعيّنهما في متغيرات البيئة (`BROWSERBASE_API_KEY`، `BROWSERBASE_PROJECT_ID`).
- ثبّت [Browserbase SDK](http://github.com/browserbase/python-sdk) مع حزمة `crewai[tools]`:
```shell
pip install browserbase 'crewai[tools]'
```
## مثال
استخدم BrowserbaseLoadTool كما يلي للسماح لوكيلك بتحميل المواقع:
```python Code
from crewai_tools import BrowserbaseLoadTool
# Initialize the tool with the Browserbase API key and Project ID
tool = BrowserbaseLoadTool()
```
## المعاملات
يمكن استخدام المعاملات التالية لتخصيص سلوك `BrowserbaseLoadTool`:
| المعامل | النوع | الوصف |
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
| **api_key** | `string` | _اختياري_. مفتاح Browserbase API. الافتراضي هو متغير البيئة `BROWSERBASE_API_KEY`. |
| **project_id** | `string` | _اختياري_. معرّف مشروع Browserbase. الافتراضي هو متغير البيئة `BROWSERBASE_PROJECT_ID`. |
| **text_content** | `bool` | _اختياري_. استرجاع المحتوى النصي فقط. الافتراضي هو `False`. |
| **session_id** | `string` | _اختياري_. تقديم معرّف جلسة موجود. |
| **proxy** | `bool` | _اختياري_. تفعيل/تعطيل البروكسيات. الافتراضي هو `False`. |

View File

@@ -0,0 +1,48 @@
---
title: زحف المواقع باستخدام Firecrawl
description: أداة `FirecrawlCrawlWebsiteTool` مصممة لزحف المواقع وتحويلها إلى markdown نظيف أو بيانات منظمة.
icon: fire-flame
mode: "wide"
---
# `FirecrawlCrawlWebsiteTool`
## الوصف
[Firecrawl](https://firecrawl.dev) هي منصة لزحف وتحويل أي موقع إلى markdown نظيف أو بيانات منظمة.
## التثبيت
- احصل على مفتاح API من [firecrawl.dev](https://firecrawl.dev) وعيّنه في متغيرات البيئة (`FIRECRAWL_API_KEY`).
- ثبّت [Firecrawl SDK](https://github.com/mendableai/firecrawl) مع حزمة `crewai[tools]`:
```shell
pip install firecrawl-py 'crewai[tools]'
```
## مثال
استخدم FirecrawlScrapeFromWebsiteTool كما يلي للسماح لوكيلك بتحميل المواقع:
```python Code
from crewai_tools import FirecrawlCrawlWebsiteTool
tool = FirecrawlCrawlWebsiteTool(url='firecrawl.dev')
```
## المعاملات
- `api_key`: اختياري. يحدد مفتاح Firecrawl API. الافتراضي هو متغير البيئة `FIRECRAWL_API_KEY`.
- `url`: عنوان URL الأساسي لبدء الزحف منه.
- `page_options`: اختياري.
- `onlyMainContent`: اختياري. إرجاع المحتوى الرئيسي فقط للصفحة باستثناء الرؤوس وأشرطة التنقل والتذييلات وغيرها.
- `includeHtml`: اختياري. تضمين محتوى HTML الخام للصفحة. سيُخرج مفتاح html في الاستجابة.
- `crawler_options`: اختياري. خيارات للتحكم في سلوك الزحف.
- `includes`: اختياري. أنماط URL لتضمينها في الزحف.
- `exclude`: اختياري. أنماط URL لاستبعادها من الزحف.
- `generateImgAltText`: اختياري. توليد نص بديل للصور باستخدام LLMs (يتطلب خطة مدفوعة).
- `returnOnlyUrls`: اختياري. إذا كان true، يُرجع عناوين URL فقط كقائمة في حالة الزحف. ملاحظة: ستكون الاستجابة قائمة عناوين URL داخل البيانات، وليست قائمة مستندات.
- `maxDepth`: اختياري. الحد الأقصى لعمق الزحف. العمق 1 هو عنوان URL الأساسي، والعمق 2 يشمل عنوان URL الأساسي وأبنائه المباشرين، وهكذا.
- `mode`: اختياري. وضع الزحف المستخدم. الوضع السريع يزحف أسرع 4 مرات على المواقع بدون خريطة موقع ولكنه قد لا يكون دقيقاً ولا يجب استخدامه على المواقع التي تعتمد بشكل كبير على JavaScript.
- `limit`: اختياري. الحد الأقصى لعدد الصفحات للزحف.
- `timeout`: اختياري. المهلة بالملي ثانية لعملية الزحف.

View File

@@ -0,0 +1,44 @@
---
title: استخراج المواقع باستخدام Firecrawl
description: أداة `FirecrawlScrapeWebsiteTool` مصممة لاستخراج المواقع وتحويلها إلى markdown نظيف أو بيانات منظمة.
icon: fire-flame
mode: "wide"
---
# `FirecrawlScrapeWebsiteTool`
## الوصف
[Firecrawl](https://firecrawl.dev) هي منصة لزحف وتحويل أي موقع إلى markdown نظيف أو بيانات منظمة.
## التثبيت
- احصل على مفتاح API من [firecrawl.dev](https://firecrawl.dev) وعيّنه في متغيرات البيئة (`FIRECRAWL_API_KEY`).
- ثبّت [Firecrawl SDK](https://github.com/mendableai/firecrawl) مع حزمة `crewai[tools]`:
```shell
pip install firecrawl-py 'crewai[tools]'
```
## مثال
استخدم FirecrawlScrapeWebsiteTool كما يلي للسماح لوكيلك بتحميل المواقع:
```python Code
from crewai_tools import FirecrawlScrapeWebsiteTool
tool = FirecrawlScrapeWebsiteTool(url='firecrawl.dev')
```
## المعاملات
- `api_key`: اختياري. يحدد مفتاح Firecrawl API. الافتراضي هو متغير البيئة `FIRECRAWL_API_KEY`.
- `url`: عنوان URL المراد استخراجه.
- `page_options`: اختياري.
- `onlyMainContent`: اختياري. إرجاع المحتوى الرئيسي فقط للصفحة باستثناء الرؤوس وأشرطة التنقل والتذييلات وغيرها.
- `includeHtml`: اختياري. تضمين محتوى HTML الخام للصفحة. سيُخرج مفتاح html في الاستجابة.
- `extractor_options`: اختياري. خيارات لاستخراج المعلومات المنظمة من محتوى الصفحة باستخدام LLM
- `mode`: وضع الاستخراج المستخدم، يدعم حالياً 'llm-extraction'
- `extractionPrompt`: اختياري. موجّه يصف المعلومات المراد استخراجها من الصفحة
- `extractionSchema`: اختياري. المخطط للبيانات المراد استخراجها
- `timeout`: اختياري. المهلة بالملي ثانية للطلب

View File

@@ -0,0 +1,42 @@
---
title: بحث Firecrawl
description: أداة `FirecrawlSearchTool` مصممة للبحث في المواقع وتحويلها إلى markdown نظيف أو بيانات منظمة.
icon: fire-flame
mode: "wide"
---
# `FirecrawlSearchTool`
## الوصف
[Firecrawl](https://firecrawl.dev) هي منصة لزحف وتحويل أي موقع إلى markdown نظيف أو بيانات منظمة.
## التثبيت
- احصل على مفتاح API من [firecrawl.dev](https://firecrawl.dev) وعيّنه في متغيرات البيئة (`FIRECRAWL_API_KEY`).
- ثبّت [Firecrawl SDK](https://github.com/mendableai/firecrawl) مع حزمة `crewai[tools]`:
```shell
pip install firecrawl-py 'crewai[tools]'
```
## مثال
استخدم FirecrawlSearchTool كما يلي للسماح لوكيلك بتحميل المواقع:
```python Code
from crewai_tools import FirecrawlSearchTool
tool = FirecrawlSearchTool(query='what is firecrawl?')
```
## المعاملات
- `api_key`: اختياري. يحدد مفتاح Firecrawl API. الافتراضي هو متغير البيئة `FIRECRAWL_API_KEY`.
- `query`: سلسلة استعلام البحث المستخدمة للبحث.
- `page_options`: اختياري. خيارات لتنسيق النتائج.
- `onlyMainContent`: اختياري. إرجاع المحتوى الرئيسي فقط للصفحة باستثناء الرؤوس وأشرطة التنقل والتذييلات وغيرها.
- `includeHtml`: اختياري. تضمين محتوى HTML الخام للصفحة. سيُخرج مفتاح html في الاستجابة.
- `fetchPageContent`: اختياري. جلب المحتوى الكامل للصفحة.
- `search_options`: اختياري. خيارات للتحكم في سلوك الزحف.
- `limit`: اختياري. الحد الأقصى لعدد الصفحات للزحف.

View File

@@ -0,0 +1,87 @@
---
title: أداة تحميل Hyperbrowser
description: أداة `HyperbrowserLoadTool` تتيح استخراج البيانات من الويب والزحف باستخدام Hyperbrowser.
icon: globe
mode: "wide"
---
# `HyperbrowserLoadTool`
## الوصف
تتيح أداة `HyperbrowserLoadTool` استخراج البيانات من الويب والزحف باستخدام [Hyperbrowser](https://hyperbrowser.ai)، وهي منصة لتشغيل وتوسيع المتصفحات بدون واجهة. تسمح لك هذه الأداة باستخراج صفحة واحدة أو زحف موقع كامل، مع إرجاع المحتوى بتنسيق markdown أو HTML منسّق بشكل صحيح.
الميزات الرئيسية:
- قابلية توسع فورية - تشغيل مئات جلسات المتصفح في ثوانٍ دون متاعب البنية التحتية
- تكامل بسيط - يعمل بسلاسة مع الأدوات الشائعة مثل Puppeteer و Playwright
- واجهات API قوية - واجهات سهلة الاستخدام لاستخراج/زحف أي موقع
- تجاوز إجراءات مكافحة الروبوتات - وضع التخفي المدمج وحظر الإعلانات وحل CAPTCHA التلقائي والبروكسيات الدوّارة
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت Hyperbrowser SDK:
```shell
uv add hyperbrowser
```
## خطوات البدء
لاستخدام `HyperbrowserLoadTool` بفعالية، اتبع هذه الخطوات:
1. **التسجيل**: توجه إلى [Hyperbrowser](https://app.hyperbrowser.ai/) للتسجيل وتوليد مفتاح API.
2. **مفتاح API**: عيّن متغير البيئة `HYPERBROWSER_API_KEY` أو مرّره مباشرة إلى مُنشئ الأداة.
3. **تثبيت SDK**: ثبّت Hyperbrowser SDK باستخدام الأمر أعلاه.
## مثال
يوضح المثال التالي كيفية تهيئة الأداة واستخدامها لاستخراج بيانات من موقع:
```python Code
from crewai_tools import HyperbrowserLoadTool
from crewai import Agent
# Initialize the tool with your API key
tool = HyperbrowserLoadTool(api_key="your_api_key") # Or use environment variable
# Define an agent that uses the tool
@agent
def web_researcher(self) -> Agent:
'''
This agent uses the HyperbrowserLoadTool to scrape websites
and extract information.
'''
return Agent(
config=self.agents_config["web_researcher"],
tools=[tool]
)
```
## المعاملات
تقبل أداة `HyperbrowserLoadTool` المعاملات التالية:
### معاملات المُنشئ
- **api_key**: اختياري. مفتاح Hyperbrowser API الخاص بك. إذا لم يتم تقديمه، سيتم قراءته من متغير البيئة `HYPERBROWSER_API_KEY`.
### معاملات التشغيل
- **url**: مطلوب. عنوان URL للموقع المراد استخراجه أو زحفه.
- **operation**: اختياري. العملية المراد تنفيذها على الموقع. إما 'scrape' أو 'crawl'. الافتراضي هو 'scrape'.
- **params**: اختياري. معاملات إضافية لعملية الاستخراج أو الزحف.
## المعاملات المدعومة
للحصول على معلومات مفصلة حول جميع المعاملات المدعومة، قم بزيارة:
- [معاملات الاستخراج](https://docs.hyperbrowser.ai/reference/sdks/python/scrape#start-scrape-job-and-wait)
- [معاملات الزحف](https://docs.hyperbrowser.ai/reference/sdks/python/crawl#start-crawl-job-and-wait)
## تنسيق الإرجاع
تُرجع الأداة المحتوى بالتنسيق التالي:
- لعمليات **الاستخراج**: محتوى الصفحة بتنسيق markdown أو HTML.
- لعمليات **الزحف**: محتوى كل صفحة مفصولاً بفواصل، مع تضمين عنوان URL لكل صفحة.
## الخلاصة
توفر أداة `HyperbrowserLoadTool` طريقة قوية لاستخراج البيانات من المواقع وزحفها، مع التعامل مع السيناريوهات المعقدة مثل إجراءات مكافحة الروبوتات و CAPTCHA وغيرها. من خلال الاستفادة من منصة Hyperbrowser، تتيح هذه الأداة للوكلاء الوصول إلى محتوى الويب واستخراجه بكفاءة.

View File

@@ -0,0 +1,112 @@
---
title: "نظرة عامة"
description: "استخراج البيانات من المواقع وأتمتة تفاعلات المتصفح باستخدام أدوات استخراج قوية"
icon: "face-smile"
mode: "wide"
---
تتيح هذه الأدوات لوكلائك التفاعل مع الويب واستخراج البيانات من المواقع وأتمتة المهام المعتمدة على المتصفح. من الاستخراج البسيط من الويب إلى أتمتة المتصفح المعقدة، تغطي هذه الأدوات جميع احتياجات التفاعل مع الويب.
## **الأدوات المتاحة**
<CardGroup cols={2}>
<Card title="أداة استخراج المواقع" icon="globe" href="/ar/tools/web-scraping/scrapewebsitetool">
أداة استخراج بيانات من الويب متعددة الأغراض لاستخراج المحتوى من أي موقع.
</Card>
<Card title="أداة استخراج العناصر" icon="crosshairs" href="/ar/tools/web-scraping/scrapeelementfromwebsitetool">
استهداف عناصر محددة في صفحات الويب بقدرات استخراج دقيقة.
</Card>
<Card title="أداة زحف Firecrawl" icon="spider" href="/ar/tools/web-scraping/firecrawlcrawlwebsitetool">
زحف مواقع كاملة بشكل منهجي باستخدام محرك Firecrawl القوي.
</Card>
<Card title="أداة استخراج Firecrawl" icon="fire" href="/ar/tools/web-scraping/firecrawlscrapewebsitetool">
استخراج بيانات عالي الأداء من الويب مع قدرات Firecrawl المتقدمة.
</Card>
<Card title="أداة بحث Firecrawl" icon="magnifying-glass" href="/ar/tools/web-scraping/firecrawlsearchtool">
البحث واستخراج محتوى محدد باستخدام ميزات بحث Firecrawl.
</Card>
<Card title="أداة استخراج Selenium" icon="robot" href="/ar/tools/web-scraping/seleniumscrapingtool">
أتمتة المتصفح والاستخراج باستخدام قدرات Selenium WebDriver.
</Card>
<Card title="أداة ScrapFly" icon="plane" href="/ar/tools/web-scraping/scrapflyscrapetool">
استخراج احترافي من الويب مع خدمة ScrapFly المتميزة.
</Card>
<Card title="أداة ScrapGraph" icon="network-wired" href="/ar/tools/web-scraping/scrapegraphscrapetool">
استخراج بيانات من الويب قائم على الرسوم البيانية لعلاقات البيانات المعقدة.
</Card>
<Card title="أداة Spider" icon="spider" href="/ar/tools/web-scraping/spidertool">
قدرات شاملة للزحف واستخراج البيانات من الويب.
</Card>
<Card title="أداة BrowserBase" icon="browser" href="/ar/tools/web-scraping/browserbaseloadtool">
أتمتة المتصفح السحابية مع بنية BrowserBase التحتية.
</Card>
<Card title="أداة HyperBrowser" icon="window-maximize" href="/ar/tools/web-scraping/hyperbrowserloadtool">
تفاعلات متصفح سريعة مع محرك HyperBrowser المُحسّن.
</Card>
<Card title="أداة Stagehand" icon="hand" href="/ar/tools/web-scraping/stagehandtool">
أتمتة متصفح ذكية باستخدام أوامر اللغة الطبيعية.
</Card>
<Card title="أداة Oxylabs للاستخراج" icon="globe" href="/ar/tools/web-scraping/oxylabsscraperstool">
الوصول إلى بيانات الويب على نطاق واسع مع Oxylabs.
</Card>
<Card title="أدوات Bright Data" icon="spider" href="/ar/tools/web-scraping/brightdata-tools">
تكاملات بحث SERP و Web Unlocker و Dataset API.
</Card>
</CardGroup>
## **حالات الاستخدام الشائعة**
- **استخراج البيانات**: استخراج معلومات المنتجات والأسعار والمراجعات
- **مراقبة المحتوى**: تتبع التغييرات على المواقع ومصادر الأخبار
- **توليد العملاء المحتملين**: استخراج معلومات الاتصال وبيانات الأعمال
- **أبحاث السوق**: جمع المعلومات الاستخباراتية التنافسية وبيانات السوق
- **الاختبار وضمان الجودة**: أتمتة اختبار المتصفح وسير عمل التحقق
- **وسائل التواصل الاجتماعي**: استخراج المنشورات والتعليقات وتحليلات وسائل التواصل الاجتماعي
## **مثال سريع للبدء**
```python
from crewai_tools import ScrapeWebsiteTool, FirecrawlScrapeWebsiteTool, SeleniumScrapingTool
# Create scraping tools
simple_scraper = ScrapeWebsiteTool()
advanced_scraper = FirecrawlScrapeWebsiteTool()
browser_automation = SeleniumScrapingTool()
# Add to your agent
agent = Agent(
role="Web Research Specialist",
tools=[simple_scraper, advanced_scraper, browser_automation],
goal="Extract and analyze web data efficiently"
)
```
## **أفضل ممارسات الاستخراج**
- **احترام robots.txt**: تحقق دائماً واتبع سياسات استخراج المواقع
- **تحديد المعدل**: نفّذ تأخيرات بين الطلبات لتجنب إرهاق الخوادم
- **وكيل المستخدم**: استخدم سلاسل وكيل مستخدم مناسبة لتعريف الروبوت الخاص بك
- **الامتثال القانوني**: تأكد من أن أنشطة الاستخراج تتوافق مع شروط الخدمة
- **معالجة الأخطاء**: نفّذ معالجة أخطاء قوية لمشاكل الشبكة والطلبات المحظورة
- **جودة البيانات**: تحقق من صحة البيانات المستخرجة ونظّفها قبل المعالجة
## **دليل اختيار الأداة**
- **المهام البسيطة**: استخدم `ScrapeWebsiteTool` لاستخراج المحتوى الأساسي
- **المواقع كثيفة JavaScript**: استخدم `SeleniumScrapingTool` للمحتوى الديناميكي
- **التوسع والأداء**: استخدم `FirecrawlScrapeWebsiteTool` للاستخراج بكميات كبيرة
- **البنية التحتية السحابية**: استخدم `BrowserBaseLoadTool` لأتمتة المتصفح القابلة للتوسع
- **سير العمل المعقدة**: استخدم `StagehandTool` لتفاعلات المتصفح الذكية

View File

@@ -0,0 +1,237 @@
---
title: أدوات استخراج Oxylabs
description: >
تتيح أدوات استخراج Oxylabs الوصول بسهولة إلى المعلومات من المصادر المعنية. يرجى الاطلاع على قائمة المصادر المتاحة أدناه:
- `Amazon Product`
- `Amazon Search`
- `Google Seach`
- `Universal`
icon: globe
mode: "wide"
---
## التثبيت
احصل على بيانات الاعتماد بإنشاء حساب Oxylabs [هنا](https://oxylabs.io).
```shell
pip install 'crewai[tools]' oxylabs
```
راجع [توثيق Oxylabs](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/targets) للحصول على مزيد من المعلومات حول معاملات API.
# `OxylabsAmazonProductScraperTool`
### مثال
```python
from crewai_tools import OxylabsAmazonProductScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsAmazonProductScraperTool()
result = tool.run(query="AAAAABBBBCC")
print(result)
```
### المعاملات
- `query` - رمز ASIN المكون من 10 رموز.
- `domain` - توطين النطاق لـ Amazon.
- `geo_location` - موقع _التوصيل إلى_.
- `user_agent_type` - نوع الجهاز والمتصفح.
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى true.
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
### مثال متقدم
```python
from crewai_tools import OxylabsAmazonProductScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsAmazonProductScraperTool(
config={
"domain": "com",
"parse": True,
"context": [
{
"key": "autoselect_variant",
"value": True
}
]
}
)
result = tool.run(query="AAAAABBBBCC")
print(result)
```
# `OxylabsAmazonSearchScraperTool`
### مثال
```python
from crewai_tools import OxylabsAmazonSearchScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsAmazonSearchScraperTool()
result = tool.run(query="headsets")
print(result)
```
### المعاملات
- `query` - مصطلح بحث Amazon.
- `domain` - توطين النطاق لـ Bestbuy.
- `start_page` - رقم صفحة البداية.
- `pages` - عدد الصفحات المراد استرجاعها.
- `geo_location` - موقع _التوصيل إلى_.
- `user_agent_type` - نوع الجهاز والمتصفح.
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى true.
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
### مثال متقدم
```python
from crewai_tools import OxylabsAmazonSearchScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsAmazonSearchScraperTool(
config={
"domain": 'nl',
"start_page": 2,
"pages": 2,
"parse": True,
"context": [
{'key': 'category_id', 'value': 16391693031}
],
}
)
result = tool.run(query='nirvana tshirt')
print(result)
```
# `OxylabsGoogleSearchScraperTool`
### مثال
```python
from crewai_tools import OxylabsGoogleSearchScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsGoogleSearchScraperTool()
result = tool.run(query="iPhone 16")
print(result)
```
### المعاملات
- `query` - كلمة البحث المفتاحية.
- `domain` - توطين النطاق لـ Google.
- `start_page` - رقم صفحة البداية.
- `pages` - عدد الصفحات المراد استرجاعها.
- `limit` - عدد النتائج المراد استرجاعها في كل صفحة.
- `locale` - قيمة رأس `Accept-Language` التي تغيّر لغة واجهة صفحة بحث Google.
- `geo_location` - الموقع الجغرافي الذي يجب تكييف النتيجة له. استخدام هذا المعامل بشكل صحيح مهم للغاية للحصول على البيانات الصحيحة.
- `user_agent_type` - نوع الجهاز والمتصفح.
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى true.
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
### مثال متقدم
```python
from crewai_tools import OxylabsGoogleSearchScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsGoogleSearchScraperTool(
config={
"parse": True,
"geo_location": "Paris, France",
"user_agent_type": "tablet",
}
)
result = tool.run(query="iPhone 16")
print(result)
```
# `OxylabsUniversalScraperTool`
### مثال
```python
from crewai_tools import OxylabsUniversalScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsUniversalScraperTool()
result = tool.run(url="https://ip.oxylabs.io")
print(result)
```
### المعاملات
- `url` - عنوان URL للموقع المراد استخراجه.
- `user_agent_type` - نوع الجهاز والمتصفح.
- `geo_location` - يعيّن الموقع الجغرافي للبروكسي لاسترجاع البيانات.
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى `true`، طالما يوجد مُحلّل مخصص لنوع صفحة عنوان URL المقدم.
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
### مثال متقدم
```python
from crewai_tools import OxylabsUniversalScraperTool
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
tool = OxylabsUniversalScraperTool(
config={
"render": "html",
"user_agent_type": "mobile",
"context": [
{"key": "force_headers", "value": True},
{"key": "force_cookies", "value": True},
{
"key": "headers",
"value": {
"Custom-Header-Name": "custom header content",
},
},
{
"key": "cookies",
"value": [
{"key": "NID", "value": "1234567890"},
{"key": "1P JAR", "value": "0987654321"},
],
},
{"key": "http_method", "value": "get"},
{"key": "follow_redirects", "value": True},
{"key": "successful_status_codes", "value": [808, 909]},
],
}
)
result = tool.run(url="https://ip.oxylabs.io")
print(result)
```

View File

@@ -0,0 +1,140 @@
---
title: أداة استخراج عنصر من موقع
description: أداة `ScrapeElementFromWebsiteTool` تتيح لوكلاء CrewAI استخراج عناصر محددة من المواقع باستخدام محددات CSS.
icon: code
mode: "wide"
---
# `ScrapeElementFromWebsiteTool`
## الوصف
أداة `ScrapeElementFromWebsiteTool` مصممة لاستخراج عناصر محددة من المواقع باستخدام محددات CSS. تسمح هذه الأداة لوكلاء CrewAI باستخراج محتوى مستهدف من صفحات الويب، مما يجعلها مفيدة لمهام استخراج البيانات حيث تكون أجزاء محددة فقط من صفحة الويب مطلوبة.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت التبعيات المطلوبة:
```shell
uv add requests beautifulsoup4
```
## خطوات البدء
لاستخدام `ScrapeElementFromWebsiteTool` بفعالية، اتبع هذه الخطوات:
1. **تثبيت التبعيات**: ثبّت الحزم المطلوبة باستخدام الأمر أعلاه.
2. **تحديد محددات CSS**: حدد محددات CSS للعناصر التي تريد استخراجها من الموقع.
3. **تهيئة الأداة**: أنشئ نسخة من الأداة بالمعاملات اللازمة.
## مثال
يوضح المثال التالي كيفية استخدام `ScrapeElementFromWebsiteTool` لاستخراج عناصر محددة من موقع:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import ScrapeElementFromWebsiteTool
# Initialize the tool
scrape_tool = ScrapeElementFromWebsiteTool()
# Define an agent that uses the tool
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract specific information from websites",
backstory="An expert in web scraping who can extract targeted content from web pages.",
tools=[scrape_tool],
verbose=True,
)
# Example task to extract headlines from a news website
scrape_task = Task(
description="Extract the main headlines from the CNN homepage. Use the CSS selector '.headline' to target the headline elements.",
expected_output="A list of the main headlines from CNN.",
agent=web_scraper_agent,
)
# Create and run the crew
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
result = crew.kickoff()
```
يمكنك أيضاً تهيئة الأداة بمعاملات محددة مسبقاً:
```python Code
# Initialize the tool with predefined parameters
scrape_tool = ScrapeElementFromWebsiteTool(
website_url="https://www.example.com",
css_element=".main-content"
)
```
## المعاملات
تقبل أداة `ScrapeElementFromWebsiteTool` المعاملات التالية أثناء التهيئة:
- **website_url**: اختياري. عنوان URL للموقع المراد استخراجه. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
- **css_element**: اختياري. محدد CSS للعناصر المراد استخراجها. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
- **cookies**: اختياري. قاموس يحتوي على ملفات تعريف الارتباط لإرسالها مع الطلب. يمكن أن يكون مفيداً للمواقع التي تتطلب مصادقة.
## الاستخدام
عند استخدام `ScrapeElementFromWebsiteTool` مع وكيل، سيحتاج الوكيل إلى تقديم المعاملات التالية (ما لم يتم تحديدها أثناء التهيئة):
- **website_url**: عنوان URL للموقع المراد استخراجه.
- **css_element**: محدد CSS للعناصر المراد استخراجها.
ستُرجع الأداة المحتوى النصي لجميع العناصر المطابقة لمحدد CSS، مفصولة بأسطر جديدة.
```python Code
# Example of using the tool with an agent
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract specific elements from websites",
backstory="An expert in web scraping who can extract targeted content using CSS selectors.",
tools=[scrape_tool],
verbose=True,
)
# Create a task for the agent to extract specific elements
extract_task = Task(
description="""
Extract all product titles from the featured products section on example.com.
Use the CSS selector '.product-title' to target the title elements.
""",
expected_output="A list of product titles from the website",
agent=web_scraper_agent,
)
# Run the task through a crew
crew = Crew(agents=[web_scraper_agent], tasks=[extract_task])
result = crew.kickoff()
```
## تفاصيل التنفيذ
تستخدم أداة `ScrapeElementFromWebsiteTool` مكتبة `requests` لجلب صفحة الويب و `BeautifulSoup` لتحليل HTML واستخراج العناصر المحددة:
```python Code
class ScrapeElementFromWebsiteTool(BaseTool):
name: str = "Read a website content"
description: str = "A tool that can be used to read a website content."
# Implementation details...
def _run(self, **kwargs: Any) -> Any:
website_url = kwargs.get("website_url", self.website_url)
css_element = kwargs.get("css_element", self.css_element)
page = requests.get(
website_url,
headers=self.headers,
cookies=self.cookies if self.cookies else {},
)
parsed = BeautifulSoup(page.content, "html.parser")
elements = parsed.select(css_element)
return "\n".join([element.get_text() for element in elements])
```
## الخلاصة
توفر أداة `ScrapeElementFromWebsiteTool` طريقة قوية لاستخراج عناصر محددة من المواقع باستخدام محددات CSS. من خلال تمكين الوكلاء من استهداف المحتوى الذي يحتاجونه فقط، تجعل مهام استخراج البيانات من الويب أكثر كفاءة وتركيزاً. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث تحتاج معلومات محددة إلى استخراجها من صفحات الويب.

View File

@@ -0,0 +1,197 @@
---
title: أداة استخراج Scrapegraph
description: أداة `ScrapegraphScrapeTool` تستفيد من SmartScraper API من Scrapegraph AI لاستخراج المحتوى من المواقع بذكاء.
icon: chart-area
mode: "wide"
---
# `ScrapegraphScrapeTool`
## الوصف
أداة `ScrapegraphScrapeTool` مصممة للاستفادة من SmartScraper API من Scrapegraph AI لاستخراج المحتوى من المواقع بذكاء. توفر هذه الأداة قدرات متقدمة لاستخراج البيانات من الويب مع استخراج محتوى مدعوم بالذكاء الاصطناعي، مما يجعلها مثالية لمهام جمع البيانات المستهدفة وتحليل المحتوى. على عكس أدوات الاستخراج التقليدية، يمكنها فهم سياق وبنية صفحات الويب لاستخراج المعلومات الأكثر صلة بناءً على موجّهات اللغة الطبيعية.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت عميل Scrapegraph لـ Python:
```shell
uv add scrapegraph-py
```
ستحتاج أيضاً إلى إعداد مفتاح Scrapegraph API كمتغير بيئة:
```shell
export SCRAPEGRAPH_API_KEY="your_api_key"
```
يمكنك الحصول على مفتاح API من [Scrapegraph AI](https://scrapegraphai.com).
## خطوات البدء
لاستخدام `ScrapegraphScrapeTool` بفعالية، اتبع هذه الخطوات:
1. **تثبيت التبعيات**: ثبّت الحزمة المطلوبة باستخدام الأمر أعلاه.
2. **إعداد مفتاح API**: عيّن مفتاح Scrapegraph API كمتغير بيئة أو قدمه أثناء التهيئة.
3. **تهيئة الأداة**: أنشئ نسخة من الأداة بالمعاملات اللازمة.
4. **تحديد موجّهات الاستخراج**: أنشئ موجّهات بلغة طبيعية لتوجيه استخراج محتوى محدد.
## مثال
يوضح المثال التالي كيفية استخدام `ScrapegraphScrapeTool` لاستخراج المحتوى من موقع:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import ScrapegraphScrapeTool
# Initialize the tool
scrape_tool = ScrapegraphScrapeTool(api_key="your_api_key")
# Define an agent that uses the tool
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract specific information from websites",
backstory="An expert in web scraping who can extract targeted content from web pages.",
tools=[scrape_tool],
verbose=True,
)
# Example task to extract product information from an e-commerce site
scrape_task = Task(
description="Extract product names, prices, and descriptions from the featured products section of example.com.",
expected_output="A structured list of product information including names, prices, and descriptions.",
agent=web_scraper_agent,
)
# Create and run the crew
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
result = crew.kickoff()
```
يمكنك أيضاً تهيئة الأداة بمعاملات محددة مسبقاً:
```python Code
# Initialize the tool with predefined parameters
scrape_tool = ScrapegraphScrapeTool(
website_url="https://www.example.com",
user_prompt="Extract all product prices and descriptions",
api_key="your_api_key"
)
```
## المعاملات
تقبل أداة `ScrapegraphScrapeTool` المعاملات التالية أثناء التهيئة:
- **api_key**: اختياري. مفتاح Scrapegraph API الخاص بك. إذا لم يتم تقديمه، سيبحث عن متغير البيئة `SCRAPEGRAPH_API_KEY`.
- **website_url**: اختياري. عنوان URL للموقع المراد استخراجه. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
- **user_prompt**: اختياري. تعليمات مخصصة لاستخراج المحتوى. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
- **enable_logging**: اختياري. ما إذا كان يجب تفعيل التسجيل لعميل Scrapegraph. الافتراضي هو `False`.
## الاستخدام
عند استخدام `ScrapegraphScrapeTool` مع وكيل، سيحتاج الوكيل إلى تقديم المعاملات التالية (ما لم يتم تحديدها أثناء التهيئة):
- **website_url**: عنوان URL للموقع المراد استخراجه.
- **user_prompt**: اختياري. تعليمات مخصصة لاستخراج المحتوى. الافتراضي هو "Extract the main content of the webpage".
ستُرجع الأداة المحتوى المستخرج بناءً على الموجّه المقدم.
```python Code
# Example of using the tool with an agent
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract specific information from websites",
backstory="An expert in web scraping who can extract targeted content from web pages.",
tools=[scrape_tool],
verbose=True,
)
# Create a task for the agent to extract specific content
extract_task = Task(
description="Extract the main heading and summary from example.com",
expected_output="The main heading and summary from the website",
agent=web_scraper_agent,
)
# Run the task
crew = Crew(agents=[web_scraper_agent], tasks=[extract_task])
result = crew.kickoff()
```
## معالجة الأخطاء
قد تُثير أداة `ScrapegraphScrapeTool` الاستثناءات التالية:
- **ValueError**: عندما يكون مفتاح API مفقوداً أو تنسيق URL غير صالح.
- **RateLimitError**: عند تجاوز حدود معدل API.
- **RuntimeError**: عند فشل عملية الاستخراج (مشاكل شبكة، أخطاء API).
يُوصى بتوجيه الوكلاء للتعامل مع الأخطاء المحتملة بسلاسة:
```python Code
# Create a task that includes error handling instructions
robust_extract_task = Task(
description="""
Extract the main heading from example.com.
Be aware that you might encounter errors such as:
- Invalid URL format
- Missing API key
- Rate limit exceeded
- Network or API errors
If you encounter any errors, provide a clear explanation of what went wrong
and suggest possible solutions.
""",
expected_output="Either the extracted heading or a clear error explanation",
agent=web_scraper_agent,
)
```
## تحديد المعدل
لدى Scrapegraph API حدود معدل تختلف حسب خطة اشتراكك. ضع في الاعتبار أفضل الممارسات التالية:
- نفّذ تأخيرات مناسبة بين الطلبات عند معالجة عناوين URL متعددة.
- تعامل مع أخطاء تحديد المعدل بسلاسة في تطبيقك.
- تحقق من حدود خطة API الخاصة بك على لوحة تحكم Scrapegraph.
## تفاصيل التنفيذ
تستخدم أداة `ScrapegraphScrapeTool` عميل Scrapegraph لـ Python للتفاعل مع SmartScraper API:
```python Code
class ScrapegraphScrapeTool(BaseTool):
"""
A tool that uses Scrapegraph AI to intelligently scrape website content.
"""
# Implementation details...
def _run(self, **kwargs: Any) -> Any:
website_url = kwargs.get("website_url", self.website_url)
user_prompt = (
kwargs.get("user_prompt", self.user_prompt)
or "Extract the main content of the webpage"
)
if not website_url:
raise ValueError("website_url is required")
# Validate URL format
self._validate_url(website_url)
try:
# Make the SmartScraper request
response = self._client.smartscraper(
website_url=website_url,
user_prompt=user_prompt,
)
return response
# Error handling...
```
## الخلاصة
توفر أداة `ScrapegraphScrapeTool` طريقة قوية لاستخراج المحتوى من المواقع باستخدام فهم مدعوم بالذكاء الاصطناعي لبنية صفحات الويب. من خلال تمكين الوكلاء من استهداف معلومات محددة باستخدام موجّهات اللغة الطبيعية، تجعل مهام استخراج البيانات من الويب أكثر كفاءة وتركيزاً. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث تحتاج معلومات محددة إلى استخراجها من صفحات الويب.

View File

@@ -0,0 +1,48 @@
---
title: استخراج الموقع
description: أداة `ScrapeWebsiteTool` مصممة لاستخراج وقراءة محتوى موقع محدد.
icon: magnifying-glass-location
mode: "wide"
---
# `ScrapeWebsiteTool`
<Note>
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
</Note>
## الوصف
أداة مصممة لاستخراج وقراءة محتوى موقع محدد. قادرة على التعامل مع أنواع مختلفة من صفحات الويب عن طريق إجراء طلبات HTTP وتحليل محتوى HTML المستلم.
يمكن أن تكون هذه الأداة مفيدة بشكل خاص لمهام استخراج البيانات من الويب وجمع البيانات أو استخراج معلومات محددة من المواقع.
## التثبيت
ثبّت حزمة crewai_tools
```shell
pip install 'crewai[tools]'
```
## مثال
```python
from crewai_tools import ScrapeWebsiteTool
# To enable scrapping any website it finds during it's execution
tool = ScrapeWebsiteTool()
# Initialize the tool with the website URL,
# so the agent can only scrap the content of the specified website
tool = ScrapeWebsiteTool(website_url='https://www.example.com')
# Extract the text from the site
text = tool.run()
print(text)
```
## المعاملات
| المعامل | النوع | الوصف |
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
| **website_url** | `string` | **إلزامي** عنوان URL للموقع لقراءة الملف. هذا هو المدخل الأساسي للأداة، يحدد محتوى أي موقع يجب استخراجه وقراءته. |

View File

@@ -0,0 +1,221 @@
---
title: أداة استخراج مواقع Scrapfly
description: أداة `ScrapflyScrapeWebsiteTool` تستفيد من Scrapfly web scraping API لاستخراج المحتوى من المواقع بتنسيقات مختلفة.
icon: spider
mode: "wide"
---
# `ScrapflyScrapeWebsiteTool`
## الوصف
أداة `ScrapflyScrapeWebsiteTool` مصممة للاستفادة من [Scrapfly](https://scrapfly.io/) web scraping API لاستخراج المحتوى من المواقع. توفر هذه الأداة قدرات متقدمة لاستخراج البيانات من الويب مع دعم المتصفح بدون واجهة والبروكسيات وميزات تجاوز مكافحة الروبوتات. تسمح باستخراج بيانات صفحات الويب بتنسيقات متعددة، بما في ذلك HTML الخام و markdown والنص العادي، مما يجعلها مثالية لمجموعة واسعة من مهام استخراج البيانات من الويب.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت Scrapfly SDK:
```shell
uv add scrapfly-sdk
```
ستحتاج أيضاً إلى الحصول على مفتاح Scrapfly API بالتسجيل في [scrapfly.io/register](https://www.scrapfly.io/register/).
## خطوات البدء
لاستخدام `ScrapflyScrapeWebsiteTool` بفعالية، اتبع هذه الخطوات:
1. **تثبيت التبعيات**: ثبّت Scrapfly SDK باستخدام الأمر أعلاه.
2. **الحصول على مفتاح API**: سجّل في Scrapfly للحصول على مفتاح API الخاص بك.
3. **تهيئة الأداة**: أنشئ نسخة من الأداة بمفتاح API الخاص بك.
4. **تكوين معاملات الاستخراج**: خصص معاملات الاستخراج بناءً على احتياجاتك.
## مثال
يوضح المثال التالي كيفية استخدام `ScrapflyScrapeWebsiteTool` لاستخراج المحتوى من موقع:
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import ScrapflyScrapeWebsiteTool
# Initialize the tool
scrape_tool = ScrapflyScrapeWebsiteTool(api_key="your_scrapfly_api_key")
# Define an agent that uses the tool
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract information from websites",
backstory="An expert in web scraping who can extract content from any website.",
tools=[scrape_tool],
verbose=True,
)
# Example task to extract content from a website
scrape_task = Task(
description="Extract the main content from the product page at https://web-scraping.dev/products and summarize the available products.",
expected_output="A summary of the products available on the website.",
agent=web_scraper_agent,
)
# Create and run the crew
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
result = crew.kickoff()
```
يمكنك أيضاً تخصيص معاملات الاستخراج:
```python Code
# Example with custom scraping parameters
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract information from websites with custom parameters",
backstory="An expert in web scraping who can extract content from any website.",
tools=[scrape_tool],
verbose=True,
)
# The agent will use the tool with parameters like:
# url="https://web-scraping.dev/products"
# scrape_format="markdown"
# ignore_scrape_failures=True
# scrape_config={
# "asp": True, # Bypass scraping blocking solutions, like Cloudflare
# "render_js": True, # Enable JavaScript rendering with a cloud headless browser
# "proxy_pool": "public_residential_pool", # Select a proxy pool
# "country": "us", # Select a proxy location
# "auto_scroll": True, # Auto scroll the page
# }
scrape_task = Task(
description="Extract the main content from the product page at https://web-scraping.dev/products using advanced scraping options including JavaScript rendering and proxy settings.",
expected_output="A detailed summary of the products with all available information.",
agent=web_scraper_agent,
)
```
## المعاملات
تقبل أداة `ScrapflyScrapeWebsiteTool` المعاملات التالية:
### معاملات التهيئة
- **api_key**: مطلوب. مفتاح Scrapfly API الخاص بك.
### معاملات التشغيل
- **url**: مطلوب. عنوان URL للموقع المراد استخراجه.
- **scrape_format**: اختياري. التنسيق الذي يتم استخراج محتوى صفحة الويب به. الخيارات هي "raw" (HTML) أو "markdown" أو "text". الافتراضي هو "markdown".
- **scrape_config**: اختياري. قاموس يحتوي على خيارات تكوين استخراج Scrapfly إضافية.
- **ignore_scrape_failures**: اختياري. ما إذا كان يجب تجاهل الفشل أثناء الاستخراج. إذا تم التعيين إلى `True`، ستُرجع الأداة `None` بدلاً من إثارة استثناء عند فشل الاستخراج.
## خيارات تكوين Scrapfly
يسمح معامل `scrape_config` بتخصيص سلوك الاستخراج بالخيارات التالية:
- **asp**: تفعيل تجاوز حماية مكافحة الاستخراج.
- **render_js**: تفعيل تصيير JavaScript مع متصفح سحابي بدون واجهة.
- **proxy_pool**: اختيار مجموعة بروكسيات (مثل "public_residential_pool"، "datacenter").
- **country**: اختيار موقع البروكسي (مثل "us"، "uk").
- **auto_scroll**: التمرير التلقائي للصفحة لتحميل المحتوى المُحمّل كسولاً.
- **js**: تنفيذ كود JavaScript مخصص بواسطة المتصفح بدون واجهة.
للحصول على قائمة كاملة بخيارات التكوين، راجع [توثيق Scrapfly API](https://scrapfly.io/docs/scrape-api/getting-started).
## الاستخدام
عند استخدام `ScrapflyScrapeWebsiteTool` مع وكيل، سيحتاج الوكيل إلى تقديم عنوان URL للموقع المراد استخراجه ويمكنه اختيارياً تحديد التنسيق وخيارات التكوين الإضافية:
```python Code
# Example of using the tool with an agent
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract information from websites",
backstory="An expert in web scraping who can extract content from any website.",
tools=[scrape_tool],
verbose=True,
)
# Create a task for the agent
scrape_task = Task(
description="Extract the main content from example.com in markdown format.",
expected_output="The main content of example.com in markdown format.",
agent=web_scraper_agent,
)
# Run the task
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
result = crew.kickoff()
```
للاستخدام المتقدم مع تكوين مخصص:
```python Code
# Create a task with more specific instructions
advanced_scrape_task = Task(
description="""
Extract content from example.com with the following requirements:
- Convert the content to plain text format
- Enable JavaScript rendering
- Use a US-based proxy
- Handle any scraping failures gracefully
""",
expected_output="The extracted content from example.com",
agent=web_scraper_agent,
)
```
## معالجة الأخطاء
بشكل افتراضي، ستُثير أداة `ScrapflyScrapeWebsiteTool` استثناء إذا فشل الاستخراج. يمكن توجيه الوكلاء للتعامل مع الفشل بسلاسة عن طريق تحديد معامل `ignore_scrape_failures`:
```python Code
# Create a task that instructs the agent to handle errors
error_handling_task = Task(
description="""
Extract content from a potentially problematic website and make sure to handle any
scraping failures gracefully by setting ignore_scrape_failures to True.
""",
expected_output="Either the extracted content or a graceful error message",
agent=web_scraper_agent,
)
```
## تفاصيل التنفيذ
تستخدم أداة `ScrapflyScrapeWebsiteTool` Scrapfly SDK للتفاعل مع Scrapfly API:
```python Code
class ScrapflyScrapeWebsiteTool(BaseTool):
name: str = "Scrapfly web scraping API tool"
description: str = (
"Scrape a webpage url using Scrapfly and return its content as markdown or text"
)
# Implementation details...
def _run(
self,
url: str,
scrape_format: str = "markdown",
scrape_config: Optional[Dict[str, Any]] = None,
ignore_scrape_failures: Optional[bool] = None,
):
from scrapfly import ScrapeApiResponse, ScrapeConfig
scrape_config = scrape_config if scrape_config is not None else {}
try:
response: ScrapeApiResponse = self.scrapfly.scrape(
ScrapeConfig(url, format=scrape_format, **scrape_config)
)
return response.scrape_result["content"]
except Exception as e:
if ignore_scrape_failures:
logger.error(f"Error fetching data from {url}, exception: {e}")
return None
else:
raise e
```
## الخلاصة
توفر أداة `ScrapflyScrapeWebsiteTool` طريقة قوية لاستخراج المحتوى من المواقع باستخدام قدرات Scrapfly المتقدمة لاستخراج البيانات من الويب. مع ميزات مثل دعم المتصفح بدون واجهة والبروكسيات وتجاوز مكافحة الروبوتات، يمكنها التعامل مع المواقع المعقدة واستخراج المحتوى بتنسيقات مختلفة. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث يكون استخراج البيانات الموثوق من الويب مطلوباً.

View File

@@ -0,0 +1,196 @@
---
title: أداة استخراج Selenium
description: أداة `SeleniumScrapingTool` مصممة لاستخراج وقراءة محتوى موقع محدد باستخدام Selenium.
icon: clipboard-user
mode: "wide"
---
# `SeleniumScrapingTool`
<Note>
هذه الأداة حالياً قيد التطوير. أثناء تحسين قدراتها، قد يواجه المستخدمون سلوكاً غير متوقع.
ملاحظاتكم لا تقدر بثمن لإجراء التحسينات.
</Note>
## الوصف
أداة `SeleniumScrapingTool` مصنوعة لمهام استخراج البيانات من الويب عالية الكفاءة.
تسمح بالاستخراج الدقيق للمحتوى من صفحات الويب باستخدام محددات CSS لاستهداف عناصر محددة.
تصميمها يخدم مجموعة واسعة من احتياجات الاستخراج، مع توفير المرونة للعمل مع أي عنوان URL مقدم.
## التثبيت
لاستخدام هذه الأداة، تحتاج إلى تثبيت حزمة أدوات CrewAI و Selenium:
```shell
pip install 'crewai[tools]'
uv add selenium webdriver-manager
```
ستحتاج أيضاً إلى تثبيت Chrome على نظامك، حيث تستخدم الأداة Chrome WebDriver لأتمتة المتصفح.
## مثال
يوضح المثال التالي كيفية استخدام `SeleniumScrapingTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew, Process
from crewai_tools import SeleniumScrapingTool
# Initialize the tool
selenium_tool = SeleniumScrapingTool()
# Define an agent that uses the tool
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract information from websites using Selenium",
backstory="An expert web scraper who can extract content from dynamic websites.",
tools=[selenium_tool],
verbose=True,
)
# Example task to scrape content from a website
scrape_task = Task(
description="Extract the main content from the homepage of example.com. Use the CSS selector 'main' to target the main content area.",
expected_output="The main content from example.com's homepage.",
agent=web_scraper_agent,
)
# Create and run the crew
crew = Crew(
agents=[web_scraper_agent],
tasks=[scrape_task],
verbose=True,
process=Process.sequential,
)
result = crew.kickoff()
```
يمكنك أيضاً تهيئة الأداة بمعاملات محددة مسبقاً:
```python Code
# Initialize the tool with predefined parameters
selenium_tool = SeleniumScrapingTool(
website_url='https://example.com',
css_element='.main-content',
wait_time=5
)
# Define an agent that uses the tool
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract information from websites using Selenium",
backstory="An expert web scraper who can extract content from dynamic websites.",
tools=[selenium_tool],
verbose=True,
)
```
## المعاملات
تقبل أداة `SeleniumScrapingTool` المعاملات التالية أثناء التهيئة:
- **website_url**: اختياري. عنوان URL للموقع المراد استخراجه. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
- **css_element**: اختياري. محدد CSS للعناصر المراد استخراجها. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
- **cookie**: اختياري. قاموس يحتوي على معلومات ملفات تعريف الارتباط، مفيد لمحاكاة جلسة تسجيل دخول للوصول إلى محتوى مقيد.
- **wait_time**: اختياري. يحدد التأخير (بالثواني) قبل الاستخراج، مما يسمح للموقع وأي محتوى ديناميكي بالتحميل الكامل. الافتراضي هو `3` ثوانٍ.
- **return_html**: اختياري. ما إذا كان يجب إرجاع محتوى HTML بدلاً من النص فقط. الافتراضي هو `False`.
عند استخدام الأداة مع وكيل، سيحتاج الوكيل إلى تقديم المعاملات التالية (ما لم يتم تحديدها أثناء التهيئة):
- **website_url**: مطلوب. عنوان URL للموقع المراد استخراجه.
- **css_element**: مطلوب. محدد CSS للعناصر المراد استخراجها.
## مثال على التكامل مع الوكيل
إليك مثالاً أكثر تفصيلاً لكيفية دمج `SeleniumScrapingTool` مع وكيل CrewAI:
```python Code
from crewai import Agent, Task, Crew, Process
from crewai_tools import SeleniumScrapingTool
# Initialize the tool
selenium_tool = SeleniumScrapingTool()
# Define an agent that uses the tool
web_scraper_agent = Agent(
role="Web Scraper",
goal="Extract and analyze information from dynamic websites",
backstory="""You are an expert web scraper who specializes in extracting
content from dynamic websites that require browser automation. You have
extensive knowledge of CSS selectors and can identify the right selectors
to target specific content on any website.""",
tools=[selenium_tool],
verbose=True,
)
# Create a task for the agent
scrape_task = Task(
description="""
Extract the following information from the news website at {website_url}:
1. The headlines of all featured articles (CSS selector: '.headline')
2. The publication dates of these articles (CSS selector: '.pub-date')
3. The author names where available (CSS selector: '.author')
Compile this information into a structured format with each article's details grouped together.
""",
expected_output="A structured list of articles with their headlines, publication dates, and authors.",
agent=web_scraper_agent,
)
# Run the task
crew = Crew(
agents=[web_scraper_agent],
tasks=[scrape_task],
verbose=True,
process=Process.sequential,
)
result = crew.kickoff(inputs={"website_url": "https://news-example.com"})
```
## تفاصيل التنفيذ
تستخدم أداة `SeleniumScrapingTool` Selenium WebDriver لأتمتة تفاعلات المتصفح:
```python Code
class SeleniumScrapingTool(BaseTool):
name: str = "Read a website content"
description: str = "A tool that can be used to read a website content."
args_schema: Type[BaseModel] = SeleniumScrapingToolSchema
def _run(self, **kwargs: Any) -> Any:
website_url = kwargs.get("website_url", self.website_url)
css_element = kwargs.get("css_element", self.css_element)
return_html = kwargs.get("return_html", self.return_html)
driver = self._create_driver(website_url, self.cookie, self.wait_time)
content = self._get_content(driver, css_element, return_html)
driver.close()
return "\n".join(content)
```
تنفذ الأداة الخطوات التالية:
1. إنشاء نسخة متصفح Chrome بدون واجهة
2. التنقل إلى عنوان URL المحدد
3. الانتظار للمدة المحددة للسماح بتحميل الصفحة
4. إضافة أي ملفات تعريف ارتباط إذا تم تقديمها
5. استخراج المحتوى بناءً على محدد CSS
6. إرجاع المحتوى المستخرج كنص أو HTML
7. إغلاق نسخة المتصفح
## التعامل مع المحتوى الديناميكي
أداة `SeleniumScrapingTool` مفيدة بشكل خاص لاستخراج المواقع ذات المحتوى الديناميكي المُحمّل عبر JavaScript. باستخدام نسخة متصفح حقيقية، يمكنها:
1. تنفيذ JavaScript على الصفحة
2. انتظار تحميل المحتوى الديناميكي
3. التفاعل مع العناصر عند الحاجة
4. استخراج المحتوى الذي لن يكون متاحاً مع طلبات HTTP البسيطة
يمكنك ضبط معامل `wait_time` لضمان تحميل جميع المحتوى الديناميكي قبل الاستخراج.
## الخلاصة
توفر أداة `SeleniumScrapingTool` طريقة قوية لاستخراج المحتوى من المواقع باستخدام أتمتة المتصفح. من خلال تمكين الوكلاء من التفاعل مع المواقع كما يفعل المستخدم الحقيقي، تسهّل استخراج المحتوى الديناميكي الذي يكون صعباً أو مستحيلاً باستخدام طرق أبسط. هذه الأداة مفيدة بشكل خاص للبحث وجمع البيانات ومهام المراقبة التي تتضمن تطبيقات ويب حديثة ذات محتوى مُصيّر بـ JavaScript.

View File

@@ -0,0 +1,101 @@
---
title: استخراج المواقع عبر Serper
description: أداة `SerperScrapeWebsiteTool` مصممة لاستخراج المواقع واستخلاص محتوى نظيف وقابل للقراءة باستخدام Serper scraping API.
icon: globe
mode: "wide"
---
# `SerperScrapeWebsiteTool`
## الوصف
هذه الأداة مصممة لاستخراج محتوى المواقع واستخلاص نص نظيف وقابل للقراءة من أي عنوان URL. تستخدم [serper.dev](https://serper.dev) scraping API لجلب ومعالجة صفحات الويب، مع تضمين اختياري لتنسيق markdown لبنية وقابلية قراءة أفضل.
## التثبيت
لاستخدام `SerperScrapeWebsiteTool` بفعالية، اتبع هذه الخطوات:
1. **تثبيت الحزمة**: تأكد من تثبيت حزمة `crewai[tools]` في بيئة Python الخاصة بك.
2. **الحصول على مفتاح API**: احصل على مفتاح `serper.dev` API بالتسجيل للحصول على حساب في `serper.dev`.
3. **تكوين البيئة**: خزّن مفتاح API الذي حصلت عليه في متغير بيئة باسم `SERPER_API_KEY` لتسهيل استخدامه بواسطة الأداة.
لدمج هذه الأداة في مشروعك، اتبع تعليمات التثبيت أدناه:
```shell
pip install 'crewai[tools]'
```
## مثال
يوضح المثال التالي كيفية تهيئة الأداة واستخراج بيانات من موقع:
```python Code
from crewai_tools import SerperScrapeWebsiteTool
# Initialize the tool for website scraping capabilities
tool = SerperScrapeWebsiteTool()
# Scrape a website with markdown formatting
result = tool.run(url="https://example.com", include_markdown=True)
```
## المعاملات
تقبل أداة `SerperScrapeWebsiteTool` المعاملات التالية:
- **url**: مطلوب. عنوان URL للموقع المراد استخراجه.
- **include_markdown**: اختياري. ما إذا كان يجب تضمين تنسيق markdown في المحتوى المستخرج. الافتراضي هو `True`.
## مثال مع المعاملات
إليك مثالاً يوضح كيفية استخدام الأداة مع معاملات مختلفة:
```python Code
from crewai_tools import SerperScrapeWebsiteTool
tool = SerperScrapeWebsiteTool()
# Scrape with markdown formatting (default)
markdown_result = tool.run(
url="https://docs.crewai.com",
include_markdown=True
)
# Scrape without markdown formatting for plain text
plain_result = tool.run(
url="https://docs.crewai.com",
include_markdown=False
)
print("Markdown formatted content:")
print(markdown_result)
print("\nPlain text content:")
print(plain_result)
```
## حالات الاستخدام
أداة `SerperScrapeWebsiteTool` مفيدة بشكل خاص لـ:
- **تحليل المحتوى**: استخراج وتحليل محتوى المواقع لأغراض البحث
- **جمع البيانات**: جمع معلومات منظمة من صفحات الويب
- **معالجة التوثيق**: تحويل التوثيق المبني على الويب إلى تنسيقات قابلة للقراءة
- **التحليل التنافسي**: استخراج بيانات مواقع المنافسين لأبحاث السوق
- **ترحيل المحتوى**: استخراج المحتوى من المواقع الحالية لأغراض الترحيل
## معالجة الأخطاء
تتضمن الأداة معالجة شاملة للأخطاء لـ:
- **مشاكل الشبكة**: التعامل بسلاسة مع مهلات الاتصال وأخطاء الشبكة
- **أخطاء API**: توفير رسائل خطأ مفصلة للمشاكل المتعلقة بـ API
- **عناوين URL غير صالحة**: التحقق من المشاكل المتعلقة بعناوين URL المشوّهة والإبلاغ عنها
- **المصادقة**: رسائل خطأ واضحة لمفاتيح API المفقودة أو غير الصالحة
## اعتبارات الأمان
- خزّن دائماً `SERPER_API_KEY` في متغيرات البيئة، ولا تضعه مباشرة في كودك المصدري
- انتبه لحدود المعدل المفروضة من Serper API
- احترم robots.txt وشروط خدمة المواقع عند استخراج المحتوى
- فكر في تنفيذ تأخيرات بين الطلبات لعمليات الاستخراج واسعة النطاق

View File

@@ -0,0 +1,93 @@
---
title: أداة استخراج Spider
description: أداة `SpiderTool` مصممة لاستخراج وقراءة محتوى موقع محدد باستخدام Spider.
icon: spider-web
mode: "wide"
---
# `SpiderTool`
## الوصف
[Spider](https://spider.cloud/?ref=crewai) هي [الأسرع](https://github.com/spider-rs/spider/blob/main/benches/BENCHMARKS.md#benchmark-results)
أداة استخراج وزحف مفتوحة المصدر تُرجع بيانات جاهزة لـ LLM.
تحوّل أي موقع إلى HTML نقي أو markdown أو بيانات وصفية أو نص مع تمكين الزحف بإجراءات مخصصة باستخدام الذكاء الاصطناعي.
## التثبيت
لاستخدام `SpiderTool` تحتاج إلى تنزيل [Spider SDK](https://pypi.org/project/spider-client/)
وحزمة `crewai[tools]` SDK أيضاً:
```shell
pip install spider-client 'crewai[tools]'
```
## مثال
يوضح هذا المثال كيفية استخدام `SpiderTool` لتمكين وكيلك من استخراج المواقع وزحفها.
البيانات المُرجعة من Spider API جاهزة بالفعل لـ LLM، لذا لا حاجة لأي تنظيف.
```python Code
from crewai_tools import SpiderTool
def main():
spider_tool = SpiderTool()
searcher = Agent(
role="Web Research Expert",
goal="Find related information from specific URL's",
backstory="An expert web researcher that uses the web extremely well",
tools=[spider_tool],
verbose=True,
)
return_metadata = Task(
description="Scrape https://spider.cloud with a limit of 1 and enable metadata",
expected_output="Metadata and 10 word summary of spider.cloud",
agent=searcher
)
crew = Crew(
agents=[searcher],
tasks=[
return_metadata,
],
verbose=2
)
crew.kickoff()
if __name__ == "__main__":
main()
```
## المعاملات
| المعامل | النوع | الوصف |
|:------------------|:---------|:-----------------------------------------------------------------------------------------------------------------------------------------------------|
| **api_key** | `string` | يحدد مفتاح Spider API. إذا لم يتم تحديده، يبحث عن `SPIDER_API_KEY` في متغيرات البيئة. |
| **params** | `object` | معاملات اختيارية للطلب. الافتراضي هو `{"return_format": "markdown"}` لتحسين المحتوى لـ LLMs. |
| **request** | `string` | نوع الطلب المراد تنفيذه (`http`، `chrome`، `smart`). `smart` يستخدم HTTP افتراضياً، مع التبديل إلى تصيير JavaScript عند الحاجة. |
| **limit** | `int` | الحد الأقصى لعدد الصفحات للزحف لكل موقع. عيّن إلى `0` أو اتركه للزحف غير المحدود. |
| **depth** | `int` | الحد الأقصى لعمق الزحف. عيّن إلى `0` بدون حد. |
| **cache** | `bool` | يفعّل التخزين المؤقت لـ HTTP لتسريع التشغيلات المتكررة. الافتراضي هو `true`. |
| **budget** | `object` | يعيّن حدوداً على أساس المسار للصفحات المزحوفة، مثل `{"*":1}` لصفحة الجذر فقط. |
| **locale** | `string` | اللغة المحلية للطلب، مثل `en-US`. |
| **cookies** | `string` | ملفات تعريف ارتباط HTTP للطلب. |
| **stealth** | `bool` | يفعّل وضع التخفي لطلبات Chrome لتجنب الاكتشاف. الافتراضي هو `true`. |
| **headers** | `object` | رؤوس HTTP كخريطة من أزواج مفتاح-قيمة لجميع الطلبات. |
| **metadata** | `bool` | يخزّن البيانات الوصفية حول الصفحات والمحتوى، مما يساعد على التوافق مع الذكاء الاصطناعي. الافتراضي هو `false`. |
| **viewport** | `object` | يعيّن أبعاد نافذة العرض لـ Chrome. الافتراضي هو `800x600`. |
| **encoding** | `string` | يحدد نوع الترميز، مثل `UTF-8`، `SHIFT_JIS`. |
| **subdomains** | `bool` | يتضمن النطاقات الفرعية في الزحف. الافتراضي هو `false`. |
| **user_agent** | `string` | وكيل مستخدم HTTP مخصص. الافتراضي هو وكيل عشوائي. |
| **store_data** | `bool` | يفعّل تخزين البيانات للطلب. يتجاوز `storageless` عند التعيين. الافتراضي هو `false`. |
| **gpt_config** | `object` | يسمح للذكاء الاصطناعي بتوليد إجراءات الزحف، مع خطوات تسلسل اختيارية عبر مصفوفة لـ `"prompt"`. |
| **fingerprint** | `bool` | يفعّل البصمة المتقدمة لـ Chrome. |
| **storageless** | `bool` | يمنع جميع عمليات تخزين البيانات، بما في ذلك تضمينات الذكاء الاصطناعي. الافتراضي هو `false`. |
| **readability** | `bool` | يُعالج المحتوى مسبقاً للقراءة عبر [أداة القراءة من Mozilla](https://github.com/mozilla/readability). يحسّن المحتوى لـ LLMs. |
| **return_format** | `string` | التنسيق لإرجاع البيانات: `markdown`، `raw`، `text`، `html2text`. استخدم `raw` لتنسيق الصفحة الافتراضي. |
| **proxy_enabled** | `bool` | يفعّل بروكسيات عالية الأداء لتجنب الحظر على مستوى الشبكة. |
| **query_selector** | `string` | محدد CSS لاستخراج المحتوى من الترميز. |
| **full_resources** | `bool` | يُنزّل جميع الموارد المرتبطة بالموقع. |
| **request_timeout** | `int` | المهلة بالثواني للطلبات (5-60). الافتراضي هو `30`. |
| **run_in_background** | `bool` | يشغّل الطلب في الخلفية، مفيد لتخزين البيانات وتشغيل زحف لوحة التحكم. لا تأثير إذا تم تعيين `storageless`. |

View File

@@ -0,0 +1,245 @@
---
title: أداة Stagehand
description: أداة أتمتة الويب التي تدمج Stagehand مع CrewAI للتفاعل مع المتصفح وأتمتة المهام
icon: hand
mode: "wide"
---
# نظرة عامة
تدمج أداة `StagehandTool` إطار عمل [Stagehand](https://docs.stagehand.dev/get_started/introduction) مع CrewAI، مما يتيح للوكلاء التفاعل مع المواقع الإلكترونية وأتمتة مهام المتصفح باستخدام تعليمات بلغة طبيعية.
## نظرة عامة
Stagehand هو إطار عمل قوي لأتمتة المتصفح تم تطويره بواسطة Browserbase ويتيح لوكلاء الذكاء الاصطناعي:
- التنقل إلى المواقع الإلكترونية
- النقر على الأزرار والروابط والعناصر الأخرى
- ملء النماذج
- استخراج البيانات من صفحات الويب
- مراقبة العناصر وتحديدها
- تنفيذ سير عمل معقدة
تغلف أداة StagehandTool حزمة Stagehand Python SDK لتزويد وكلاء CrewAI بإمكانيات التحكم في المتصفح من خلال ثلاثة عمليات أساسية:
1. **Act**: تنفيذ إجراءات مثل النقر والكتابة والتنقل
2. **Extract**: استخراج بيانات منظمة من صفحات الويب
3. **Observe**: تحديد العناصر وتحليلها في الصفحة
## المتطلبات الأساسية
قبل استخدام هذه الأداة، تأكد من توفر ما يلي:
1. حساب على [Browserbase](https://www.browserbase.com/) مع مفتاح API ومعرف المشروع
2. مفتاح API لنموذج لغوي كبير (OpenAI أو Anthropic Claude)
3. تثبيت حزمة Stagehand Python SDK
قم بتثبيت التبعية المطلوبة:
```bash
pip install stagehand-py
```
## الاستخدام
### التنفيذ الأساسي
يمكن تنفيذ أداة StagehandTool بطريقتين:
#### 1. استخدام مدير السياق (موصى به)
<Tip>
يُوصى باستخدام مدير السياق لأنه يضمن التنظيف السليم للموارد حتى في حالة حدوث استثناءات.
</Tip>
```python
from crewai import Agent, Task, Crew
from crewai_tools import StagehandTool
from stagehand.schemas import AvailableModel
# Initialize the tool with your API keys using a context manager
with StagehandTool(
api_key="your-browserbase-api-key",
project_id="your-browserbase-project-id",
model_api_key="your-llm-api-key", # OpenAI or Anthropic API key
model_name=AvailableModel.CLAUDE_3_7_SONNET_LATEST, # Optional: specify which model to use
) as stagehand_tool:
# Create an agent with the tool
researcher = Agent(
role="Web Researcher",
goal="Find and summarize information from websites",
backstory="I'm an expert at finding information online.",
verbose=True,
tools=[stagehand_tool],
)
# Create a task that uses the tool
research_task = Task(
description="Go to https://www.example.com and tell me what you see on the homepage.",
agent=researcher,
)
# Run the crew
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=True,
)
result = crew.kickoff()
print(result)
```
#### 2. إدارة الموارد يدوياً
```python
from crewai import Agent, Task, Crew
from crewai_tools import StagehandTool
from stagehand.schemas import AvailableModel
# Initialize the tool with your API keys
stagehand_tool = StagehandTool(
api_key="your-browserbase-api-key",
project_id="your-browserbase-project-id",
model_api_key="your-llm-api-key",
model_name=AvailableModel.CLAUDE_3_7_SONNET_LATEST,
)
try:
# Create an agent with the tool
researcher = Agent(
role="Web Researcher",
goal="Find and summarize information from websites",
backstory="I'm an expert at finding information online.",
verbose=True,
tools=[stagehand_tool],
)
# Create a task that uses the tool
research_task = Task(
description="Go to https://www.example.com and tell me what you see on the homepage.",
agent=researcher,
)
# Run the crew
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=True,
)
result = crew.kickoff()
print(result)
finally:
# Explicitly clean up resources
stagehand_tool.close()
```
## أنواع الأوامر
تدعم أداة StagehandTool ثلاثة أنواع مختلفة من الأوامر لمهام أتمتة الويب المحددة:
### 1. أمر Act
يتيح نوع الأمر `act` (الافتراضي) التفاعل مع صفحات الويب مثل النقر على الأزرار وملء النماذج والتنقل.
```python
# Perform an action (default behavior)
result = stagehand_tool.run(
instruction="Click the login button",
url="https://example.com",
command_type="act" # Default, so can be omitted
)
# Fill out a form
result = stagehand_tool.run(
instruction="Fill the contact form with name 'John Doe', email 'john@example.com', and message 'Hello world'",
url="https://example.com/contact"
)
```
### 2. أمر Extract
يسترجع نوع الأمر `extract` بيانات منظمة من صفحات الويب.
```python
# Extract all product information
result = stagehand_tool.run(
instruction="Extract all product names, prices, and descriptions",
url="https://example.com/products",
command_type="extract"
)
# Extract specific information with a selector
result = stagehand_tool.run(
instruction="Extract the main article title and content",
url="https://example.com/blog/article",
command_type="extract",
selector=".article-container" # Optional CSS selector
)
```
### 3. أمر Observe
يحدد نوع الأمر `observe` عناصر صفحات الويب ويحللها.
```python
# Find interactive elements
result = stagehand_tool.run(
instruction="Find all interactive elements in the navigation menu",
url="https://example.com",
command_type="observe"
)
# Identify form fields
result = stagehand_tool.run(
instruction="Identify all the input fields in the registration form",
url="https://example.com/register",
command_type="observe",
selector="#registration-form"
)
```
## خيارات الإعداد
يمكنك تخصيص سلوك أداة StagehandTool باستخدام المعاملات التالية:
```python
stagehand_tool = StagehandTool(
api_key="your-browserbase-api-key",
project_id="your-browserbase-project-id",
model_api_key="your-llm-api-key",
model_name=AvailableModel.CLAUDE_3_7_SONNET_LATEST,
dom_settle_timeout_ms=5000, # Wait longer for DOM to settle
headless=True, # Run browser in headless mode
self_heal=True, # Attempt to recover from errors
wait_for_captcha_solves=True, # Wait for CAPTCHA solving
verbose=1, # Control logging verbosity (0-3)
)
```
## أفضل الممارسات
1. **كن محدداً**: قدم تعليمات مفصلة للحصول على نتائج أفضل
2. **اختر نوع الأمر المناسب**: حدد نوع الأمر الصحيح لمهمتك
3. **استخدم المحددات**: استفد من محددات CSS لتحسين الدقة
4. **قسّم المهام المعقدة**: قسّم سير العمل المعقدة إلى عدة استدعاءات للأداة
5. **طبّق معالجة الأخطاء**: أضف معالجة الأخطاء للمشكلات المحتملة
## استكشاف الأخطاء وإصلاحها
المشكلات الشائعة وحلولها:
- **مشكلات الجلسة**: تحقق من مفاتيح API لكل من Browserbase ومزود النموذج اللغوي
- **العنصر غير موجود**: قم بزيادة قيمة `dom_settle_timeout_ms` للصفحات البطيئة
- **فشل الإجراء**: استخدم `observe` لتحديد العناصر الصحيحة أولاً
- **بيانات غير مكتملة**: حسّن التعليمات أو قدم محددات محددة
## موارد إضافية
للأسئلة حول تكامل CrewAI:
- انضم إلى مجتمع Stagehand على [Slack](https://stagehand.dev/slack)
- افتح مشكلة في [مستودع Stagehand](https://github.com/browserbase/stagehand)
- قم بزيارة [وثائق Stagehand](https://docs.stagehand.dev/)