Pular para o conteúdo

Implementação de LLM Personalizada

O CrewAI oferece suporte a implementações personalizadas de LLM por meio da classe abstrata BaseLLM. Isso permite integrar qualquer provedor de LLM que não tenha suporte nativo no LiteLLM ou implementar mecanismos de autenticação personalizados.

Aqui está uma implementação mínima de LLM personalizada:

# (não traduzir blocos de código)
# (não traduzir blocos de código)

Crítico: Você deve chamar super().__init__(model, temperature) com os parâmetros necessários:

# (não traduzir blocos de código)

O método call() é o núcleo da sua implementação de LLM. Ele deve:

  • Aceitar mensagens (string ou lista de dicionários com ‘role’ e ‘content’)
  • Retornar uma resposta como string
  • Lidar com ferramentas e chamada de funções, se suportado
  • Lançar exceções apropriadas para erros
# (não traduzir blocos de código)
# (não traduzir blocos de código)
# (não traduzir blocos de código)

O CrewAI adiciona automaticamente "\nObservation:" como stop word para controlar o comportamento do agente. Se o seu LLM suporta stop words:

# (não traduzir blocos de código)

Se o seu LLM não suporta stop words nativamente:

# (não traduzir blocos de código)

Se o seu LLM suporta chamada de funções, implemente o fluxo completo:

# (não traduzir blocos de código)

Erros no Construtor

# ❌ Errado - parâmetros obrigatórios ausentes
def __init__(self, api_key: str):
super().__init__()
# ✅ Correto
def __init__(self, model: str, api_key: str, temperature: Optional[float] = None):
super().__init__(model=model, temperature=temperature)

Chamada de Funções Não Funciona

  • Certifique-se de que supports_function_calling() retorna True
  • Verifique se você lida com tool_calls na resposta
  • Assegure-se de que o parâmetro available_functions está sendo corretamente utilizado

Falhas de Autenticação

  • Verifique o formato e as permissões da chave de API
  • Confira o formato do header de autenticação
  • Certifique-se de que as URLs dos endpoints estão corretas

Erros de Parsing de Resposta

  • Valide a estrutura da resposta antes de acessar campos aninhados
  • Trate casos em que o content pode ser None
  • Adicione tratamento de erros para respostas malformadas
# (não traduzir blocos de código)

Este guia cobre o essencial para implementar LLMs personalizados no CrewAI.