O uso de ferramentas agora suporta streaming refinado para valores de parâmetros. Isso permite que desenvolvedores transmitam parâmetros de uso de ferramentas sem buffering / validação JSON, reduzindo a latência para começar a receber parâmetros grandes.

O streaming de ferramentas refinado é um recurso beta. Certifique-se de avaliar suas respostas antes de usá-lo em produção.

Use este formulário para fornecer feedback sobre a qualidade das respostas do modelo, a própria API ou a qualidade da documentação—mal podemos esperar para ouvir de você!

Ao usar streaming de ferramentas refinado, você pode potencialmente receber entradas JSON inválidas ou parciais. Certifique-se de considerar esses casos extremos em seu código.

Como usar streaming de ferramentas refinado

Para usar este recurso beta, simplesmente adicione o cabeçalho beta fine-grained-tool-streaming-2025-05-14 a uma solicitação de uso de ferramenta e ative o streaming.

Aqui está um exemplo de como usar streaming de ferramentas refinado com a API:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: fine-grained-tool-streaming-2025-05-14" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 65536,
    "tools": [
      {
        "name": "make_file",
        "description": "Write text to a file",
        "input_schema": {
          "type": "object",
          "properties": {
            "filename": {
              "type": "string",
              "description": "The filename to write text to"
            },
            "lines_of_text": {
              "type": "array",
              "description": "An array of lines of text to write to the file"
            }
          },
          "required": ["filename", "lines_of_text"]
        }
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "Can you write a long poem and make a file called poem.txt?"
      }
    ],
    "stream": true
  }' | jq '.usage'

Neste exemplo, o streaming de ferramentas refinado permite que Claude transmita as linhas de um poema longo para a chamada de ferramenta make_file sem buffering para validar se o parâmetro lines_of_text é JSON válido. Isso significa que você pode ver o parâmetro sendo transmitido conforme chega, sem ter que esperar que todo o parâmetro seja armazenado em buffer e validado.

Com streaming de ferramentas refinado, os chunks de uso de ferramentas começam a transmitir mais rapidamente e são frequentemente mais longos e contêm menos quebras de palavras. Isso se deve a diferenças no comportamento de chunking.

Exemplo:

Sem streaming refinado (atraso de 15s):

Chunk 1: '{"'
Chunk 2: 'query": "Ty'
Chunk 3: 'peScri'
Chunk 4: 'pt 5.0 5.1 '
Chunk 5: '5.2 5'
Chunk 6: '.3'
Chunk 8: ' new f'
Chunk 9: 'eatur'
...

Com streaming refinado (atraso de 3s):

Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3'
Chunk 2: ' new features comparison'

Como o streaming refinado envia parâmetros sem buffering ou validação JSON, não há garantia de que o stream resultante será completado em uma string JSON válida. Particularmente, se o motivo de parada max_tokens for atingido, o stream pode terminar no meio de um parâmetro e pode estar incompleto. Você geralmente terá que escrever suporte específico para lidar com quando max_tokens for atingido.