Pular para o conteúdo principal

Visão Geral

O sistema de ferramentas do CrewAI foi projetado para ser extensível. Se você construiu uma ferramenta que pode beneficiar outros, pode empacotá-la como uma biblioteca Python independente, publicá-la no PyPI e disponibilizá-la para qualquer usuário do CrewAI — sem necessidade de PR para o repositório do CrewAI. Este guia percorre todo o processo: implementação do contrato de ferramentas, estruturação do pacote e publicação no PyPI.
Se você precisa apenas de uma ferramenta personalizada para seu próprio projeto, consulte o guia Criar Ferramentas Personalizadas.

O Contrato de Ferramentas

Toda ferramenta CrewAI deve satisfazer uma das duas interfaces:

Opção 1: Subclassificar BaseTool

Subclassifique crewai.tools.BaseTool e implemente o método _run. Defina name, description e, opcionalmente, um args_schema para validação de entrada.

Opção 2: Usar o Decorador @tool

Para ferramentas mais simples, o decorador @tool transforma uma função em uma ferramenta CrewAI. A função deve ter uma docstring (usada como descrição da ferramenta) e anotações de tipo.

Requisitos Essenciais

Independentemente da abordagem escolhida, sua ferramenta deve:
  • Ter um name — um identificador curto e descritivo.
  • Ter uma description — informa ao agente quando e como usar a ferramenta. Isso afeta diretamente a qualidade do uso da ferramenta pelo agente, então seja claro e específico.
  • Implementar _run (BaseTool) ou fornecer um corpo de função (@tool) — a lógica de execução síncrona.
  • Usar anotações de tipo em todos os parâmetros e valores de retorno.
  • Retornar um resultado em string (ou algo que possa ser convertido de forma significativa).

Opcional: Suporte Assíncrono

Se sua ferramenta realiza operações de I/O, implemente _arun para execução assíncrona:

Opcional: Validação de Entrada com args_schema

Defina um modelo Pydantic como seu args_schema para obter validação automática de entrada e mensagens de erro claras. Se não fornecer um, o CrewAI irá inferi-lo da assinatura do seu método _run.
Esquemas explícitos são recomendados para ferramentas publicadas — produzem melhor comportamento do agente e documentação mais clara para seus usuários.

Opcional: Variáveis de Ambiente

Se sua ferramenta requer chaves de API ou outra configuração, declare-as com env_vars para que os usuários saibam o que configurar:

Estrutura do Pacote

Estruture seu projeto como um pacote Python padrão. Layout recomendado:

pyproject.toml

Declare crewai como dependência para que os usuários obtenham automaticamente uma versão compatível.

__init__.py

Re-exporte suas classes de ferramenta para que os usuários possam importá-las diretamente:

Convenções de Nomenclatura

  • Nome do pacote: Use o prefixo crewai- (ex.: crewai-geolocate). Isso torna sua ferramenta fácil de encontrar no PyPI.
  • Nome do módulo: Use underscores (ex.: crewai_geolocate).
  • Nome da classe da ferramenta: Use PascalCase terminando em Tool (ex.: GeolocateTool).

Testando sua Ferramenta

Antes de publicar, verifique se sua ferramenta funciona dentro de uma crew:

Publicando no PyPI

Quando sua ferramenta estiver testada e pronta:
Se é sua primeira vez publicando, você precisará de uma conta no PyPI e um token de API.

Após a Publicação

Os usuários podem instalar sua ferramenta com:
Ou com uv:
E então usá-la em suas crews: