fix(anthropic): record finish_reasons for empty-content streams#4372
fix(anthropic): record finish_reasons for empty-content streams#4372Solaris-star wants to merge 1 commit into
Conversation
message_delta only wrote stop_reason onto per-content-block events. When the stream had no content blocks, events stayed empty and set_streaming_response_attributes returned early, dropping gen_ai.response.finish_reasons. Store message-level stop_reason and use it as a fallback. Fixes traceloop#4362
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughAnthropic streaming accumulation now preserves message-level stop reasons. Span attribute generation accepts complete responses, records fallback finish reasons, and emits empty assistant messages for empty-content streams. Tests cover both behaviors. ChangesAnthropic streaming completion attributes
Estimated code review effort: 3 (Moderate) | ~20 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
|
Summary
Streamed Anthropic responses that end with a valid
stop_reasonbut an empty content array recorded neithergen_ai.response.finish_reasonsnorgen_ai.output.messages.Root cause
_process_response_itemonly copiedmessage_delta.stop_reasononto already-accumulated content-block events. With no content blocks,eventsstayed empty, soset_streaming_response_attributesearly-returned.Change
stop_reasononcomplete_responseduringmessage_deltacomplete_responseintoset_streaming_response_attributes(still accepts the legacy bare events list used by existing tests)stop_reasonoutput.messagesentryTest plan
test_streaming_empty_content_records_finish_reasontest_streaming_process_response_item_stores_message_stop_reasonFixes #4362
Summary by CodeRabbit