mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-06 09:42:39 +00:00
docs: add modern standard arabic translation of all documentation
This commit is contained in:
119
docs/ar/tools/ai-ml/aimindtool.mdx
Normal file
119
docs/ar/tools/ai-ml/aimindtool.mdx
Normal 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، تمكّن هذه الأداة الوكلاء من الوصول إلى البيانات وتحليلها بكفاءة.
|
||||
210
docs/ar/tools/ai-ml/codeinterpretertool.mdx
Normal file
210
docs/ar/tools/ai-ml/codeinterpretertool.mdx
Normal 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 في بيئة آمنة نسبياً. من خلال تمكين الوكلاء من كتابة وتشغيل الكود، توسّع قدراتهم في حل المشكلات بشكل كبير، خاصة للمهام التي تتضمن تحليل البيانات أو الحسابات أو أعمال حسابية أخرى. هذه الأداة مفيدة بشكل خاص للوكلاء الذين يحتاجون إلى إجراء عمليات معقدة يُعبَّر عنها بكفاءة أكبر في الكود مقارنة باللغة الطبيعية.
|
||||
52
docs/ar/tools/ai-ml/dalletool.mdx
Normal file
52
docs/ar/tools/ai-ml/dalletool.mdx
Normal 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).
|
||||
59
docs/ar/tools/ai-ml/langchaintool.mdx
Normal file
59
docs/ar/tools/ai-ml/langchaintool.mdx
Normal 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، استفد من الأدوات المخصصة والموجودة لتمكين وكلائك وتعزيز منظومة الذكاء الاصطناعي. فكّر في الاستفادة من معالجة الأخطاء وآليات التخزين المؤقت
|
||||
ومرونة معاملات الأدوات لتحسين أداء وقدرات وكلائك.
|
||||
147
docs/ar/tools/ai-ml/llamaindextool.mdx
Normal file
147
docs/ar/tools/ai-ml/llamaindextool.mdx
Normal 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، تمكّن الوكلاء من الاستفادة من وظائف استرجاع ومعالجة البيانات المتطورة، مما يعزز قدرتهم على التعامل مع مصادر المعلومات المعقدة.
|
||||
65
docs/ar/tools/ai-ml/overview.mdx
Normal file
65
docs/ar/tools/ai-ml/overview.mdx
Normal 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"
|
||||
)
|
||||
654
docs/ar/tools/ai-ml/ragtool.mdx
Normal file
654
docs/ar/tools/ai-ml/ragtool.mdx
Normal 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` طريقة قوية لإنشاء واستعلام قواعد المعرفة من مصادر بيانات متنوعة. من خلال الاستفادة من التوليد المعزز بالاسترجاع، تمكّن الوكلاء من الوصول إلى المعلومات ذات الصلة واسترجاعها بكفاءة، مما يعزز قدرتهم على تقديم استجابات دقيقة ومناسبة للسياق.
|
||||
50
docs/ar/tools/ai-ml/visiontool.mdx
Normal file
50
docs/ar/tools/ai-ml/visiontool.mdx
Normal 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` | **إلزامي**. مسار ملف الصورة المراد استخراج النص منها. |
|
||||
99
docs/ar/tools/automation/apifyactorstool.mdx
Normal file
99
docs/ar/tools/automation/apifyactorstool.mdx
Normal 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.
|
||||
88
docs/ar/tools/automation/composiotool.mdx
Normal file
88
docs/ar/tools/automation/composiotool.mdx
Normal 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)
|
||||
127
docs/ar/tools/automation/multiontool.mdx
Normal file
127
docs/ar/tools/automation/multiontool.mdx
Normal 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. من خلال تمكين الوكلاء من التفاعل مع المواقع عبر تعليمات اللغة الطبيعية، تفتح مجموعة واسعة من الإمكانيات للمهام المستندة إلى الويب، من جمع البيانات والبحث إلى التفاعلات الآلية مع خدمات الويب.
|
||||
60
docs/ar/tools/automation/overview.mdx
Normal file
60
docs/ar/tools/automation/overview.mdx
Normal 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"
|
||||
)
|
||||
```
|
||||
|
||||
## **فوائد التكامل**
|
||||
|
||||
- **الكفاءة**: تقليل العمل اليدوي من خلال الأتمتة
|
||||
- **قابلية التوسع**: التعامل مع أعباء العمل المتزايدة تلقائياً
|
||||
- **الموثوقية**: تنفيذ متسق لسير العمل
|
||||
- **الاتصال**: ربط الأنظمة والمنصات المختلفة
|
||||
- **الإنتاجية**: التركيز على المهام ذات القيمة العالية بينما تتولى الأتمتة العمل الروتيني
|
||||
59
docs/ar/tools/automation/zapieractionstool.mdx
Normal file
59
docs/ar/tools/automation/zapieractionstool.mdx
Normal 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` ديناميكياً.
|
||||
|
||||
|
||||
166
docs/ar/tools/cloud-storage/bedrockkbretriever.mdx
Normal file
166
docs/ar/tools/cloud-storage/bedrockkbretriever.mdx
Normal 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 لاستجابات تتوافق مع وثائق شركتك المعتمدة
|
||||
- إنشاء مسارات قابلة للتدقيق لمصادر المعلومات المستخدمة من قبل وكلائك
|
||||
- الحفاظ على التحكم في مصادر المعلومات التي يمكن لوكلائك الوصول إليها
|
||||
51
docs/ar/tools/cloud-storage/overview.mdx
Normal file
51
docs/ar/tools/cloud-storage/overview.mdx
Normal 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"
|
||||
)
|
||||
145
docs/ar/tools/cloud-storage/s3readertool.mdx
Normal file
145
docs/ar/tools/cloud-storage/s3readertool.mdx
Normal 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.
|
||||
151
docs/ar/tools/cloud-storage/s3writertool.mdx
Normal file
151
docs/ar/tools/cloud-storage/s3writertool.mdx
Normal 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.
|
||||
167
docs/ar/tools/database-data/mongodbvectorsearchtool.mdx
Normal file
167
docs/ar/tools/database-data/mongodbvectorsearchtool.mdx
Normal 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()
|
||||
```
|
||||
67
docs/ar/tools/database-data/mysqltool.mdx
Normal file
67
docs/ar/tools/database-data/mysqltool.mdx
Normal 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",
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
```
|
||||
102
docs/ar/tools/database-data/nl2sqltool.mdx
Normal file
102
docs/ar/tools/database-data/nl2sqltool.mdx
Normal 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]
|
||||
)
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
كان هدف المهمة الأساسي:
|
||||
|
||||
"استرجاع المتوسط والحد الأقصى والحد الأدنى للإيرادات الشهرية لكل مدينة، مع تضمين المدن التي بها أكثر من مستخدم واحد فقط. أيضاً، قم بعدّ المستخدمين في كل مدينة وترتيب النتائج حسب متوسط الإيرادات الشهرية بترتيب تنازلي"
|
||||
|
||||
حاول الوكيل الحصول على المعلومات من قاعدة البيانات، الاستعلام الأول كان خاطئاً فحاول الوكيل مرة أخرى وحصل على المعلومات الصحيحة ومررها إلى الوكيل التالي.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
كان هدف المهمة الثانية:
|
||||
|
||||
"مراجعة البيانات وإنشاء تقرير مفصّل، ثم إنشاء جدول في قاعدة البيانات بحقول مبنية على البيانات المقدمة. تضمين معلومات عن المتوسط والحد الأقصى والحد الأدنى للإيرادات الشهرية لكل مدينة، مع تضمين المدن التي بها أكثر من مستخدم واحد فقط. أيضاً، عدّ المستخدمين في كل مدينة وترتيب النتائج حسب متوسط الإيرادات الشهرية بترتيب تنازلي."
|
||||
|
||||
الآن تصبح الأمور مثيرة للاهتمام، حيث يولّد الوكيل استعلام SQL ليس فقط لإنشاء الجدول بل أيضاً لإدراج البيانات فيه. وفي النهاية لا يزال الوكيل يُرجع التقرير النهائي الذي يتطابق تماماً مع ما كان في قاعدة البيانات.
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
هذا مثال بسيط على كيفية استخدام أداة NL2SQLTool للتفاعل مع قاعدة البيانات وتوليد التقارير بناءً على البيانات الموجودة فيها.
|
||||
|
||||
توفر الأداة إمكانيات لا حصر لها لمنطق الوكيل وكيفية تفاعله مع قاعدة البيانات.
|
||||
|
||||
```md
|
||||
DB -> Agent -> ... -> Agent -> DB
|
||||
```
|
||||
67
docs/ar/tools/database-data/overview.mdx
Normal file
67
docs/ar/tools/database-data/overview.mdx
Normal 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"
|
||||
)
|
||||
```
|
||||
80
docs/ar/tools/database-data/pgsearchtool.mdx
Normal file
80
docs/ar/tools/database-data/pgsearchtool.mdx
Normal 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",
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
```
|
||||
344
docs/ar/tools/database-data/qdrantvectorsearchtool.mdx
Normal file
344
docs/ar/tools/database-data/qdrantvectorsearchtool.mdx
Normal 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
|
||||
```
|
||||
60
docs/ar/tools/database-data/singlestoresearchtool.mdx
Normal file
60
docs/ar/tools/database-data/singlestoresearchtool.mdx
Normal 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()
|
||||
```
|
||||
203
docs/ar/tools/database-data/snowflakesearchtool.mdx
Normal file
203
docs/ar/tools/database-data/snowflakesearchtool.mdx
Normal 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.
|
||||
168
docs/ar/tools/database-data/weaviatevectorsearchtool.mdx
Normal file
168
docs/ar/tools/database-data/weaviatevectorsearchtool.mdx
Normal 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 المتجهية. من خلال الاستفادة من التضمينات المتجهية، تتيح نتائج بحث أكثر دقة وذات صلة بالسياق مقارنة بعمليات البحث التقليدية القائمة على الكلمات المفتاحية. هذه الأداة مفيدة بشكل خاص للتطبيقات التي تتطلب العثور على المعلومات بناءً على المعنى بدلاً من التطابق الحرفي.
|
||||
76
docs/ar/tools/file-document/csvsearchtool.mdx
Normal file
76
docs/ar/tools/file-document/csvsearchtool.mdx
Normal 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),
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
52
docs/ar/tools/file-document/directoryreadtool.mdx
Normal file
52
docs/ar/tools/file-document/directoryreadtool.mdx
Normal 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` | _اختياري_. معامل يحدد المسار إلى المجلد الذي ترغب في عرض محتوياته. يقبل كلاً من المسارات المطلقة والنسبية، ويوجه الأداة إلى المجلد المطلوب لعرض المحتوى. |
|
||||
70
docs/ar/tools/file-document/directorysearchtool.mdx
Normal file
70
docs/ar/tools/file-document/directorysearchtool.mdx
Normal 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),
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
77
docs/ar/tools/file-document/docxsearchtool.mdx
Normal file
77
docs/ar/tools/file-document/docxsearchtool.mdx
Normal 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),
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
42
docs/ar/tools/file-document/filereadtool.mdx
Normal file
42
docs/ar/tools/file-document/filereadtool.mdx
Normal 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`: مسار الملف المراد قراءته. يقبل كلاً من المسارات المطلقة والنسبية. تأكد من وجود الملف وأن لديك الصلاحيات اللازمة للوصول إليه.
|
||||
47
docs/ar/tools/file-document/filewritetool.mdx
Normal file
47
docs/ar/tools/file-document/filewritetool.mdx
Normal 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 القياسية.
|
||||
|
||||
من خلال الالتزام بإرشادات الإعداد والاستخدام المقدمة، فإن دمج هذه الأداة في المشاريع أمر مباشر ويضمن سلوكاً متسقاً لكتابة الملفات عبر جميع المنصات.
|
||||
75
docs/ar/tools/file-document/jsonsearchtool.mdx
Normal file
75
docs/ar/tools/file-document/jsonsearchtool.mdx
Normal 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.
|
||||
},
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
72
docs/ar/tools/file-document/mdxsearchtool.mdx
Normal file
72
docs/ar/tools/file-document/mdxsearchtool.mdx
Normal 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),
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
88
docs/ar/tools/file-document/ocrtool.mdx
Normal file
88
docs/ar/tools/file-document/ocrtool.mdx
Normal 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="Vision‑enabled 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()
|
||||
```
|
||||
97
docs/ar/tools/file-document/overview.mdx
Normal file
97
docs/ar/tools/file-document/overview.mdx
Normal 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"
|
||||
)
|
||||
```
|
||||
|
||||
## **نصائح لمعالجة المستندات**
|
||||
|
||||
- **صلاحيات الملفات**: تأكد من أن وكيلك لديه صلاحيات القراءة/الكتابة المناسبة
|
||||
- **الملفات الكبيرة**: فكر في التقسيم إلى أجزاء للمستندات الكبيرة جداً
|
||||
- **دعم الصيغ**: راجع وثائق الأداة لمعرفة صيغ الملفات المدعومة
|
||||
- **معالجة الأخطاء**: طبّق معالجة أخطاء مناسبة للملفات التالفة أو التي يتعذر الوصول إليها
|
||||
75
docs/ar/tools/file-document/pdf-text-writing-tool.mdx
Normal file
75
docs/ar/tools/file-document/pdf-text-writing-tool.mdx
Normal 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` صالح.
|
||||
107
docs/ar/tools/file-document/pdfsearchtool.mdx
Normal file
107
docs/ar/tools/file-document/pdfsearchtool.mdx
Normal 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.
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
89
docs/ar/tools/file-document/txtsearchtool.mdx
Normal file
89
docs/ar/tools/file-document/txtsearchtool.mdx
Normal 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").
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
74
docs/ar/tools/file-document/xmlsearchtool.mdx
Normal file
74
docs/ar/tools/file-document/xmlsearchtool.mdx
Normal 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),
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
188
docs/ar/tools/integration/bedrockinvokeagenttool.mdx
Normal file
188
docs/ar/tools/integration/bedrockinvokeagenttool.mdx
Normal 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 دون كشف البيانات الحساسة
|
||||
- بناء أنظمة وكلاء تمتد عبر حدود المؤسسات مع الحفاظ على الأمان والتحكم في البيانات
|
||||
276
docs/ar/tools/integration/crewaiautomationtool.mdx
Normal file
276
docs/ar/tools/integration/crewaiautomationtool.mdx
Normal 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}`: التحقق من حالة مهمة قيد التشغيل
|
||||
|
||||
## ملاحظات
|
||||
|
||||
- تقوم الأداة تلقائياً باستقصاء نقطة نهاية الحالة كل ثانية حتى الاكتمال أو انتهاء المهلة
|
||||
- تُرجع المهام الناجحة النتيجة مباشرة، بينما تُرجع المهام الفاشلة معلومات الخطأ
|
||||
- يجب الحفاظ على أمان رموز الحامل وعدم ترميزها بشكل ثابت في بيئات الإنتاج
|
||||
- فكر في استخدام متغيرات البيئة للتكوينات الحساسة مثل رموز الحامل
|
||||
- يجب أن تكون مخططات المدخلات المخصصة متوافقة مع المعاملات المتوقعة لأتمتة الطاقم المستهدف
|
||||
367
docs/ar/tools/integration/mergeagenthandlertool.mdx
Normal file
367
docs/ar/tools/integration/mergeagenthandlertool.mdx
Normal 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` لمعالجة أخطاء متسقة.
|
||||
76
docs/ar/tools/integration/overview.mdx
Normal file
76
docs/ar/tools/integration/overview.mdx
Normal 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
140
docs/ar/tools/overview.mdx
Normal 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, ...)
|
||||
```
|
||||
|
||||
هل أنت مستعد للاستكشاف؟ اختر فئة أعلاه لاكتشاف الأدوات التي تناسب حالة استخدامك!
|
||||
111
docs/ar/tools/search-research/arxivpapertool.mdx
Normal file
111
docs/ar/tools/search-research/arxivpapertool.mdx
Normal 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 غير الصالح وأخطاء نظام التشغيل برسائل توضيحية.
|
||||
314
docs/ar/tools/search-research/bravesearchtool.mdx
Normal file
314
docs/ar/tools/search-research/bravesearchtool.mdx
Normal 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/) للحصول على التفاصيل الكاملة حول المعاملات المتاحة وصيغ الاستجابة.
|
||||
85
docs/ar/tools/search-research/codedocssearchtool.mdx
Normal file
85
docs/ar/tools/search-research/codedocssearchtool.mdx
Normal 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",
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
```
|
||||
81
docs/ar/tools/search-research/databricks-query-tool.mdx
Normal file
81
docs/ar/tools/search-research/databricks-query-tool.mdx
Normal 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؛ أضف فلاتر/حدود.
|
||||
|
||||
|
||||
110
docs/ar/tools/search-research/exasearchtool.mdx
Normal file
110
docs/ar/tools/search-research/exasearchtool.mdx
Normal 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]
|
||||
)
|
||||
```
|
||||
|
||||
## الميزات
|
||||
|
||||
- **البحث الدلالي**: العثور على نتائج بناءً على المعنى، وليس الكلمات المفتاحية فقط
|
||||
- **استرجاع المحتوى الكامل**: الحصول على النص الكامل لصفحات الويب مع نتائج البحث
|
||||
- **ملخصات الذكاء الاصطناعي**: الحصول على ملخصات موجزة مولّدة بالذكاء الاصطناعي لكل نتيجة
|
||||
- **تصفية التاريخ**: تقييد النتائج لفترات زمنية محددة باستخدام فلاتر تاريخ النشر
|
||||
- **تصفية النطاقات**: تقييد عمليات البحث على نطاقات محددة
|
||||
86
docs/ar/tools/search-research/githubsearchtool.mdx
Normal file
86
docs/ar/tools/search-research/githubsearchtool.mdx
Normal 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",
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
113
docs/ar/tools/search-research/linkupsearchtool.mdx
Normal file
113
docs/ar/tools/search-research/linkupsearchtool.mdx
Normal 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. من خلال الاستفادة من هذه الأداة، يمكن للوكلاء الوصول إلى معلومات ذات صلة ومحدّثة لتعزيز اتخاذ القرارات وتنفيذ المهام.
|
||||
94
docs/ar/tools/search-research/overview.mdx
Normal file
94
docs/ar/tools/search-research/overview.mdx
Normal 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"
|
||||
)
|
||||
```
|
||||
66
docs/ar/tools/search-research/serpapi-googlesearchtool.mdx
Normal file
66
docs/ar/tools/search-research/serpapi-googlesearchtool.mdx
Normal 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 وتُرجع نتائج بحث منظمة.
|
||||
|
||||
|
||||
62
docs/ar/tools/search-research/serpapi-googleshoppingtool.mdx
Normal file
62
docs/ar/tools/search-research/serpapi-googleshoppingtool.mdx
Normal 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، اختياري): معامل الموقع الجغرافي.
|
||||
|
||||
|
||||
107
docs/ar/tools/search-research/serperdevtool.mdx
Normal file
107
docs/ar/tools/search-research/serperdevtool.mdx
Normal 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، يكتسب المستخدمون القدرة على إجراء عمليات بحث فورية وذات صلة عبر الإنترنت مباشرة من تطبيقاتهم.
|
||||
تسمح المعاملات المحدّثة بنتائج بحث أكثر تخصيصاً وتوطيناً. من خلال الالتزام بإرشادات الإعداد والاستخدام المقدمة، يصبح دمج هذه الأداة في المشاريع سلساً ومباشراً.
|
||||
140
docs/ar/tools/search-research/tavilyextractortool.mdx
Normal file
140
docs/ar/tools/search-research/tavilyextractortool.mdx
Normal 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) للحصول على معلومات مفصلة حول هيكل الاستجابة والخيارات المتاحة.
|
||||
125
docs/ar/tools/search-research/tavilysearchtool.mdx
Normal file
125
docs/ar/tools/search-research/tavilysearchtool.mdx
Normal 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 خام اختياري (عند التفعيل)
|
||||
|
||||
يتم اقتطاع المحتوى لكل نتيجة تلقائياً لمنع مشاكل نافذة السياق مع الحفاظ على المعلومات الأكثر صلة.
|
||||
78
docs/ar/tools/search-research/websitesearchtool.mdx
Normal file
78
docs/ar/tools/search-research/websitesearchtool.mdx
Normal 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",
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
```
|
||||
195
docs/ar/tools/search-research/youtubechannelsearchtool.mdx
Normal file
195
docs/ar/tools/search-research/youtubechannelsearchtool.mdx
Normal 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.
|
||||
188
docs/ar/tools/search-research/youtubevideosearchtool.mdx
Normal file
188
docs/ar/tools/search-research/youtubevideosearchtool.mdx
Normal 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. من خلال تمكين الوكلاء من البحث داخل محتوى الفيديو، تسهّل مهام استخراج المعلومات والتحليل التي قد يكون من الصعب تنفيذها بطريقة أخرى. هذه الأداة مفيدة بشكل خاص للبحث وتحليل المحتوى واستخراج المعرفة من مصادر الفيديو.
|
||||
31
docs/ar/tools/tool-integrations/overview.mdx
Normal file
31
docs/ar/tools/tool-integrations/overview.mdx
Normal 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 بالبنية التحتية وسير العمل الخاصة بك.
|
||||
|
||||
112
docs/ar/tools/web-scraping/brightdata-tools.mdx
Normal file
112
docs/ar/tools/web-scraping/brightdata-tools.mdx
Normal 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()
|
||||
```
|
||||
|
||||
|
||||
51
docs/ar/tools/web-scraping/browserbaseloadtool.mdx
Normal file
51
docs/ar/tools/web-scraping/browserbaseloadtool.mdx
Normal 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`. |
|
||||
48
docs/ar/tools/web-scraping/firecrawlcrawlwebsitetool.mdx
Normal file
48
docs/ar/tools/web-scraping/firecrawlcrawlwebsitetool.mdx
Normal 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`: اختياري. المهلة بالملي ثانية لعملية الزحف.
|
||||
44
docs/ar/tools/web-scraping/firecrawlscrapewebsitetool.mdx
Normal file
44
docs/ar/tools/web-scraping/firecrawlscrapewebsitetool.mdx
Normal 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`: اختياري. المهلة بالملي ثانية للطلب
|
||||
42
docs/ar/tools/web-scraping/firecrawlsearchtool.mdx
Normal file
42
docs/ar/tools/web-scraping/firecrawlsearchtool.mdx
Normal 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`: اختياري. الحد الأقصى لعدد الصفحات للزحف.
|
||||
87
docs/ar/tools/web-scraping/hyperbrowserloadtool.mdx
Normal file
87
docs/ar/tools/web-scraping/hyperbrowserloadtool.mdx
Normal 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، تتيح هذه الأداة للوكلاء الوصول إلى محتوى الويب واستخراجه بكفاءة.
|
||||
112
docs/ar/tools/web-scraping/overview.mdx
Normal file
112
docs/ar/tools/web-scraping/overview.mdx
Normal 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` لتفاعلات المتصفح الذكية
|
||||
237
docs/ar/tools/web-scraping/oxylabsscraperstool.mdx
Normal file
237
docs/ar/tools/web-scraping/oxylabsscraperstool.mdx
Normal 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)
|
||||
```
|
||||
140
docs/ar/tools/web-scraping/scrapeelementfromwebsitetool.mdx
Normal file
140
docs/ar/tools/web-scraping/scrapeelementfromwebsitetool.mdx
Normal 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. من خلال تمكين الوكلاء من استهداف المحتوى الذي يحتاجونه فقط، تجعل مهام استخراج البيانات من الويب أكثر كفاءة وتركيزاً. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث تحتاج معلومات محددة إلى استخراجها من صفحات الويب.
|
||||
197
docs/ar/tools/web-scraping/scrapegraphscrapetool.mdx
Normal file
197
docs/ar/tools/web-scraping/scrapegraphscrapetool.mdx
Normal 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` طريقة قوية لاستخراج المحتوى من المواقع باستخدام فهم مدعوم بالذكاء الاصطناعي لبنية صفحات الويب. من خلال تمكين الوكلاء من استهداف معلومات محددة باستخدام موجّهات اللغة الطبيعية، تجعل مهام استخراج البيانات من الويب أكثر كفاءة وتركيزاً. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث تحتاج معلومات محددة إلى استخراجها من صفحات الويب.
|
||||
48
docs/ar/tools/web-scraping/scrapewebsitetool.mdx
Normal file
48
docs/ar/tools/web-scraping/scrapewebsitetool.mdx
Normal 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 للموقع لقراءة الملف. هذا هو المدخل الأساسي للأداة، يحدد محتوى أي موقع يجب استخراجه وقراءته. |
|
||||
221
docs/ar/tools/web-scraping/scrapflyscrapetool.mdx
Normal file
221
docs/ar/tools/web-scraping/scrapflyscrapetool.mdx
Normal 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 المتقدمة لاستخراج البيانات من الويب. مع ميزات مثل دعم المتصفح بدون واجهة والبروكسيات وتجاوز مكافحة الروبوتات، يمكنها التعامل مع المواقع المعقدة واستخراج المحتوى بتنسيقات مختلفة. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث يكون استخراج البيانات الموثوق من الويب مطلوباً.
|
||||
196
docs/ar/tools/web-scraping/seleniumscrapingtool.mdx
Normal file
196
docs/ar/tools/web-scraping/seleniumscrapingtool.mdx
Normal 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.
|
||||
101
docs/ar/tools/web-scraping/serperscrapewebsitetool.mdx
Normal file
101
docs/ar/tools/web-scraping/serperscrapewebsitetool.mdx
Normal 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 وشروط خدمة المواقع عند استخراج المحتوى
|
||||
- فكر في تنفيذ تأخيرات بين الطلبات لعمليات الاستخراج واسعة النطاق
|
||||
93
docs/ar/tools/web-scraping/spidertool.mdx
Normal file
93
docs/ar/tools/web-scraping/spidertool.mdx
Normal 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`. |
|
||||
245
docs/ar/tools/web-scraping/stagehandtool.mdx
Normal file
245
docs/ar/tools/web-scraping/stagehandtool.mdx
Normal 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/)
|
||||
Reference in New Issue
Block a user