mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-24 15:48:23 +00:00
chore: native files and openai responses docs
Some checks are pending
Build uv cache / build-cache (3.10) (push) Waiting to run
Build uv cache / build-cache (3.11) (push) Waiting to run
Build uv cache / build-cache (3.12) (push) Waiting to run
Build uv cache / build-cache (3.13) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (python) (push) Waiting to run
Check Documentation Broken Links / Check broken links (push) Waiting to run
Notify Downstream / notify-downstream (push) Waiting to run
Some checks are pending
Build uv cache / build-cache (3.10) (push) Waiting to run
Build uv cache / build-cache (3.11) (push) Waiting to run
Build uv cache / build-cache (3.12) (push) Waiting to run
Build uv cache / build-cache (3.13) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (python) (push) Waiting to run
Check Documentation Broken Links / Check broken links (push) Waiting to run
Notify Downstream / notify-downstream (push) Waiting to run
This commit is contained in:
267
docs/pt-BR/concepts/files.mdx
Normal file
267
docs/pt-BR/concepts/files.mdx
Normal file
@@ -0,0 +1,267 @@
|
||||
---
|
||||
title: Arquivos
|
||||
description: Passe imagens, PDFs, áudio, vídeo e arquivos de texto para seus agentes para processamento multimodal.
|
||||
icon: file-image
|
||||
---
|
||||
|
||||
## 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.
|
||||
|
||||
<Note type="info" title="Dependência Opcional">
|
||||
O suporte a arquivos requer o pacote opcional `crewai-files`. Instale com:
|
||||
|
||||
```bash
|
||||
uv add 'crewai[file-processing]'
|
||||
```
|
||||
</Note>
|
||||
|
||||
<Note type="warning" title="Acesso Antecipado">
|
||||
A API de processamento de arquivos está atualmente em acesso antecipado.
|
||||
</Note>
|
||||
|
||||
## 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 |
|
||||
| **PDF** | `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 |
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
O parâmetro `source` aceita múltiplos tipos de entrada e detecta automaticamente o handler apropriado:
|
||||
|
||||
### De Caminho
|
||||
|
||||
```python
|
||||
from crewai_files import ImageFile
|
||||
|
||||
image = ImageFile(source="./images/chart.png")
|
||||
```
|
||||
|
||||
### De URL
|
||||
|
||||
```python
|
||||
from crewai_files import ImageFile
|
||||
|
||||
image = ImageFile(source="https://example.com/image.png")
|
||||
```
|
||||
|
||||
### De Bytes
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
Arquivos podem ser passados em múltiplos níveis, com níveis mais específicos tendo precedência.
|
||||
|
||||
### Com Crews
|
||||
|
||||
Passe arquivos ao iniciar uma crew:
|
||||
|
||||
```python
|
||||
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"),
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
### Com Tasks
|
||||
|
||||
Anexe arquivos a tasks específicas:
|
||||
|
||||
```python
|
||||
from crewai import Task
|
||||
from 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
|
||||
|
||||
Passe arquivos para flows, que automaticamente herdam para crews:
|
||||
|
||||
```python
|
||||
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")}
|
||||
)
|
||||
```
|
||||
|
||||
### Com Agentes Standalone
|
||||
|
||||
Passe arquivos diretamente no kickoff do agente:
|
||||
|
||||
```python
|
||||
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")},
|
||||
)
|
||||
```
|
||||
|
||||
## 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_files
|
||||
```
|
||||
|
||||
Por exemplo, se tanto Flow quanto Task definem um arquivo chamado `"chart"`, a versão da Task é usada.
|
||||
|
||||
## Suporte por Provedor
|
||||
|
||||
Diferentes provedores suportam diferentes tipos de arquivo. O CrewAI formata automaticamente os arquivos para a API de cada provedor.
|
||||
|
||||
| Provedor | Imagem | PDF | Á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) | ✓ | | ✓ | | |
|
||||
|
||||
<Note type="info" title="Gemini para Máximo Suporte de Arquivos">
|
||||
Os modelos Google Gemini suportam todos os tipos de arquivo incluindo vídeo (até 1 hora, 2GB). Use Gemini quando precisar processar conteúdo de vídeo.
|
||||
</Note>
|
||||
|
||||
<Note type="warning" title="Tipos de Arquivo Não Suportados">
|
||||
Se você passar um tipo de arquivo que o provedor não suporta (ex: vídeo para OpenAI), você receberá um `UnsupportedFileTypeError`. Escolha seu provedor baseado nos tipos de arquivo que você precisa processar.
|
||||
</Note>
|
||||
|
||||
## 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
|
||||
|
||||
| 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** | ✓ | | ✓ |
|
||||
|
||||
<Note type="info" title="Otimização Automática">
|
||||
Você não precisa gerenciar isso. O CrewAI usa automaticamente o método mais eficiente baseado no tamanho do arquivo e nas capacidades do provedor. Provedores sem APIs de upload de arquivo usam base64 inline para todos os arquivos.
|
||||
</Note>
|
||||
|
||||
## Modos de Tratamento de Arquivo
|
||||
|
||||
Controle como os arquivos são processados quando excedem os limites do provedor:
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
Cada provedor tem limites específicos para tamanhos e dimensões de arquivo:
|
||||
|
||||
### OpenAI
|
||||
- **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
|
||||
- **Imagens**: Máx 5 MB, máx 8000x8000 pixels, até 100 imagens
|
||||
- **PDFs**: Máx 32 MB, até 100 páginas
|
||||
|
||||
### 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
|
||||
- **Imagens**: Máx 4,5 MB, máx 8000x8000 pixels
|
||||
- **PDFs**: Máx 3,75 MB, até 100 páginas
|
||||
|
||||
## Referenciando Arquivos em Prompts
|
||||
|
||||
Use o nome da chave do arquivo nas descrições das suas tasks para referenciar arquivos:
|
||||
|
||||
```python
|
||||
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"),
|
||||
}
|
||||
)
|
||||
```
|
||||
@@ -150,6 +150,37 @@ Nesta seção, você encontrará exemplos detalhados que ajudam a selecionar, co
|
||||
| o1-mini | 128.000 tokens | Raciocínio rápido, tarefas complexas |
|
||||
| o1-preview | 128.000 tokens | Raciocínio rápido, tarefas complexas |
|
||||
| o1 | 200.000 tokens | Raciocínio rápido, tarefas complexas |
|
||||
|
||||
**Responses API:**
|
||||
|
||||
A OpenAI oferece duas APIs: Chat Completions (padrão) e a nova Responses API. A Responses API foi projetada desde o início com suporte multimodal nativo—texto, imagens, áudio e chamadas de função são todos cidadãos de primeira classe. Ela oferece melhor performance com modelos de raciocínio e suporta recursos adicionais como auto-encadeamento e ferramentas integradas.
|
||||
|
||||
```python Code
|
||||
from crewai import LLM
|
||||
|
||||
# Usar Responses API em vez de Chat Completions
|
||||
llm = LLM(
|
||||
model="openai/gpt-4o",
|
||||
api="responses", # Habilitar Responses API
|
||||
store=True, # Armazenar respostas para multi-turno (opcional)
|
||||
auto_chain=True, # Auto-encadeamento para modelos de raciocínio (opcional)
|
||||
)
|
||||
```
|
||||
|
||||
**Parâmetros da Responses API:**
|
||||
- `api`: Defina como `"responses"` para usar a Responses API (padrão: `"completions"`)
|
||||
- `instructions`: Instruções de nível de sistema (apenas Responses API)
|
||||
- `store`: Se deve armazenar respostas para conversas multi-turno
|
||||
- `previous_response_id`: ID da resposta anterior para multi-turno
|
||||
- `include`: Dados adicionais para incluir na resposta (ex: `["reasoning.encrypted_content"]`)
|
||||
- `builtin_tools`: Lista de ferramentas integradas da OpenAI: `"web_search"`, `"file_search"`, `"code_interpreter"`, `"computer_use"`
|
||||
- `parse_tool_outputs`: Retornar `ResponsesAPIResult` estruturado com saídas de ferramentas integradas parseadas
|
||||
- `auto_chain`: Rastrear e usar automaticamente IDs de resposta para conversas multi-turno
|
||||
- `auto_chain_reasoning`: Rastrear itens de raciocínio criptografados para conformidade ZDR (Zero Data Retention)
|
||||
|
||||
<Tip>
|
||||
Use a Responses API para novos projetos, especialmente ao trabalhar com modelos de raciocínio (o1, o3, o4) ou quando precisar de suporte multimodal nativo para [arquivos](/pt-BR/concepts/files).
|
||||
</Tip>
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Meta-Llama">
|
||||
|
||||
Reference in New Issue
Block a user