CodeInterpreterTool
Descrição
OCodeInterpreterTool
permite que agentes CrewAI executem códigos Python 3 gerados autonomamente. Essa funcionalidade é particularmente valiosa, pois permite que os agentes criem códigos, os executem, obtenham os resultados e usem essas informações para orientar decisões e ações subsequentes.
Há diversas formas de usar esta ferramenta:
Container Docker (Recomendado)
Esta é a opção principal. O código é executado em um container Docker seguro e isolado, garantindo a segurança independentemente de seu conteúdo. Certifique-se de que o Docker esteja instalado e em funcionamento em seu sistema. Se ainda não tiver, você pode instalá-lo a partir deste link.Ambiente Sandbox
Se o Docker não estiver disponível — seja por não estar instalado ou inacessível por qualquer motivo — o código será executado em um ambiente Python restrito, chamado de sandbox. Esse ambiente é bastante limitado, com restrições severas a vários módulos e funções embutidas.Execução Não Segura
NÃO RECOMENDADO PARA PRODUÇÃO Este modo permite a execução de qualquer código Python, inclusive chamadas perigosas para os módulossys, os..
e semelhantes. Veja aqui como habilitar este modo.
Registro de Logs
OCodeInterpreterTool
registra a estratégia de execução selecionada no STDOUT.
Instalação
Para utilizar esta ferramenta, você precisa instalar o pacote de ferramentas CrewAI:Exemplo
O exemplo a seguir demonstra como usar oCodeInterpreterTool
com um agente CrewAI:
Code
Code
Habilitando o unsafe_mode
Code
Parâmetros
OCodeInterpreterTool
aceita os seguintes parâmetros durante a inicialização:
- user_dockerfile_path: Opcional. Caminho para um Dockerfile personalizado a ser utilizado pelo container do interpretador de código.
- user_docker_base_url: Opcional. URL do daemon Docker que será usado para rodar o container.
- unsafe_mode: Opcional. Indica se o código será executado diretamente na máquina hospedeira ao invés de um container Docker ou sandbox. O padrão é
False
. Use com cautela! - default_image_tag: Opcional. Tag padrão da imagem Docker. O padrão é
code-interpreter:latest
- code: Obrigatório. O código Python 3 a ser executado.
- libraries_used: Opcional. Uma lista de bibliotecas usadas no código que precisam ser instaladas. O padrão é
[]
Exemplo de Integração com Agente
Aqui está um exemplo mais detalhado de como integrar oCodeInterpreterTool
com um agente CrewAI:
Code
Detalhes de Implementação
OCodeInterpreterTool
utiliza Docker para criar um ambiente seguro para execução de código:
Code
- Verifica se a imagem Docker existe ou a constrói, caso necessário
- Cria um container Docker com o diretório de trabalho atual montado
- Instala quaisquer bibliotecas necessárias especificadas pelo agente
- Executa o código Python dentro do container
- Retorna a saída da execução do código
- Limpa o ambiente, parando e removendo o container
Considerações de Segurança
Por padrão, oCodeInterpreterTool
executa o código em um container Docker isolado, fornecendo uma camada de segurança. No entanto, ainda há algumas considerações importantes:
- O container Docker tem acesso ao diretório de trabalho atual, então arquivos sensíveis podem ser potencialmente acessados.
- Caso o container Docker não esteja disponível e o código precise ser executado de forma segura, ele será executado em um ambiente sandbox. Por motivos de segurança, a instalação de bibliotecas arbitrárias não é permitida
- O parâmetro
unsafe_mode
permite que códigos sejam executados diretamente na máquina hospedeira, o que deve ser usado apenas em ambientes confiáveis. - Tenha cautela ao permitir que agentes instalem bibliotecas arbitrárias, pois estas podem incluir códigos maliciosos.
Conclusão
OCodeInterpreterTool
oferece uma maneira poderosa para que agentes CrewAI executem código Python em um ambiente relativamente seguro. Permitindo que agentes escrevam e executem códigos, ele amplia significativamente sua capacidade de resolução de problemas, especialmente para tarefas que envolvem análise de dados, cálculos ou outros trabalhos computacionais. Esta ferramenta é especialmente útil para agentes que precisam realizar operações complexas que são mais eficientemente expressas em código do que em linguagem natural.