Skip to content

Commit b2f5fa1

Browse files
committed
feat(openai-messages)!: emit invoke_agent, chat and execute_tool spans
One flat span named openai.response becomes the tree the TypeScript SDK emits: an invoke_agent root, one `chat {model}` child per model turn, one `execute_tool {name}` child per tool call. BREAKING CHANGE: the span this handler emits is renamed from `openai.response` and `openai.response.stream` to `invoke_agent`. Queries selecting on the old names will not match. Prompt and completion content is no longer on spans unless the caller passes capture_content=True. Cached tokens were absent entirely. OpenAI reports them under input_tokens_details.cached_tokens, which nothing here read, so every span understated what a prompt-cached call actually reused. They are now reported in gen_ai.usage.cache_read.input_tokens and, unlike Anthropic, not added on top of the input figure: OpenAI already counts them inside it, and adding them would double-count. Cache creation is always zero, because OpenAI has no such concept. This handler is the only one of the six that reports the model which actually answered rather than the one requested, on both the root and the chat spans. OpenAI resolves an alias like gpt-4o to a dated snapshot, and this handler has the resolved value to hand. Finish reasons are derived, not mapped. The Responses API has no finish_reason field, so the shared mapping table does not apply and is deliberately not imported. The value comes from a closed three-way check: a function call in the output means tool_calls, an incomplete status means length or content_filter depending on the reported cause, a completed status means stop, and anything else writes no attribute at all. The function-call check comes first because status alone reports completed for a turn that stopped to call a tool. The streaming path gets a finally, so a consumer that breaks out of the iteration no longer leaves the root span unended and unexported, taking the whole run out of AI Config Monitoring along with the feature_flag event it carries. Tests: 62 to 80.
1 parent 41575b5 commit b2f5fa1

3 files changed

Lines changed: 1392 additions & 420 deletions

File tree

0 commit comments

Comments
 (0)