Aprenda como trazer seus próprios agentes que funcionam dentro de uma Crew.
def configure_tools
def configure_structured_output
BaseAgentAdapter
. Esse adaptador atua como uma camada de compatibilidade, traduzindo entre as interfaces do CrewAI e os requisitos específicos do seu agente externo.
Veja como implementar seu adaptador customizado:
BaseAgentAdapter
:
__init__
:
O construtor deve chamar o construtor da classe pai super().__init__(**kwargs)
e executar qualquer inicialização específica do seu agente externo. Você pode usar o dicionário opcional agent_config
passado durante a inicialização do Agent
do CrewAI para configurar seu adaptador e o agente subjacente.
configure_tools
:
Este método abstrato é crucial. Ele recebe uma lista de instâncias de BaseTool
do CrewAI. Sua implementação deve converter ou adaptar essas ferramentas para o formato esperado pelo seu framework de agente externo. Isso pode envolver encapsulamento, extração de atributos específicos ou registro delas na instância do agente externo.
configure_structured_output
:
Esse método é chamado quando o Agent
do CrewAI é configurado com requisitos de saída estruturada (por exemplo, output_json
ou output_pydantic
). Seu adaptador precisa garantir que o agente externo esteja configurado para cumprir esses requisitos. Isso pode envolver definir parâmetros específicos no agente externo ou garantir que seu modelo subjacente suporte o formato solicitado. Se o agente externo não suportar saída estruturada de forma compatível com as expectativas do CrewAI, talvez seja necessário lidar com a conversão ou lançar um erro apropriado.
MyCustomAgentAdapter
permitirá que sua implementação personalizada de agente funcione corretamente dentro de uma crew do CrewAI, interagindo com tarefas e ferramentas de forma transparente. Lembre-se de substituir os comentários e prints de exemplo pela sua lógica real de adaptação específica do framework externo que está integrando.
BaseToolAdapter
é responsável por converter os objetos nativos BaseTool
do CrewAI em um formato que o seu framework de agente externo possa entender e utilizar. Diferentes frameworks de agentes (como LangGraph, OpenAI Assistants, etc.) possuem suas próprias formas de definir e tratar ferramentas, e o BaseToolAdapter
age como tradutor.
Veja como implementar seu adaptador de ferramentas personalizado:
BaseToolAdapter
:
configure_tools
:
Este é o método abstrato principal que você deve implementar. Ele recebe uma lista de instâncias de BaseTool
fornecidas ao agente. Sua tarefa é iterar por essa lista, adaptar cada BaseTool
para o formato esperado pelo seu framework externo e armazenar as ferramentas convertidas na lista self.converted_tools
(inicializada no construtor da classe base).
MyCustomToolAdapter
dentro do método configure_tools
do seu MyCustomAgentAdapter
e o usaria para processar as ferramentas antes de configurar o agente externo.
BaseToolAdapter
, você desacopla a lógica de conversão de ferramenta da adaptação de agente, tornando a integração mais limpa e modular. Lembre-se de substituir os exemplos de placeholder pela lógica de conversão real exigida pelo seu framework externo específico.
BaseConverterAdapter
desempenha um papel crucial quando uma Task
do CrewAI exige que um agente retorne sua saída final em um formato estruturado específico, como JSON ou um modelo Pydantic. Ele faz a ponte entre os requisitos de saída estruturada do CrewAI e as capacidades do seu agente externo.
Suas responsabilidades principais são:
Task
(output_json
ou output_pydantic
), ele instrui o BaseAgentAdapter
associado (e indiretamente, o agente externo) sobre qual formato é esperado.BaseConverterAdapter
:
__init__
:
O construtor deve aceitar a instância correspondente de agent_adapter
com a qual irá trabalhar.
configure_structured_output
:
Esse método recebe o objeto Task
do CrewAI. Você precisa checar os atributos output_json
e output_pydantic
da task para determinar a estrutura de saída exigida. Armazene essa informação (por exemplo, em _output_type
e _output_schema
) e, potencialmente, chame métodos de configuração no seu self.agent_adapter
se o agente externo necessitar de um ajuste específico para saída estruturada (algo que pode já ter sido parcialmente feito no configure_structured_output
do adaptador de agente).
enhance_system_prompt
:
Este método recebe o prompt base do sistema do agente e deve anexar instruções adaptadas para o _output_type
e _output_schema
atualmente configurados. O objetivo é guiar o LLM que alimenta o agente a produzir saída no formato correto.
post_process_result
:
Esse método recebe a saída em string bruta do agente. Se uma saída estruturada foi solicitada (json
ou pydantic
), você deve tentar convertê-la para o formato esperado. Trate erros de parsing caso ocorram (por exemplo, registre-os, tente corrigir, ou lance uma exceção). O método deve sempre retornar uma string, mesmo se o formato intermediário seja um dicionário ou objeto Pydantic (por exemplo, serializando novamente para JSON).
MyCustomConverterAdapter
assegurará que as solicitações de saída estruturada das tarefas do CrewAI sejam corretamente tratadas pelo seu agente externo integrado, aumentando a confiabilidade e a usabilidade do seu agente customizado dentro do framework CrewAI.