Pular para o conteúdo principal
Os Hooks de Chamada LLM fornecem controle fino sobre interações com modelos de linguagem durante a execução do agente. Esses hooks permitem interceptar chamadas LLM, modificar prompts, transformar respostas, implementar gates de aprovação e adicionar logging ou monitoramento personalizado.

Visão Geral

Os hooks LLM são executados em dois pontos críticos:
  • Antes da Chamada LLM: Modificar mensagens, validar entradas ou bloquear execução
  • Depois da Chamada LLM: Transformar respostas, sanitizar saídas ou modificar histórico de conversação

Tipos de Hook

Hooks Antes da Chamada LLM

Executados antes de cada chamada LLM, esses hooks podem:
  • Inspecionar e modificar mensagens enviadas ao LLM
  • Bloquear execução LLM com base em condições
  • Implementar limitação de taxa ou gates de aprovação
  • Adicionar contexto ou mensagens do sistema
  • Registrar detalhes da requisição
Assinatura:

Hooks Depois da Chamada LLM

Executados depois de cada chamada LLM, esses hooks podem:
  • Modificar ou sanitizar respostas do LLM
  • Adicionar metadados ou formatação
  • Registrar detalhes da resposta
  • Atualizar histórico de conversação
  • Implementar filtragem de conteúdo
Assinatura:

Contexto do Hook LLM

O objeto LLMCallHookContext fornece acesso abrangente ao estado de execução:

Modificando Mensagens

Importante: Sempre modifique mensagens in-place:

Métodos de Registro

1. Registro Baseado em Decoradores (Recomendado)

Use decoradores para sintaxe mais limpa:

2. Hooks com Escopo de Crew

Registre hooks para uma instância específica de crew:

Casos de Uso Comuns

1. Limitação de Iterações

2. Gate de Aprovação Humana

3. Adicionando Contexto do Sistema

4. Sanitização de Resposta

5. Rastreamento de Custos

6. Logging de Debug

Gerenciamento de Hooks

Desregistrando Hooks

Limpando Hooks

Padrões Avançados

Execução Condicional de Hook

Modificações com Consciência de Contexto

Melhores Práticas

  1. Mantenha Hooks Focados: Cada hook deve ter uma responsabilidade única
  2. Evite Computação Pesada: Hooks executam em cada chamada LLM
  3. Trate Erros Graciosamente: Use try-except para prevenir falhas de hooks
  4. Use Type Hints: Aproveite LLMCallHookContext para melhor suporte IDE
  5. Documente Comportamento do Hook: Especialmente para condições de bloqueio
  6. Teste Hooks Independentemente: Teste unitário de hooks antes de usar em produção
  7. Limpe Hooks em Testes: Use clear_all_llm_call_hooks() entre execuções de teste
  8. Modifique In-Place: Sempre modifique context.messages in-place, nunca substitua

Tratamento de Erros

Segurança de Tipos

Solução de Problemas

Hook Não Está Executando

  • Verifique se o hook está registrado antes da execução da crew
  • Verifique se hook anterior retornou False (bloqueia hooks subsequentes)
  • Garanta que assinatura do hook corresponda ao tipo esperado

Modificações de Mensagem Não Persistem

  • Use modificações in-place: context.messages.append()
  • Não substitua a lista: context.messages = []

Modificações de Resposta Não Funcionam

  • Retorne a string modificada dos hooks posteriores
  • Retornar None mantém a resposta original

Conclusão

Os Hooks de Chamada LLM fornecem capacidades poderosas para controlar e monitorar interações com modelos de linguagem no CrewAI. Use-os para implementar guardrails de segurança, gates de aprovação, logging, rastreamento de custos e sanitização de respostas. Combinados com tratamento adequado de erros e segurança de tipos, os hooks permitem sistemas de agentes robustos e prontos para produção.