Explorando o Sinal de Agência Oculta (Â) de LLMs para Melhor Chamada de Ferramentas

Durante a depuração de falhas do agente ReAct com o Qwen3, um desenvolvedor descobriu que os estados ocultos imediatamente antes das chamadas de ferramentas são linearmente separáveis dos estados sem ferramentas com AUC > 0,94. Essa direção no espaço latente, chamada  (de "agência"), existe em todos os tamanhos de modelo, de 1,7B a 8B, e prevê chamadas de ferramentas usando apenas uma sonda linear.
Como Usar o Sinal de Agência
Durante a inferência, projete cada estado oculto em Â. Se a projeção exceder um limite θ, o modelo quer chamar uma ferramenta mesmo que não a expresse textualmente. Você pode então forçar uma chamada de ferramenta.
# No momento da inferência (pseudo-código)
hidden_state = get_middle_layer_state(model, input_text)
proj = np.dot(hidden_state, Â)
if proj > threshold:
# Modelo quer agir → forçar chamada de ferramenta
tool = choose_tool() # pode ser aprendido ou heurístico
result = execute_tool(tool)
else:
# Geração normal
output = model.generate(input_text)
Resultados de Desempenho
Testado em 40 tarefas diversas (busca, código, arquivo, comunicação, dados) com modelos Qwen3:
- Qwen3-1.7B: 26,7% → 85% (+58% de ganho)
- Qwen3-8B: 52,5% → 76,3% (+23% de ganho)
O modo de falha "sem ferramenta" caiu de 43% para 2,6%. Modelos menores se beneficiam mais porque sua decodificação textual é mais fraca, mas o sinal geométrico é igualmente forte.
Como Extrair Â
Três métodos:
- Opção 1: A partir de seus próprios rastros - Calcule a diferença média normalizada entre estados ocultos com e sem ferramenta
- Opção 2: Via prompts contrastivos - Execute 15 pares de prompts (um exigindo uma ferramenta, outro passivo) através do seu modelo e tome a diferença média na camada intermediária
- Opção 3: Use direções pré-computadas - Use as direções  extraídas para modelos Qwen3 compartilhadas no repositório
Implementação Empacotada
A descoberta foi empacotada em uma biblioteca para fácil reutilização:
bash
pip install a-hat-optimizer
python
from a_hat_optimizer import AHat
# Extração automática de qualquer modelo HF em 1 linha
ahat = AHat.from_model("Qwen/Qwen3-8B")
# Ou carregue pré-extraído
ahat = AHat.from_file("my_ahat_dir/")
# Use no seu agente
should_call, confidence = ahat.predict(hidden_state)
if should_call:
print(f"Forçar chamada de ferramenta (confiança: {confidence:.2f})")
A biblioteca lida com extração automática via prompts contrastivos, 4 estratégias de calibração (ponto médio, F1, Youden, percentil), previsão em lote e salvar/carregar com metadados incluindo AUC e informações da camada.
📖 Leia a fonte completa: r/LocalLLaMA
👀 See Also
GLiGuard: Modelo de Moderação de Segurança de Código Aberto com 300 Milhões de Parâmetros Alega Aceleração de 16x sobre Barreiras de LLM
Fastino Labs lança GLiGuard, um modelo baseado em encoder de 300 milhões de parâmetros que realiza múltiplas tarefas de segurança em uma única passagem, superando ou igualando modelos 23 a 90 vezes maiores enquanto é até 16 vezes mais rápido.

ZuckerBot Servidor MCP Permite que Agentes OpenClaw Executem Campanhas de Anúncios Meta
ZuckerBot é um servidor MCP que dá aos agentes OpenClaw controle direto sobre os Meta Ads, permitindo que executem ciclos completos de campanhas sem intervenção humana. Mais de 50 agentes únicos já estão ativos usando-o para extrair anúncios de concorrentes, gerar segmentação, lançar campanhas e ajustar o desempenho em código.

Vellium adiciona animais de estimação de desktop e agentes inspirados em CLI para LLMs locais
Vellium, um aplicativo multiplataforma de código aberto para LLMs locais, agora oferece suporte a animais de estimação virtuais que flutuam sobre janelas e agentes com integração MCP, comandos de terminal e edição de arquivos.

Sponsio: Barreiras Determinísticas para OpenClaw — Bloqueando Chamadas de Ferramentas 'Legais, mas Erradas'
Ferramenta open-source que atua na fronteira das ferramentas, avaliando cada chamada com contratos de lógica temporal (~0,14ms p50). Impede que agentes editem arquivos fora do diretório de trabalho, façam force-push ou executem migrações no banco errado.