Tool use sekarang mendukung streaming berbutir halus untuk nilai parameter. Ini memungkinkan developer untuk streaming parameter tool use tanpa buffering / validasi JSON, mengurangi latensi untuk mulai menerima parameter besar.

Streaming tool berbutir halus adalah fitur beta. Pastikan untuk mengevaluasi respons Anda sebelum menggunakannya dalam produksi.

Silakan gunakan formulir ini untuk memberikan umpan balik tentang kualitas respons model, API itu sendiri, atau kualitas dokumentasi—kami tidak sabar mendengar dari Anda!

Saat menggunakan streaming tool berbutir halus, Anda mungkin berpotensi menerima input JSON yang tidak valid atau parsial. Pastikan untuk memperhitungkan kasus-kasus edge ini dalam kode Anda.

Cara menggunakan streaming tool berbutir halus

Untuk menggunakan fitur beta ini, cukup tambahkan header beta fine-grained-tool-streaming-2025-05-14 ke permintaan tool use dan aktifkan streaming.

Berikut adalah contoh cara menggunakan streaming tool berbutir halus dengan 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'

Dalam contoh ini, streaming tool berbutir halus memungkinkan Claude untuk streaming baris-baris puisi panjang ke dalam panggilan tool make_file tanpa buffering untuk memvalidasi apakah parameter lines_of_text adalah JSON yang valid. Ini berarti Anda dapat melihat parameter streaming saat tiba, tanpa harus menunggu seluruh parameter untuk buffer dan validasi.

Dengan streaming tool berbutir halus, chunk tool use mulai streaming lebih cepat, dan sering kali lebih panjang dan mengandung lebih sedikit jeda kata. Ini disebabkan oleh perbedaan dalam perilaku chunking.

Contoh:

Tanpa streaming berbutir halus (penundaan 15 detik):

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'
...

Dengan streaming berbutir halus (penundaan 3 detik):

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

Karena streaming berbutir halus mengirim parameter tanpa buffering atau validasi JSON, tidak ada jaminan bahwa stream yang dihasilkan akan selesai dalam string JSON yang valid. Khususnya, jika alasan berhenti max_tokens tercapai, stream mungkin berakhir di tengah parameter dan mungkin tidak lengkap. Anda umumnya harus menulis dukungan khusus untuk menangani ketika max_tokens tercapai.

Menangani JSON tidak valid dalam respons tool

Saat menggunakan streaming tool berbutir halus, Anda mungkin menerima JSON yang tidak valid atau tidak lengkap dari model. Jika Anda perlu mengirim JSON tidak valid ini kembali ke model dalam blok respons error, Anda dapat membungkusnya dalam objek JSON untuk memastikan penanganan yang tepat (dengan kunci yang masuk akal). Misalnya:

{
  "INVALID_JSON": "<string json tidak valid Anda>"
}

Pendekatan ini membantu model memahami bahwa konten adalah JSON tidak valid sambil mempertahankan data yang salah format asli untuk tujuan debugging.

Saat membungkus JSON tidak valid, pastikan untuk escape dengan benar tanda kutip atau karakter khusus dalam string JSON tidak valid untuk mempertahankan struktur JSON yang valid dalam objek pembungkus.