feat: adopt directory-based docs versioning with Edge channel

Switch docs.crewai.com from navigation-only versioning (every version
selector entry rendered the same docs/<lang>/* source files) to
Mintlify's directory-based versioning so each version selector entry
renders its own snapshot. Add an "Edge" channel under docs/edge/<lang>/*
that always reflects main HEAD for unreleased work, eliminating
pre-release leakage onto frozen release labels. External links to
canonical /<lang>/* URLs are preserved via wildcard redirects that
always land on the current default version.

Layout:
- docs/edge/<lang>/*         rolling source (you edit here)
- docs/edge/enterprise-api.*.yaml
- docs/v<X.Y.Z>/<lang>/*     frozen, immutable snapshots
- docs/v<X.Y.Z>/enterprise-api.*.yaml
- docs/images/               shared, append-only
- docs/docs.json             nav + redirects

URLs follow the Mintlify-idiomatic shape: /edge/<lang>/<page> for
Edge, /v<X.Y.Z>/<lang>/<page> for every frozen snapshot. The wildcard
redirects /<lang>/:slug* -> /<default>/<lang>/:slug* keep stale links
working, and every freeze rewrites them (plus all per-section/per-page
redirects) so destinations always resolve to the current default
without depending on a second redirect hop.

Release flow integration (devtools release):
- New module crewai_devtools.docs_versioning.freeze() materialises
  docs/v<X.Y.Z>/ from docs/edge/, rewrites openapi: refs inside the
  snapshot, inserts the version into every language block in
  docs.json, and refreshes all redirect destinations.
- _update_docs_and_create_pr() in cli.py now calls that freeze during
  Phase 2 of devtools release. Edge changelogs are updated first (so
  the snapshot freeze picks them up), then the snapshot is staged
  alongside docs.json, branched as docs/freeze-v<X.Y.Z>, and the PR
  is titled [docs-freeze] docs: snapshot and changelog for v<X.Y.Z>
  — the title prefix the new CI guard reads.
- The PR still gates tag, GitHub release, PyPI publish, and the
  enterprise release as before; no new PRs are added.
- Pre-releases (1.X.YaN, 1.X.YbN, ...) skip the snapshot — they ride
  Edge — and the docs PR title omits the [docs-freeze] prefix.
- docs_check (AI-generated docs scaffolding) writes to
  docs/edge/<lang>/* so newly-generated unreleased docs land in Edge
  and never accidentally touch a frozen snapshot.

Migration scripts (one-shot):
- scripts/docs/freeze_historical_versions.py reconstructs all 16
  historical snapshots (v1.10.0 .. v1.14.7) from git tags via
  git archive | tar, rewriting openapi: MDX refs so each snapshot
  reads its own enterprise-api YAML rather than the live one.
- scripts/docs/prefix_version_paths.py one-shot-migrates docs.json:
  rewrites every page path in 16 versioned blocks to point under
  docs/v<X.Y.Z>/, inserts a new Edge entry per language, tags
  v1.14.7 as Latest (default), prunes pages whose target file
  doesn't exist in the snapshot (e.g. docs/ar/ didn't exist before
  v1.12.0), and writes the wildcard + per-section redirects.
- scripts/docs/freeze_current_edge.py is now a thin CLI wrapper
  around docs_versioning.freeze for manual one-off freezes (e.g.
  retroactively snapshotting a forgotten release).

CI guards (.github/workflows/docs-snapshots.yml):
- Frozen snapshots under docs/v[0-9]*/ are immutable; only PRs whose
  title contains [docs-freeze] (i.e. release-cut PRs generated by
  devtools release or the manual wrapper) may modify them.
- Images under docs/images/ are append-only since snapshots share a
  single image directory. Deleting or renaming an image breaks every
  historical snapshot that still references it.

Restored docs/images/crewai-otel-export.png from PR #3673; it was
deleted in PR #4908 but v1.10.0 / v1.10.1 snapshots still reference
it. Restoring instead of editing the snapshots preserves historical
rendering fidelity and validates the new append-only rule
retroactively.

Tests:
- lib/devtools/tests/test_docs_versioning.py covers the freeze: file
  copy, openapi rewrite, version insertion, default demotion, redirect
  upserts, per-section redirect rewriting, idempotency, and invalid
  inputs.

Verified locally with mintlify broken-links: 0 broken links across
the full site (Edge + 16 frozen versions, 4 locales).

AGENTS.md (repo root) is the contributor guide for the new model;
RELEASING.md is the release-cut runbook; README's Contribution
section links to both.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Lucas Gomide
2026-06-17 09:33:56 -03:00
parent 7bb9bc7e1a
commit 93dafe2637
15793 changed files with 3237032 additions and 16873 deletions

View File

@@ -0,0 +1,94 @@
---
title: Busca RAG em CSV
description: O `CSVSearchTool` é uma poderosa ferramenta RAG (Geração com Recuperação Aprimorada) projetada para buscas semânticas no conteúdo de arquivos CSV.
icon: file-csv
mode: "wide"
---
# `CSVSearchTool`
<Note>
**Experimental**: Ainda estamos trabalhando na melhoria das ferramentas, portanto podem ocorrer comportamentos inesperados ou mudanças futuras.
</Note>
## Descrição
Esta ferramenta é utilizada para realizar buscas RAG (Geração com Recuperação Aprimorada) no conteúdo de um arquivo CSV. Ela permite que usuários façam buscas semânticas por consultas no conteúdo de um arquivo CSV especificado.
Este recurso é particularmente útil para extrair informações de grandes datasets CSV, em que métodos de busca tradicionais poderiam ser ineficientes. Todas as ferramentas com "Search" no nome, incluindo o CSVSearchTool,
são ferramentas RAG projetadas para busca em diferentes fontes de dados.
## Instalação
Instale o pacote crewai_tools
```shell
pip install 'crewai[tools]'
```
## Exemplo
```python Code
from crewai_tools import CSVSearchTool
# Inicialize a ferramenta com um arquivo CSV específico.
# Esta configuração permite que o agente busque somente no arquivo CSV fornecido.
tool = CSVSearchTool(csv='path/to/your/csvfile.csv')
# OU
# Inicialize a ferramenta sem um arquivo CSV específico.
# O agente precisará informar o caminho do CSV em tempo de execução.
tool = CSVSearchTool()
```
## Argumentos
Os seguintes parâmetros podem ser utilizados para personalizar o comportamento do `CSVSearchTool`:
| Argumento | Tipo | Descrição |
|:---------------|:----------|:----------------------------------------------------------------------------------------------------------------------------------|
| **csv** | `string` | _Opcional_. O caminho para o arquivo CSV que você deseja buscar. Este é um argumento obrigatório se a ferramenta for inicializada sem um arquivo CSV específico; caso contrário, é opcional. |
## Modelo e embeddings personalizados
Por padrão, a ferramenta utiliza OpenAI tanto para embeddings quanto para sumarização. Para personalizar o modelo, você pode usar um dicionário de configuração como segue:
```python Code
tool = CSVSearchTool(
config=dict(
llm=dict(
provider="ollama", # ou google, openai, anthropic, llama2, ...
config=dict(
model="llama2",
# temperature=0.5,
# top_p=1,
# stream=true,
),
),
embedder=dict(
provider="google", # ou openai, ollama, ...
config=dict(
model="models/embedding-001",
task_type="retrieval_document",
# title="Embeddings",
),
),
)
)
## Segurança
### Validação de Caminhos
Os caminhos de arquivo fornecidos a esta ferramenta são validados em relação ao diretório de trabalho atual. Caminhos que resolvem fora do diretório de trabalho são rejeitados com um `ValueError`.
Para permitir caminhos fora do diretório de trabalho (por exemplo, em testes ou pipelines confiáveis), defina a variável de ambiente:
```shell
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true
```
### Validação de URLs
Entradas de URL também são validadas: URIs `file://` e requisições direcionadas a faixas de IP privadas ou reservadas são bloqueadas para prevenir ataques de falsificação de requisições do lado do servidor (SSRF).
```

View File

@@ -0,0 +1,54 @@
---
title: Leitura de Diretório
description: O `DirectoryReadTool` é uma poderosa utilidade projetada para fornecer uma listagem abrangente do conteúdo de diretórios.
icon: folder-tree
mode: "wide"
---
# `DirectoryReadTool`
<Note>
Ainda estamos trabalhando para melhorar as ferramentas, então pode haver comportamentos inesperados ou alterações no futuro.
</Note>
## Descrição
O DirectoryReadTool é uma poderosa utilidade projetada para fornecer uma listagem abrangente do conteúdo de diretórios.
Ele pode navegar recursivamente pelo diretório especificado, oferecendo aos usuários uma enumeração detalhada de todos os arquivos, incluindo aqueles que estão dentro de subdiretórios.
Essa ferramenta é fundamental para tarefas que exigem um inventário completo das estruturas de diretórios ou para validar a organização de arquivos em diretórios.
## Instalação
Para utilizar o DirectoryReadTool em seu projeto, instale o pacote `crewai_tools`. Se este pacote ainda não faz parte do seu ambiente, você pode instalá-lo usando o pip com o comando abaixo:
```shell
pip install 'crewai[tools]'
```
Esse comando instala a versão mais recente do pacote `crewai_tools`, permitindo o acesso ao DirectoryReadTool, entre outras utilidades.
## Exemplo
Empregar o DirectoryReadTool é simples. O snippet de código a seguir demonstra como configurá-lo e usar a ferramenta para listar o conteúdo de um diretório especificado:
```python Code
from crewai_tools import DirectoryReadTool
# Initialize the tool so the agent can read any directory's content
# it learns about during execution
tool = DirectoryReadTool()
# OR
# Initialize the tool with a specific directory,
# so the agent can only read the content of the specified directory
tool = DirectoryReadTool(directory='/path/to/your/directory')
```
## Argumentos
Os seguintes parâmetros podem ser usados para personalizar o comportamento do `DirectoryReadTool`:
| Argumento | Tipo | Descrição |
|:---------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------|
| **directory** | `string` | _Opcional_. Um argumento que especifica o caminho para o diretório cujo conteúdo você deseja listar. Aceita caminhos absolutos e relativos, direcionando a ferramenta para o diretório desejado para a listagem do conteúdo. |

View File

@@ -0,0 +1,82 @@
---
title: Busca RAG em Diretório
description: O `DirectorySearchTool` é uma poderosa ferramenta RAG (Retrieval-Augmented Generation) desenvolvida para buscas semânticas no conteúdo de um diretório.
icon: address-book
mode: "wide"
---
# `DirectorySearchTool`
<Note>
**Experimental**: O DirectorySearchTool está em desenvolvimento contínuo. As funcionalidades e recursos podem evoluir, e comportamentos inesperados podem ocorrer enquanto aprimoramos a ferramenta.
</Note>
## Descrição
O DirectorySearchTool permite a busca semântica dentro do conteúdo de diretórios especificados, aproveitando a metodologia de Recuperação com Geração Aumentada (RAG) para uma navegação eficiente entre arquivos. Projetada para flexibilidade, a ferramenta possibilita que usuários especifiquem dinamicamente os diretórios de busca em tempo de execução ou definam um diretório fixo durante a configuração inicial.
## Instalação
Para utilizar o DirectorySearchTool, comece instalando o pacote crewai_tools. Execute o seguinte comando no seu terminal:
```shell
pip install 'crewai[tools]'
```
## Inicialização e Uso
Importe o DirectorySearchTool do pacote `crewai_tools` para começar. Você pode inicializar a ferramenta sem especificar um diretório, permitindo definir o diretório de busca em tempo de execução. Alternativamente, a ferramenta pode ser inicializada já com um diretório predefinido.
```python Code
from crewai_tools import DirectorySearchTool
# Para especificação dinâmica de diretório em tempo de execução
tool = DirectorySearchTool()
# Para buscas em diretório fixo
tool = DirectorySearchTool(directory='/path/to/directory')
```
## Argumentos
- `directory`: Um argumento do tipo string que especifica o diretório de busca. Este parâmetro é opcional durante a inicialização, mas obrigatório para buscas caso não tenha sido definido inicialmente.
## Modelo Personalizado e Embeddings
O DirectorySearchTool utiliza OpenAI para embeddings e sumarização por padrão. As opções de personalização dessas configurações incluem a alteração do provedor de modelo e configurações, ampliando a flexibilidade para usuários avançados.
```python Code
from chromadb.config import Settings
tool = DirectorySearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # ou "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```
## Segurança
### Validação de Caminhos
Os caminhos de diretório fornecidos a esta ferramenta são validados em relação ao diretório de trabalho atual. Caminhos que resolvem fora do diretório de trabalho são rejeitados com um `ValueError`.
Para permitir caminhos fora do diretório de trabalho (por exemplo, em testes ou pipelines confiáveis), defina a variável de ambiente:
```shell
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true
```

View File

@@ -0,0 +1,80 @@
---
title: Pesquisa RAG em DOCX
description: A `DOCXSearchTool` é uma ferramenta RAG projetada para busca semântica em documentos DOCX.
icon: file-word
mode: "wide"
---
# `DOCXSearchTool`
<Note>
Ainda estamos trabalhando na melhoria das ferramentas, portanto pode haver comportamentos inesperados ou alterações no futuro.
</Note>
## Descrição
A `DOCXSearchTool` é uma ferramenta RAG desenvolvida para buscas semânticas dentro de documentos DOCX.
Ela permite que os usuários pesquisem e extraiam informações relevantes de arquivos DOCX de forma eficiente, utilizando buscas baseadas em consultas.
Esta ferramenta é inestimável para análise de dados, gestão da informação e tarefas de pesquisa,
otimizando o processo de encontrar informações específicas em grandes coleções de documentos.
## Instalação
Instale o pacote crewai_tools executando o seguinte comando no seu terminal:
```shell
uv pip install docx2txt 'crewai[tools]'
```
## Exemplo
O exemplo a seguir demonstra a inicialização da DOCXSearchTool para buscar dentro do conteúdo de qualquer arquivo DOCX ou com o caminho de um arquivo DOCX específico.
```python Code
from crewai_tools import DOCXSearchTool
# Inicialize a ferramenta para buscar dentro do conteúdo de qualquer arquivo DOCX
tool = DOCXSearchTool()
# OU
# Inicialize a ferramenta com um arquivo DOCX específico,
# assim o agente só poderá buscar dentro do conteúdo do arquivo DOCX especificado
tool = DOCXSearchTool(docx='path/to/your/document.docx')
```
## Argumentos
Os seguintes parâmetros podem ser usados para customizar o comportamento da `DOCXSearchTool`:
| Argumento | Tipo | Descrição |
|:---------------|:----------|:------------------------------------------------------------------------------------------------------------------------------------|
| **docx** | `string` | _Opcional_. Um argumento que especifica o caminho para o arquivo DOCX que você deseja pesquisar. Se não for fornecido durante a inicialização, a ferramenta permite a especificação posterior do caminho de qualquer arquivo DOCX para busca. |
## Modelo e embeddings personalizados
Por padrão, a ferramenta utiliza o OpenAI tanto para embeddings quanto para sumarização. Para customizar o modelo, você pode usar um dicionário de configuração como no exemplo:
```python Code
from chromadb.config import Settings
tool = DOCXSearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # ou "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```

View File

@@ -0,0 +1,45 @@
---
title: Leitura de Arquivo
description: O `FileReadTool` foi desenvolvido para ler arquivos do sistema de arquivos local.
icon: folders
mode: "wide"
---
## Visão Geral
<Note>
Ainda estamos trabalhando para melhorar as ferramentas, portanto pode haver comportamentos inesperados ou alterações no futuro.
</Note>
O FileReadTool representa conceitualmente um conjunto de funcionalidades dentro do pacote crewai_tools voltadas para facilitar a leitura e a recuperação de conteúdo de arquivos.
Esse conjunto inclui ferramentas para processar arquivos de texto em lote, ler arquivos de configuração em tempo de execução e importar dados para análise.
Ele suporta uma variedade de formatos de arquivo baseados em texto, como `.txt`, `.csv`, `.json` e outros. Dependendo do tipo de arquivo, o conjunto oferece funcionalidades especializadas,
como converter conteúdo JSON em um dicionário Python para facilitar o uso.
## Instalação
Para utilizar as funcionalidades anteriormente atribuídas ao FileReadTool, instale o pacote crewai_tools:
```shell
pip install 'crewai[tools]'
```
## Exemplo de Uso
Para começar a usar o FileReadTool:
```python Code
from crewai_tools import FileReadTool
# Inicialize a ferramenta para ler quaisquer arquivos que os agentes conhecem ou informe o caminho para
file_read_tool = FileReadTool()
# OU
# Inicialize a ferramenta com um caminho de arquivo específico, assim o agente poderá ler apenas o conteúdo do arquivo especificado
file_read_tool = FileReadTool(file_path='path/to/your/file.txt')
```
## Argumentos
- `file_path`: O caminho para o arquivo que você deseja ler. Aceita caminhos absolutos e relativos. Certifique-se de que o arquivo exista e de que você tenha as permissões necessárias para acessá-lo.

View File

@@ -0,0 +1,51 @@
---
title: Escrita de Arquivo
description: O `FileWriterTool` foi projetado para escrever conteúdo em arquivos.
icon: file-pen
mode: "wide"
---
# `FileWriterTool`
## Descrição
O `FileWriterTool` é um componente do pacote crewai_tools, projetado para simplificar o processo de escrita de conteúdo em arquivos com compatibilidade multiplataforma (Windows, Linux, macOS).
É particularmente útil em cenários como geração de relatórios, salvamento de logs, criação de arquivos de configuração e mais.
Essa ferramenta lida com diferenças de caminhos entre sistemas operacionais, suporta codificação UTF-8 e cria diretórios automaticamente caso eles não existam, facilitando a organização da sua saída de forma confiável em diferentes plataformas.
## Instalação
Instale o pacote crewai_tools para utilizar o `FileWriterTool` em seus projetos:
```shell
pip install 'crewai[tools]'
```
## Exemplo
Para começar a usar o `FileWriterTool`:
```python Code
from crewai_tools import FileWriterTool
# Inicialize a ferramenta
file_writer_tool = FileWriterTool()
# Escreva conteúdo em um arquivo em um diretório especificado
result = file_writer_tool._run('example.txt', 'This is a test content.', 'test_directory')
print(result)
```
## Argumentos
- `filename`: O nome do arquivo que você deseja criar ou sobrescrever.
- `content`: O conteúdo a ser escrito no arquivo.
- `directory` (opcional): O caminho para o diretório onde o arquivo será criado. Por padrão, utiliza o diretório atual (`.`). Se o diretório não existir, ele será criado.
## Conclusão
Ao integrar o `FileWriterTool` aos seus crews, os agentes podem escrever conteúdo em arquivos de forma confiável em diferentes sistemas operacionais.
Esta ferramenta é essencial para tarefas que exigem salvamento de dados de saída, criação de sistemas de arquivos estruturados e manipulação de operações de arquivos multiplataforma.
É especialmente recomendada para usuários do Windows que possam enfrentar problemas ao escrever arquivos com as operações padrão do Python.
Seguindo as orientações de configuração e uso fornecidas, incorporar essa ferramenta em projetos é simples e garante um comportamento consistente de escrita de arquivos em todas as plataformas.

View File

@@ -0,0 +1,92 @@
---
title: Busca JSON RAG
description: O `JSONSearchTool` foi projetado para buscar arquivos JSON e retornar os resultados mais relevantes.
icon: file-code
mode: "wide"
---
# `JSONSearchTool`
<Note>
O JSONSearchTool está atualmente em fase experimental. Isso significa que a ferramenta
está em desenvolvimento ativo, e os usuários podem encontrar comportamentos inesperados ou
alterações. Incentivamos fortemente o envio de feedback sobre quaisquer problemas ou sugestões de
melhorias.
</Note>
## Descrição
O JSONSearchTool foi projetado para facilitar buscas eficientes e precisas dentro do conteúdo de arquivos JSON. Ele utiliza um mecanismo de busca RAG (Retrieve and Generate), permitindo que os usuários especifiquem um caminho JSON para buscas direcionadas dentro de um arquivo JSON específico. Essa capacidade melhora significativamente a precisão e relevância dos resultados de busca.
## Instalação
Para instalar o JSONSearchTool, utilize o seguinte comando pip:
```shell
pip install 'crewai[tools]'
```
## Exemplos de Uso
Aqui estão exemplos atualizados de como utilizar o JSONSearchTool de forma eficaz para buscar dentro de arquivos JSON. Esses exemplos consideram a implementação e padrões de uso atuais identificados na base de código.
```python Code
from crewai_tools import JSONSearchTool
# Busca geral em conteúdo JSON
# Esta abordagem é adequada quando o caminho JSON já é conhecido ou pode ser identificado dinamicamente.
tool = JSONSearchTool()
# Restringindo a busca a um arquivo JSON específico
# Use este método de inicialização quando desejar limitar o escopo de busca a um arquivo específico.
tool = JSONSearchTool(json_path='./path/to/your/file.json')
```
## Argumentos
- `json_path` (str, opcional): Especifica o caminho para o arquivo JSON a ser buscado. Este argumento não é obrigatório se a ferramenta for inicializada para uma busca geral. Quando fornecido, limita a busca ao arquivo JSON especificado.
## Opções de Configuração
O JSONSearchTool oferece ampla personalização através de um dicionário de configuração. Isso permite que os usuários selecionem diferentes modelos para embeddings e sumarização conforme suas necessidades.
```python Code
tool = JSONSearchTool(
config={
"llm": {
"provider": "ollama", # Outras opções incluem google, openai, anthropic, llama2, etc.
"config": {
"model": "llama2",
# Configurações opcionais adicionais podem ser especificadas aqui.
# temperature=0.5,
# top_p=1,
# stream=true,
},
},
"embedding_model": {
"provider": "google", # ou openai, ollama, ...
"config": {
"model": "models/embedding-001",
"task_type": "retrieval_document",
# Mais opções de personalização podem ser adicionadas aqui.
},
},
}
)
## Segurança
### Validação de Caminhos
Os caminhos de arquivo fornecidos a esta ferramenta são validados em relação ao diretório de trabalho atual. Caminhos que resolvem fora do diretório de trabalho são rejeitados com um `ValueError`.
Para permitir caminhos fora do diretório de trabalho (por exemplo, em testes ou pipelines confiáveis), defina a variável de ambiente:
```shell
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true
```
### Validação de URLs
Entradas de URL também são validadas: URIs `file://` e requisições direcionadas a faixas de IP privadas ou reservadas são bloqueadas para prevenir ataques de falsificação de requisições do lado do servidor (SSRF).
```

View File

@@ -0,0 +1,72 @@
---
title: Pesquisa MDX RAG
description: O `MDXSearchTool` foi projetado para pesquisar arquivos MDX e retornar os resultados mais relevantes.
icon: markdown
mode: "wide"
---
# `MDXSearchTool`
<Note>
O MDXSearchTool está em desenvolvimento contínuo. Recursos podem ser adicionados ou removidos, e a funcionalidade pode mudar de forma imprevisível à medida que refinamos a ferramenta.
</Note>
## Descrição
A Ferramenta de Pesquisa MDX é um componente do pacote `crewai_tools` focado em facilitar a extração avançada de dados do markdown. Ela permite que usuários pesquisem e extraiam informações relevantes de arquivos MD utilizando buscas baseadas em consulta. Esta ferramenta é indispensável para análise de dados, gestão de informações e tarefas de pesquisa, agilizando o processo de encontrar informações específicas em grandes coleções de documentos.
## Instalação
Antes de utilizar a Ferramenta de Pesquisa MDX, certifique-se de que o pacote `crewai_tools` está instalado. Caso não esteja, você pode instalá-lo com o comando abaixo:
```shell
pip install 'crewai[tools]'
```
## Exemplo de Uso
Para utilizar a Ferramenta de Pesquisa MDX, primeiro defina as variáveis de ambiente necessárias. Em seguida, integre a ferramenta ao seu projeto crewAI para começar sua pesquisa de mercado. Veja abaixo um exemplo básico de como fazer isso:
```python Code
from crewai_tools import MDXSearchTool
# Inicialize a ferramenta para pesquisar qualquer conteúdo MDX que ela conheça durante a execução
tool = MDXSearchTool()
# OU
# Inicialize a ferramenta com um caminho específico para o arquivo MDX, realizando buscas exclusivamente neste documento
tool = MDXSearchTool(mdx='path/to/your/document.mdx')
```
## Parâmetros
- mdx: **Opcional**. Especifica o caminho do arquivo MDX para pesquisa. Pode ser informado durante a inicialização.
## Personalização do Modelo e Embeddings
A ferramenta utiliza, por padrão, o OpenAI para embeddings e sumarização. Para personalizar, utilize um dicionário de configuração conforme exemplo abaixo:
```python Code
from chromadb.config import Settings
tool = MDXSearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # ou "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```

View File

@@ -0,0 +1,88 @@
---
title: OCR Tool
description: The `OCRTool` extracts text from local images or image URLs using an LLM with vision.
icon: image
mode: "wide"
---
# `OCRTool`
## Description
Extract text from images (local path or URL). Uses a visioncapable LLM via CrewAIs LLM interface.
## Installation
No extra install beyond `crewai-tools`. Ensure your selected LLM supports vision.
## Parameters
### Run Parameters
- `image_path_url` (str, required): Local image path or HTTP(S) URL.
## Examples
### Direct usage
```python Code
from crewai_tools import OCRTool
print(OCRTool().run(image_path_url="/tmp/receipt.png"))
```
### With an agent
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import OCRTool
ocr = OCRTool()
agent = Agent(
role="OCR",
goal="Extract text",
tools=[ocr],
)
task = Task(
description="Extract text from https://example.com/invoice.jpg",
expected_output="All detected text in plain text",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```
## Notes
- Ensure the selected LLM supports image inputs.
- For large images, consider downscaling to reduce token usage.
- You can pass a specific LLM instance to the tool (e.g., `LLM(model="gpt-4o")`) if needed, matching the README guidance.
## Example
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import OCRTool
tool = OCRTool()
agent = Agent(
role="OCR Specialist",
goal="Extract text from images",
backstory="Visionenabled analyst",
tools=[tool],
verbose=True,
)
task = Task(
description="Extract text from https://example.com/receipt.png",
expected_output="All detected text in plain text",
agent=agent,
)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
```

View File

@@ -0,0 +1,89 @@
---
title: "Visão Geral"
description: "Leia, escreva e pesquise em diversos formatos de arquivos com as ferramentas de processamento de documentos do CrewAI"
icon: "face-smile"
mode: "wide"
---
Estas ferramentas permitem que seus agentes trabalhem com diversos formatos e tipos de documentos. De leitura de PDFs ao processamento de dados em JSON, essas ferramentas atendem a todas as suas necessidades de processamento de documentos.
## **Ferramentas Disponíveis**
<CardGroup cols={2}>
<Card title="Ferramenta de Leitura de Arquivos" icon="folders" href="/pt-BR/tools/file-document/filereadtool">
Leia conteúdo de qualquer tipo de arquivo, incluindo texto, markdown e mais.
</Card>
<Card title="Ferramenta de Escrita de Arquivos" icon="file-pen" href="/pt-BR/tools/file-document/filewritetool">
Escreva conteúdo em arquivos, crie novos documentos e salve dados processados.
</Card>
<Card title="Ferramenta de Pesquisa em PDF" icon="file-pdf" href="/pt-BR/tools/file-document/pdfsearchtool">
Pesquise e extraia conteúdo de texto de documentos PDF de forma eficiente.
</Card>
<Card title="Ferramenta de Pesquisa em DOCX" icon="file-word" href="/pt-BR/tools/file-document/docxsearchtool">
Pesquise em documentos do Microsoft Word e extraia conteúdo relevante.
</Card>
<Card title="Ferramenta de Pesquisa em JSON" icon="brackets-curly" href="/pt-BR/tools/file-document/jsonsearchtool">
Faça a análise e pesquisa em arquivos JSON com recursos avançados de consulta.
</Card>
<Card title="Ferramenta de Pesquisa em CSV" icon="table" href="/pt-BR/tools/file-document/csvsearchtool">
Processe e pesquise em arquivos CSV, extraia linhas e colunas específicas.
</Card>
<Card title="Ferramenta de Pesquisa em XML" icon="code" href="/pt-BR/tools/file-document/xmlsearchtool">
Analise arquivos XML e pesquise elementos e atributos específicos.
</Card>
<Card title="Ferramenta de Pesquisa em MDX" icon="markdown" href="/pt-BR/tools/file-document/mdxsearchtool">
Pesquise em arquivos MDX e extraia conteúdo de documentações.
</Card>
<Card title="Ferramenta de Pesquisa em TXT" icon="file-lines" href="/pt-BR/tools/file-document/txtsearchtool">
Pesquise em arquivos de texto simples com recursos de busca por padrões.
</Card>
<Card title="Ferramenta de Pesquisa em Diretório" icon="folder-open" href="/pt-BR/tools/file-document/directorysearchtool">
Pesquise arquivos e pastas dentro de estruturas de diretórios.
</Card>
<Card title="Ferramenta de Leitura de Diretório" icon="folder" href="/pt-BR/tools/file-document/directoryreadtool">
Leia e liste conteúdos de diretórios, estruturas de arquivos e metadados.
</Card>
</CardGroup>
## **Casos de Uso Comuns**
- **Processamento de Documentos**: Extraia e analise conteúdo de vários formatos de arquivos
- **Importação de Dados**: Leia dados estruturados de arquivos CSV, JSON e XML
- **Busca por Conteúdo**: Encontre informações específicas em grandes coleções de documentos
- **Gerenciamento de Arquivos**: Organize e manipule arquivos e diretórios
- **Exportação de Dados**: Salve os resultados processados em vários formatos de arquivo
## **Exemplo Rápido de Início**
```python
from crewai_tools import FileReadTool, PDFSearchTool, JSONSearchTool
# Create tools
file_reader = FileReadTool()
pdf_searcher = PDFSearchTool()
json_processor = JSONSearchTool()
# Add to your agent
agent = Agent(
role="Document Analyst",
tools=[file_reader, pdf_searcher, json_processor],
goal="Process and analyze various document types"
)
```
## **Dicas para Processamento de Documentos**
- **Permissões de Arquivo**: Certifique-se de que seu agente possui as permissões adequadas de leitura/escrita
- **Arquivos Grandes**: Considere dividir documentos muito grandes em partes menores
- **Suporte de Formatos**: Consulte a documentação da ferramenta para saber quais formatos de arquivos são suportados
- **Tratamento de Erros**: Implemente tratamento de erros adequado para arquivos corrompidos ou inacessíveis

View File

@@ -0,0 +1,75 @@
---
title: PDF Text Writing Tool
description: The `PDFTextWritingTool` writes text to specific positions in a PDF, supporting custom fonts.
icon: file-pdf
mode: "wide"
---
# `PDFTextWritingTool`
## Description
Write text at precise coordinates on a PDF page, optionally embedding a custom TrueType font.
## Parameters
### Run Parameters
- `pdf_path` (str, required): Path to the input PDF.
- `text` (str, required): Text to add.
- `position` (tuple[int, int], required): `(x, y)` coordinates.
- `font_size` (int, default `12`)
- `font_color` (str, default `"0 0 0 rg"`)
- `font_name` (str, default `"F1"`)
- `font_file` (str, optional): Path to `.ttf` file.
- `page_number` (int, default `0`)
## Example
```python Code
from crewai import Agent, Task, Crew
from crewai_tools import PDFTextWritingTool
tool = PDFTextWritingTool()
agent = Agent(
role="PDF Editor",
goal="Annotate PDFs",
backstory="Documentation specialist",
tools=[tool],
verbose=True,
)
task = Task(
description="Write 'CONFIDENTIAL' at (72, 720) on page 1 of ./sample.pdf",
expected_output="Confirmation message",
agent=agent,
)
crew = Crew(
agents=[agent],
tasks=[task],
verbose=True,
)
result = crew.kickoff()
```
### Direct usage
```python Code
from crewai_tools import PDFTextWritingTool
PDFTextWritingTool().run(
pdf_path="./input.pdf",
text="CONFIDENTIAL",
position=(72, 720),
font_size=18,
page_number=0,
)
```
## Tips
- Coordinate origin is the bottomleft corner.
- If using a custom font (`font_file`), ensure it is a valid `.ttf`.

View File

@@ -0,0 +1,120 @@
---
title: Busca RAG em PDF
description: O `PDFSearchTool` é projetado para pesquisar arquivos PDF e retornar os resultados mais relevantes.
icon: file-pdf
mode: "wide"
---
# `PDFSearchTool`
<Note>
Ainda estamos trabalhando para melhorar as ferramentas, então pode haver comportamentos inesperados ou mudanças futuras.
</Note>
## Descrição
O PDFSearchTool é uma ferramenta RAG projetada para buscas semânticas dentro do conteúdo de PDFs. Ela permite inserir uma consulta de busca e um documento PDF, aproveitando técnicas avançadas de busca para encontrar conteúdos relevantes de forma eficiente.
Essa capacidade a torna especialmente útil para extrair informações específicas de arquivos PDF grandes rapidamente.
## Instalação
Para começar a usar o PDFSearchTool, primeiro, garanta que o pacote crewai_tools está instalado com o seguinte comando:
```shell
pip install 'crewai[tools]'
```
## Exemplo
Veja como utilizar o PDFSearchTool para buscar dentro de um documento PDF:
```python Code
from crewai_tools import PDFSearchTool
# Inicialize a ferramenta permitindo buscas em qualquer conteúdo PDF caso o caminho seja informado durante a execução
tool = PDFSearchTool()
# OU
# Inicialize a ferramenta com um caminho PDF específico para buscas exclusivas naquele documento
tool = PDFSearchTool(pdf='path/to/your/document.pdf')
```
## Argumentos
- `pdf`: **Opcional** O caminho do PDF para busca. Pode ser fornecido na inicialização ou nos argumentos do método `run`. Caso seja fornecido na inicialização, a ferramenta confinará suas buscas ao documento especificado.
## Modelo e embeddings personalizados
Por padrão, a ferramenta utiliza OpenAI para embeddings e sumarização. Para personalizar, use um dicionário de configuração conforme abaixo. Observação: um banco vetorial (vectordb) é necessário, pois os embeddings gerados precisam ser armazenados e consultados.
```python Code
from crewai_tools import PDFSearchTool
from chromadb.config import Settings # Persistência no Chroma
tool = PDFSearchTool(
config={
# Obrigatório: provedor de embeddings + configuração
"embedding_model": {
# Provedores suportados: "openai", "azure", "google-generativeai", "google-vertex",
# "voyageai", "cohere", "huggingface", "jina", "sentence-transformer",
# "text2vec", "ollama", "openclip", "instructor", "onnx", "roboflow", "watsonx", "custom"
"provider": "openai",
"config": {
# "model" é mapeado internamente para "model_name".
"model": "text-embedding-3-small",
# Opcional: chave da API (se ausente, usa variáveis de ambiente do provedor)
# "api_key": "sk-...",
# Exemplos específicos por provedor
# --- Google ---
# (defina provider="google-generativeai")
# "model": "models/embedding-001",
# "task_type": "retrieval_document",
# --- Cohere ---
# (defina provider="cohere")
# "model": "embed-english-v3.0",
# --- Ollama (local) ---
# (defina provider="ollama")
# "model": "nomic-embed-text",
},
},
# Obrigatório: configuração do banco vetorial
"vectordb": {
"provider": "chromadb", # ou "qdrant"
"config": {
# Exemplo Chroma:
# "settings": Settings(
# persist_directory="/content/chroma",
# allow_reset=True,
# is_persistent=True,
# ),
# Exemplo Qdrant:
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
# Observação: o nome da coleção é controlado pela ferramenta (padrão: "rag_tool_collection").
}
},
}
)
```
## Segurança
### Validação de Caminhos
Os caminhos de arquivo fornecidos a esta ferramenta são validados em relação ao diretório de trabalho atual. Caminhos que resolvem fora do diretório de trabalho são rejeitados com um `ValueError`.
Para permitir caminhos fora do diretório de trabalho (por exemplo, em testes ou pipelines confiáveis), defina a variável de ambiente:
```shell
CREWAI_TOOLS_ALLOW_UNSAFE_PATHS=true
```
### Validação de URLs
Entradas de URL também são validadas: URIs `file://` e requisições direcionadas a faixas de IP privadas ou reservadas são bloqueadas para prevenir ataques de falsificação de requisições do lado do servidor (SSRF).

View File

@@ -0,0 +1,95 @@
---
title: Pesquisa TXT RAG
description: O `TXTSearchTool` foi projetado para realizar uma busca RAG (Geração Aumentada por Recuperação) dentro do conteúdo de um arquivo de texto.
icon: file-lines
mode: "wide"
---
## Visão Geral
<Note>
Ainda estamos trabalhando para melhorar as ferramentas, por isso pode haver comportamentos inesperados ou mudanças no futuro.
</Note>
Esta ferramenta é utilizada para realizar uma busca RAG (Geração Aumentada por Recuperação) dentro do conteúdo de um arquivo de texto.
Ela permite uma busca semântica de uma consulta dentro do conteúdo de um arquivo de texto especificado,
tornando-se um recurso valioso para extrair rapidamente informações ou encontrar seções específicas do texto com base na consulta fornecida.
## Instalação
Para usar o `TXTSearchTool`, primeiro é necessário instalar o pacote `crewai_tools`.
Isso pode ser feito usando o pip, um gerenciador de pacotes para Python.
Abra seu terminal ou prompt de comando e digite o seguinte comando:
```shell
pip install 'crewai[tools]'
```
Este comando fará o download e instalará o TXTSearchTool junto com todas as dependências necessárias.
## Exemplo
O exemplo a seguir demonstra como usar o TXTSearchTool para pesquisar dentro de um arquivo de texto.
Este exemplo mostra tanto a inicialização da ferramenta com um arquivo de texto específico quanto a pesquisa subsequente dentro do conteúdo desse arquivo.
```python Code
from crewai_tools import TXTSearchTool
# Inicialize a ferramenta para pesquisar no conteúdo de qualquer arquivo de texto
# que o agente aprender durante sua execução
tool = TXTSearchTool()
# OU
# Inicialize a ferramenta com um arquivo de texto específico,
# para que o agente possa pesquisar dentro do conteúdo desse arquivo de texto
tool = TXTSearchTool(txt='path/to/text/file.txt')
```
## Argumentos
- `txt` (str): **Opcional**. O caminho para o arquivo de texto que você deseja pesquisar.
Este argumento só é necessário se a ferramenta não foi inicializada com um arquivo de texto específico;
caso contrário, a pesquisa será realizada no arquivo de texto fornecido inicialmente.
## Modelo e embeddings personalizados
Por padrão, a ferramenta utiliza o OpenAI tanto para embeddings quanto para sumarização.
Para personalizar o modelo, você pode usar um dicionário de configuração como o exemplo a seguir:
```python Code
from chromadb.config import Settings
tool = TXTSearchTool(
config={
# Obrigatório: provedor de embeddings + configuração
"embedding_model": {
"provider": "openai", # ou google-generativeai, cohere, ollama, ...
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...", # opcional se variável de ambiente estiver definida
# Exemplos por provedor:
# Google → model: "models/embedding-001", task_type: "retrieval_document"
},
},
# Obrigatório: configuração do banco vetorial
"vectordb": {
"provider": "chromadb", # ou "qdrant"
"config": {
# Configurações do Chroma (persistência opcional)
# "settings": Settings(
# persist_directory="/content/chroma",
# allow_reset=True,
# is_persistent=True,
# ),
# Exemplo de parâmetros de vetor do Qdrant:
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
# Observação: o nome da coleção é controlado pela ferramenta (padrão: "rag_tool_collection").
}
},
}
)
```

View File

@@ -0,0 +1,78 @@
---
title: Busca RAG em XML
description: O `XMLSearchTool` foi projetado para realizar uma busca RAG (Geração Aumentada por Recuperação) dentro do conteúdo de um arquivo XML.
icon: file-xml
mode: "wide"
---
# `XMLSearchTool`
<Note>
Ainda estamos trabalhando na melhoria das ferramentas, então pode haver comportamentos inesperados ou mudanças no futuro.
</Note>
## Descrição
O XMLSearchTool é uma ferramenta RAG de ponta, desenvolvida para realizar buscas semânticas em arquivos XML.
Ideal para usuários que precisam analisar e extrair informações do conteúdo XML de forma eficiente, esta ferramenta permite inserir uma consulta de busca e um caminho opcional para o arquivo XML.
Ao especificar um caminho de arquivo XML, o usuário pode direcionar sua busca de forma mais precisa ao conteúdo daquele arquivo, obtendo assim resultados mais relevantes.
## Instalação
Para começar a usar o XMLSearchTool, é necessário instalar primeiro o pacote crewai_tools. Isso pode ser feito facilmente com o seguinte comando:
```shell
pip install 'crewai[tools]'
```
## Exemplo
Aqui estão dois exemplos demonstrando como usar o XMLSearchTool.
O primeiro exemplo mostra a busca dentro de um arquivo XML específico, enquanto o segundo exemplo ilustra como iniciar uma busca sem definir previamente um caminho XML, oferecendo flexibilidade no escopo da busca.
```python Code
from crewai_tools import XMLSearchTool
# Permite que agentes busquem no conteúdo de qualquer arquivo XML
# conforme aprendem seus caminhos durante a execução
tool = XMLSearchTool()
# OU
# Inicializa a ferramenta com um caminho específico para arquivo XML
# para busca exclusiva dentro desse documento
tool = XMLSearchTool(xml='path/to/your/xmlfile.xml')
```
## Argumentos
- `xml`: Este é o caminho para o arquivo XML que você deseja buscar.
Este parâmetro é opcional durante a inicialização da ferramenta, mas deve ser fornecido ou na inicialização ou como parte dos argumentos do método `run` para executar a busca.
## Modelo customizado e embeddings
Por padrão, a ferramenta utiliza a OpenAI tanto para embeddings quanto para sumarização. Para personalizar o modelo, você pode usar um dicionário de configuração conforme o exemplo a seguir:
```python Code
from chromadb.config import Settings
tool = XMLSearchTool(
config={
"embedding_model": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
# "api_key": "sk-...",
},
},
"vectordb": {
"provider": "chromadb", # ou "qdrant"
"config": {
# "settings": Settings(persist_directory="/content/chroma", allow_reset=True, is_persistent=True),
# from qdrant_client.models import VectorParams, Distance
# "vectors_config": VectorParams(size=384, distance=Distance.COSINE),
}
},
}
)
```