Arquivos
Visão Geral
Seção intitulada “Visão Geral”O CrewAI suporta entradas de arquivos multimodais nativos, permitindo que você passe imagens, PDFs, áudio, vídeo e arquivos de texto diretamente para seus agentes. Os arquivos são formatados automaticamente para os requisitos da API de cada provedor LLM.
Tipos de Arquivo
Seção intitulada “Tipos de Arquivo”O CrewAI suporta cinco tipos de arquivo específicos mais uma classe genérica File que detecta automaticamente o tipo:
| Tipo | Classe | Casos de Uso |
|---|---|---|
| Imagem | ImageFile | Fotos, capturas de tela, diagramas, gráficos |
PDFFile | Documentos, relatórios, artigos | |
| Áudio | AudioFile | Gravações de voz, podcasts, reuniões |
| Vídeo | VideoFile | Gravações de tela, apresentações |
| Texto | TextFile | Arquivos de código, logs, arquivos de dados |
| Genérico | File | Detecta automaticamente o tipo do conteúdo |
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")Fontes de Arquivo
Seção intitulada “Fontes de Arquivo”O parâmetro source aceita múltiplos tipos de entrada e detecta automaticamente o handler apropriado:
De Caminho
Seção intitulada “De Caminho”from crewai_files import ImageFile
image = ImageFile(source="./images/chart.png")from crewai_files import ImageFile
image = ImageFile(source="https://example.com/image.png")De Bytes
Seção intitulada “De Bytes”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)Usando Arquivos
Seção intitulada “Usando Arquivos”Arquivos podem ser passados em múltiplos níveis, com níveis mais específicos tendo precedência.
Com Crews
Seção intitulada “Com Crews”Passe arquivos ao iniciar uma crew:
from crewai import Crewfrom 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"), })Com Tasks
Seção intitulada “Com Tasks”Anexe arquivos a tasks específicas:
from crewai import Taskfrom crewai_files import ImageFile
task = Task( description="Analise o gráfico de vendas e identifique tendências em {chart}", expected_output="Um resumo das principais tendências", input_files={ "chart": ImageFile(source="sales_chart.png"), })Com Flows
Seção intitulada “Com Flows”Passe arquivos para flows, que automaticamente herdam para crews:
from crewai.flow.flow import Flow, startfrom 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")})Com Agentes Standalone
Seção intitulada “Com Agentes Standalone”Passe arquivos diretamente no kickoff do agente:
from crewai import Agentfrom 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")},)Precedência de Arquivos
Seção intitulada “Precedência de Arquivos”Quando arquivos são passados em múltiplos níveis, níveis mais específicos sobrescrevem os mais amplos:
Flow input_files < Crew input_files < Task input_filesPor exemplo, se tanto Flow quanto Task definem um arquivo chamado "chart", a versão da Task é usada.
Suporte por Provedor
Seção intitulada “Suporte por Provedor”Diferentes provedores suportam diferentes tipos de arquivo. O CrewAI formata automaticamente os arquivos para a API de cada provedor.
| Provedor | Imagem | Áudio | Vídeo | Texto | |
|---|---|---|---|---|---|
| OpenAI (API completions) | ✓ | ||||
| OpenAI (API responses) | ✓ | ✓ | ✓ | ||
| Anthropic (claude-3.x) | ✓ | ✓ | |||
| Google Gemini (gemini-1.5, 2.0, 2.5) | ✓ | ✓ | ✓ | ✓ | ✓ |
| AWS Bedrock (claude-3) | ✓ | ✓ | |||
| Azure OpenAI (gpt-4o) | ✓ | ✓ |
Como os Arquivos São Enviados
Seção intitulada “Como os Arquivos São Enviados”O CrewAI escolhe automaticamente o método ideal para enviar arquivos para cada provedor:
| Método | Descrição | Usado Quando |
|---|---|---|
| Base64 Inline | Arquivo embutido diretamente na requisição | Arquivos pequenos (< 5MB tipicamente) |
| API de Upload de Arquivo | Arquivo enviado separadamente, referenciado por ID | Arquivos grandes que excedem o limite |
| Referência por URL | URL direta passada para o modelo | Fonte do arquivo já é uma URL |
Métodos de Transmissão por Provedor
Seção intitulada “Métodos de Transmissão por Provedor”| Provedor | Base64 Inline | API de Upload | Referências URL |
|---|---|---|---|
| OpenAI | ✓ | ✓ (> 5 MB) | ✓ |
| Anthropic | ✓ | ✓ (> 5 MB) | ✓ |
| Google Gemini | ✓ | ✓ (> 20 MB) | ✓ |
| AWS Bedrock | ✓ | ✓ (S3 URIs) | |
| Azure OpenAI | ✓ | ✓ |
Modos de Tratamento de Arquivo
Seção intitulada “Modos de Tratamento de Arquivo”Controle como os arquivos são processados quando excedem os limites do provedor:
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")Restrições por Provedor
Seção intitulada “Restrições por Provedor”Cada provedor tem limites específicos para tamanhos e dimensões de arquivo:
- Imagens: Máx 20 MB, até 10 imagens por requisição
- PDFs: Máx 32 MB, até 100 páginas
- Áudio: Máx 25 MB, até 25 minutos
Anthropic
Seção intitulada “Anthropic”- Imagens: Máx 5 MB, máx 8000x8000 pixels, até 100 imagens
- PDFs: Máx 32 MB, até 100 páginas
Google Gemini
Seção intitulada “Google Gemini”- Imagens: Máx 100 MB
- PDFs: Máx 50 MB
- Áudio: Máx 100 MB, até 9,5 horas
- Vídeo: Máx 2 GB, até 1 hora
AWS Bedrock
Seção intitulada “AWS Bedrock”- Imagens: Máx 4,5 MB, máx 8000x8000 pixels
- PDFs: Máx 3,75 MB, até 100 páginas
Referenciando Arquivos em Prompts
Seção intitulada “Referenciando Arquivos em Prompts”Use o nome da chave do arquivo nas descrições das suas tasks para referenciar arquivos:
task = Task( description=""" Analise os materiais fornecidos: 1. Revise o gráfico em {sales_chart} 2. Faça referência cruzada com dados em {quarterly_report} 3. Resuma as principais descobertas """, expected_output="Resumo da análise com insights principais", input_files={ "sales_chart": ImageFile(source="chart.png"), "quarterly_report": PDFFile(source="report.pdf"), })