Tool-Verwendung unterstützt jetzt feinkörniges Streaming für Parameterwerte. Dies ermöglicht es Entwicklern, Tool-Use-Parameter ohne Pufferung / JSON-Validierung zu streamen, wodurch die Latenz für den Empfang großer Parameter reduziert wird.

Feinkörniges Tool-Streaming ist eine Beta-Funktion. Bitte stellen Sie sicher, dass Sie Ihre Antworten bewerten, bevor Sie sie in der Produktion verwenden.

Bitte verwenden Sie dieses Formular, um Feedback zur Qualität der Modellantworten, der API selbst oder der Qualität der Dokumentation zu geben—wir können es kaum erwarten, von Ihnen zu hören!

Bei der Verwendung von feinkörnigem Tool-Streaming können Sie möglicherweise ungültige oder unvollständige JSON-Eingaben erhalten. Bitte stellen Sie sicher, dass Sie diese Grenzfälle in Ihrem Code berücksichtigen.

Wie man feinkörniges Tool-Streaming verwendet

Um diese Beta-Funktion zu verwenden, fügen Sie einfach den Beta-Header fine-grained-tool-streaming-2025-05-14 zu einer Tool-Use-Anfrage hinzu und aktivieren Sie das Streaming.

Hier ist ein Beispiel, wie man feinkörniges Tool-Streaming mit der API verwendet:

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'

In diesem Beispiel ermöglicht feinkörniges Tool-Streaming Claude, die Zeilen eines langen Gedichts in den Tool-Aufruf make_file zu streamen, ohne zu puffern, um zu validieren, ob der Parameter lines_of_text gültiges JSON ist. Das bedeutet, Sie können den Parameter-Stream sehen, während er ankommt, ohne warten zu müssen, bis der gesamte Parameter gepuffert und validiert ist.

Mit feinkörnigem Tool-Streaming beginnen Tool-Use-Chunks schneller zu streamen und sind oft länger und enthalten weniger Wortumbrüche. Dies liegt an Unterschieden im Chunking-Verhalten.

Beispiel:

Ohne feinkörniges Streaming (15s Verzögerung):

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

Mit feinkörnigem Streaming (3s Verzögerung):

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

Da feinkörniges Streaming Parameter ohne Pufferung oder JSON-Validierung sendet, gibt es keine Garantie, dass der resultierende Stream in einem gültigen JSON-String abgeschlossen wird. Insbesondere, wenn der Stopp-Grund max_tokens erreicht wird, kann der Stream mitten in einem Parameter enden und unvollständig sein. Sie müssen im Allgemeinen spezifische Unterstützung schreiben, um zu handhaben, wenn max_tokens erreicht wird.

Umgang mit ungültigem JSON in Tool-Antworten

Bei der Verwendung von feinkörnigem Tool-Streaming können Sie ungültiges oder unvollständiges JSON vom Modell erhalten. Wenn Sie dieses ungültige JSON in einem Fehlerantwort-Block an das Modell zurückgeben müssen, können Sie es in ein JSON-Objekt einschließen, um eine ordnungsgemäße Behandlung zu gewährleisten (mit einem vernünftigen Schlüssel). Zum Beispiel:

{
  "INVALID_JSON": "<your invalid json string>"
}

Dieser Ansatz hilft dem Modell zu verstehen, dass der Inhalt ungültiges JSON ist, während die ursprünglichen fehlerhaften Daten für Debugging-Zwecke erhalten bleiben.

Beim Einschließen von ungültigem JSON stellen Sie sicher, dass Sie alle Anführungszeichen oder Sonderzeichen in der ungültigen JSON-Zeichenkette ordnungsgemäß maskieren, um eine gültige JSON-Struktur im Wrapper-Objekt aufrechtzuerhalten.