Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/anthropic/lib/streaming/_beta_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -559,5 +559,7 @@ def accumulate_event(
current_snapshot.usage.server_tool_use = event.usage.server_tool_use
if event.usage.iterations is not None:
current_snapshot.usage.iterations = event.usage.iterations
if event.usage.output_tokens_details is not None:
current_snapshot.usage.output_tokens_details = event.usage.output_tokens_details

return current_snapshot
2 changes: 2 additions & 0 deletions src/anthropic/lib/streaming/_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -516,5 +516,7 @@ def accumulate_event(
current_snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens
if event.usage.server_tool_use is not None:
current_snapshot.usage.server_tool_use = event.usage.server_tool_use
if event.usage.output_tokens_details is not None:
current_snapshot.usage.output_tokens_details = event.usage.output_tokens_details

return current_snapshot
2 changes: 1 addition & 1 deletion tests/lib/streaming/fixtures/refusal_response.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"refusal","stop_sequence":null,"stop_details":{"type":"refusal","category":"cyber","explanation":"This request was refused due to policy."}},"usage":{"output_tokens":0}}
data: {"type":"message_delta","delta":{"stop_reason":"refusal","stop_sequence":null,"stop_details":{"type":"refusal","category":"cyber","explanation":"This request was refused due to policy."}},"usage":{"output_tokens":120,"output_tokens_details":{"thinking_tokens":67}}}

event: message_stop
data: {"type":"message_stop"}
3 changes: 3 additions & 0 deletions tests/lib/streaming/test_beta_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,9 @@ def assert_refusal_response(message: BetaMessage) -> None:
assert message.stop_details.type == "refusal"
assert message.stop_details.category == "cyber"
assert message.stop_details.explanation == "This request was refused due to policy."
assert message.usage.output_tokens == 120
assert message.usage.output_tokens_details is not None
assert message.usage.output_tokens_details.thinking_tokens == 67


EXPECTED_FALLBACK_EVENT_TYPES = [
Expand Down
3 changes: 3 additions & 0 deletions tests/lib/streaming/test_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ def assert_refusal_response(message: Message) -> None:
assert message.stop_details.type == "refusal"
assert message.stop_details.category == "cyber"
assert message.stop_details.explanation == "This request was refused due to policy."
assert message.usage.output_tokens == 120
assert message.usage.output_tokens_details is not None
assert message.usage.output_tokens_details.thinking_tokens == 67


class TestSyncMessages:
Expand Down