docs: add modern standard arabic translation of all documentation

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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