Por que Tool Use Nativo?
| Aspecto | XML no Prompt | API Nativa |
|---|---|---|
| Precisao | Depende do modelo parsear XML | Estruturado pela API, sem ambiguidade |
| Tokens | XML consome tokens do context window | Campos separados, mais eficientes |
| Cache | Sem otimizacao | cache_control:ephemeral na Anthropic |
| Validacao | Manual | Automatica pela API do provedor |
| Compatibilidade | Qualquer provedor | OpenAI e Anthropic (outros continuam com XML) |
Arquitetura
Interface ToolAwareClient
A interfaceToolAwareClient estende a LLMClient base com suporte a ferramentas:
Deteccao Automatica
A deteccao e feita via type assertion, sem configuracao necessaria:Provedores que nao implementam
ToolAwareClient continuam funcionando normalmente via SendPrompt.Tipos de Dados
ToolDefinition
ToolDefinition
Define uma ferramenta disponivel para o modelo:
ToolCall e ToolResult
ToolCall e ToolResult
Representam uma chamada de ferramenta pelo modelo e seu resultado:
LLMResponse
LLMResponse
Resposta unificada que pode conter texto e/ou tool calls:
Implementacoes por Provedor
- OpenAI
- Anthropic (Claude)
Usa o campo
tools na API de Chat Completions:- Envia ferramentas como array de
toolscomtool_choice: "auto" - Processa
tool_callsemchoices[0].message - Mensagens
toolno historico vinculam resultado aotool_call_id
ContentBlock com Cache Control
Para Anthropic, o system prompt e dividido em blocos com controle de cache:Integracao com Fallback
A cadeia de fallback (llm/fallback) suporta SendPromptWithTools automaticamente. Provedores sem suporte a tool use nativo sao ignorados na cadeia de tool calls, mas continuam disponiveis para requests de texto simples.