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.
Opcional: Variáveis de Ambiente
Se sua ferramenta requer chaves de API ou outra configuração, declare-as comenv_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
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).
