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
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
Contexto do Hook LLM
O objetoLLMCallHookContext 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
- Mantenha Hooks Focados: Cada hook deve ter uma responsabilidade única
- Evite Computação Pesada: Hooks executam em cada chamada LLM
- Trate Erros Graciosamente: Use try-except para prevenir falhas de hooks
- Use Type Hints: Aproveite
LLMCallHookContextpara melhor suporte IDE - Documente Comportamento do Hook: Especialmente para condições de bloqueio
- Teste Hooks Independentemente: Teste unitário de hooks antes de usar em produção
- Limpe Hooks em Testes: Use
clear_all_llm_call_hooks()entre execuções de teste - Modifique In-Place: Sempre modifique
context.messagesin-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
Nonemantém a resposta original
