✓ PASS

litellm 1.105.5

usage.stream-final-chunk · anthropic

Back to results · Scenario

Requirements

IdLevelStatusEvidence
usage-reportedMUSTSATISFIEDusage.input=25 (primary); truth.usage.input=25; usage.output=12 (primary); truth.usage.output=12

What the provider sent

Finish
stop
Raw finish
end_turn
Text
Air scatters blue light more strongly.
Tool calls
[]
Usage
{
  "alternatives": {},
  "cached_input": null,
  "input": 25,
  "output": 12,
  "raw": {
    "input_tokens": 25,
    "output_tokens": 12
  },
  "reasoning": null,
  "total": 37
}
Stream completed
true
Error
null
Wire excerpt
status: 200
content-type: text/event-stream
body (sse):
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01Aq9w938a90dw8q", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-5-5", "stop_reason": null, "stop_sequence": null, "usage": {"input_tokens": 25, "output_tokens": 1}}}


event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}


event: ping
data: {"type": "ping"}


event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "Air "}}


event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "scatters blue light more strongly."}}


event: content_block_stop
data: {"type": "content_block_stop", "index": 0}


event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12}}


event: message_stop
data: {"type": "message_stop"}

What the library reported

Outcome
returned
Finish
{
  "raw": "stop",
  "source": "choices[0].finish_reason",
  "surface": "primary",
  "value": "stop"
}
Text
Value
Air scatters blue light more strongly.
Surface
primary
Tool calls
[]
Usage
{
  "cached_input": 0,
  "input": 25,
  "output": 12,
  "reasoning": 0,
  "surface": {
    "cached_input": "primary",
    "input": "primary",
    "output": "primary",
    "reasoning": "primary",
    "total": "primary"
  },
  "total": 37
}
Stream
{
  "chunks_seen": 4,
  "completed": null,
  "used": true
}
Error
null
Unsupported reason
null
Full observation JSON
{
  "elapsed_ms": 361.7961881682277,
  "error": null,
  "finish": {
    "raw": "stop",
    "source": "choices[0].finish_reason",
    "surface": "primary",
    "value": "stop"
  },
  "format": "wiretruth.observation/v1",
  "library": {
    "api": "litellm.completion",
    "language": "python",
    "name": "litellm",
    "version": "1.105.5"
  },
  "notes": [],
  "outcome": "returned",
  "stream": {
    "chunks_seen": 4,
    "completed": null,
    "used": true
  },
  "structured": {
    "attempted": false,
    "returned_as_success": false,
    "value": null
  },
  "text": {
    "surface": "primary",
    "value": "Air scatters blue light more strongly."
  },
  "tool_calls": [],
  "unsupported_reason": null,
  "usage": {
    "cached_input": 0,
    "input": 25,
    "output": 12,
    "reasoning": 0,
    "surface": {
      "cached_input": "primary",
      "input": "primary",
      "output": "primary",
      "reasoning": "primary",
      "total": "primary"
    },
    "total": 37
  }
}

Fixture

documented anthropic/usage.stream-final-chunk

ProvenanceValue
Sourcehttps://platform.claude.com/docs/en/build-with-claude/streaming#basic-streaming-request
NotesDocumented shapes, not a recording. Message envelope and stop fields follow handling-stop-reasons; content blocks follow thinking/streaming and handle-tool-calls. Model changed to claude-sonnet-5-5; IDs and scenario text are filled in. Token counts are illustrative, filled in to include thinking within the requested output limit, not measured. Based on the basic Hello stream, changing model and text to the scenario. Initial usage has input_tokens 25 and output_tokens 1; final cumulative output_tokens is filled in as 12. Adaptive thinking is assumed skipped; no cache fields were present in the base example. SSE names, JSON shapes, field order and spaced text/thinking events follow streaming examples; the compact message_delta follows Streaming request with tool use. Fragment boundaries and counts are filled in. Signature placeholder is copied literally from the signature_delta example; empty thinking_delta follows the documented omitted display flow.

Reproduce

wiretruth serve anthropic/usage.stream-final-chunk

Plain-library snippet from the shim manifest.

litellm.completion(model='anthropic/' + model, api_base=WIRETRUTH_BASE_URL_ANTHROPIC, api_key=WIRETRUTH_API_KEY); host root, LiteLLM appends /v1/messages

Upstream

No matching upstream report.

History

VersionGrade
1.105.5✓ PASS
1.105.1✓ PASS