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

الملفات

يدعم CrewAI مدخلات الملفات متعددة الوسائط الأصلية، مما يتيح لك تمرير الصور وملفات PDF والصوت والفيديو والنصوص مباشرة إلى وكلائك. يتم تنسيق الملفات تلقائيًا وفقًا لمتطلبات API لكل مزود LLM.

يدعم CrewAI خمسة أنواع ملفات محددة بالإضافة إلى فئة File العامة التي تكتشف النوع تلقائيًا:

النوعالفئةحالات الاستخدام
صورةImageFileصور، لقطات شاشة، مخططات، رسوم بيانية
PDFPDFFileمستندات، تقارير، أوراق بحثية
صوتAudioFileتسجيلات صوتية، بودكاست، اجتماعات
فيديوVideoFileتسجيلات شاشة، عروض تقديمية
نصTextFileملفات كود، سجلات، ملفات بيانات
عامFileاكتشاف تلقائي للنوع من المحتوى
from crewai_files import File, ImageFile, PDFFile, AudioFile, VideoFile, TextFile
image = ImageFile(source="screenshot.png")
pdf = PDFFile(source="report.pdf")
audio = AudioFile(source="meeting.mp3")
video = VideoFile(source="demo.mp4")
text = TextFile(source="data.csv")
file = File(source="document.pdf")

يقبل معامل source أنواع إدخال متعددة ويكتشف تلقائيًا المعالج المناسب:

from crewai_files import ImageFile
image = ImageFile(source="./images/chart.png")
from crewai_files import ImageFile
image = ImageFile(source="https://example.com/image.png")
from crewai_files import ImageFile, FileBytes
image_bytes = download_image_from_api()
image = ImageFile(source=FileBytes(data=image_bytes, filename="downloaded.png"))
image = ImageFile(source=image_bytes)

يمكن تمرير الملفات على مستويات متعددة، حيث تأخذ المستويات الأكثر تحديدًا الأولوية.

مرر الملفات عند تشغيل طاقم:

from crewai import Crew
from crewai_files import ImageFile
crew = Crew(agents=[analyst], tasks=[analysis_task])
result = crew.kickoff(
inputs={"topic": "Q4 Sales"},
input_files={
"chart": ImageFile(source="sales_chart.png"),
"report": PDFFile(source="quarterly_report.pdf"),
}
)

أرفق الملفات بمهام محددة:

from crewai import Task
from crewai_files import ImageFile
task = Task(
description="Analyze the sales chart and identify trends in {chart}",
expected_output="A summary of key trends",
input_files={
"chart": ImageFile(source="sales_chart.png"),
}
)

مرر الملفات إلى التدفقات، والتي تنتقل تلقائيًا إلى الأطقم:

from crewai.flow.flow import Flow, start
from crewai_files import ImageFile
class AnalysisFlow(Flow):
@start()
def analyze(self):
return self.analysis_crew.kickoff()
flow = AnalysisFlow()
result = flow.kickoff(
input_files={"image": ImageFile(source="data.png")}
)

مرر الملفات مباشرة إلى تشغيل الوكيل:

from crewai import Agent
from crewai_files import ImageFile
agent = Agent(
role="Image Analyst",
goal="Analyze images",
backstory="Expert at visual analysis",
llm="gpt-4o",
)
result = agent.kickoff(
messages="What's in this image?",
input_files={"photo": ImageFile(source="photo.jpg")},
)

عند تمرير الملفات على مستويات متعددة، تتجاوز المستويات الأكثر تحديدًا المستويات الأوسع:

Flow input_files < Crew input_files < Task input_files

على سبيل المثال، إذا عرّف كل من التدفق والمهمة ملفًا باسم "chart"، تُستخدم نسخة المهمة.

تدعم المزودات المختلفة أنواع ملفات مختلفة. يقوم CrewAI تلقائيًا بتنسيق الملفات وفقًا لواجهة كل مزود.

المزودصورةPDFصوتفيديونص
OpenAI (completions API)
OpenAI (responses API)
Anthropic (claude-3.x)
Google Gemini (gemini-1.5, 2.0, 2.5)
AWS Bedrock (claude-3)
Azure OpenAI (gpt-4o)

يختار CrewAI تلقائيًا الطريقة المثلى لإرسال الملفات إلى كل مزود:

الطريقةالوصفمتى تُستخدم
Inline Base64الملف مضمّن مباشرة في الطلبملفات صغيرة (< 5 ميجابايت عادة)
File Upload APIالملف يُرفع بشكل منفصل، يُشار إليه بمعرّفملفات كبيرة تتجاوز العتبة
URL Referenceعنوان URL مباشر يُمرر إلى النموذجمصدر الملف هو عنوان URL بالفعل
المزودInline Base64File Upload APIURL References
OpenAI✓ (> 5 MB)
Anthropic✓ (> 5 MB)
Google Gemini✓ (> 20 MB)
AWS Bedrock✓ (S3 URIs)
Azure OpenAI

تحكم في كيفية معالجة الملفات عندما تتجاوز حدود المزود:

from crewai_files import ImageFile, PDFFile
image = ImageFile(source="large.png", mode="strict")
image = ImageFile(source="large.png", mode="auto")
image = ImageFile(source="large.png", mode="warn")
pdf = PDFFile(source="large.pdf", mode="chunk")

لكل مزود حدود محددة لأحجام الملفات والأبعاد:

  • الصور: حد أقصى 20 ميجابايت، حتى 10 صور لكل طلب
  • PDF: حد أقصى 32 ميجابايت، حتى 100 صفحة
  • الصوت: حد أقصى 25 ميجابايت، حتى 25 دقيقة
  • الصور: حد أقصى 5 ميجابايت، أقصى 8000x8000 بكسل، حتى 100 صورة
  • PDF: حد أقصى 32 ميجابايت، حتى 100 صفحة
  • الصور: حد أقصى 100 ميجابايت
  • PDF: حد أقصى 50 ميجابايت
  • الصوت: حد أقصى 100 ميجابايت، حتى 9.5 ساعة
  • الفيديو: حد أقصى 2 جيجابايت، حتى ساعة واحدة
  • الصور: حد أقصى 4.5 ميجابايت، أقصى 8000x8000 بكسل
  • PDF: حد أقصى 3.75 ميجابايت، حتى 100 صفحة

الإشارة إلى الملفات في الأوامر

Section titled “الإشارة إلى الملفات في الأوامر”

استخدم اسم مفتاح الملف في أوصاف المهام للإشارة إلى الملفات:

task = Task(
description="""
Analyze the provided materials:
1. Review the chart in {sales_chart}
2. Cross-reference with data in {quarterly_report}
3. Summarize key findings
""",
expected_output="Analysis summary with key insights",
input_files={
"sales_chart": ImageFile(source="chart.png"),
"quarterly_report": PDFFile(source="report.pdf"),
}
)