docs: add modern standard arabic translation of all documentation

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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