New Features ✨
Anthropic
- Record finish reasons in AI monitoring spans by @ericapisani in #5678
- Emit
gen_ai.chatspans for asynchronousmessages.stream()by @alexander-alderman-webb in #5572 - Emit AI Client Spans for synchronous
messages.stream()by @alexander-alderman-webb in #5565 - Set gen_ai.response.id span attribute by @ericapisani in #5662
- Add
gen_ai.systemattribute to spans by @ericapisani in #5661
Pydantic Ai
- Support ImageUrl content type in span instrumentation by @ericapisani in #5629
- Add tool description to execute_tool spans by @ericapisani in #5596
Other
- (crons) Add owner field to MonitorConfig by @julwhitney13 in #5610
- (otlp) Add collector_url option to OTLPIntegration by @sl0thentr0py in #5603
Bug Fixes 🐛
- (ai) Truncate list-based message content in AI monitoring by @ericapisani in #5631
- (anthropic) Close span on
GeneratorExitby @alexander-alderman-webb in #5643 - (celery) Propagate user-set headers by @sentrivana in #5581
- (langchain) Wrap finish_reason in array for gen_ai span attribute by @ericapisani in #5666
- (logging) Fix deadlock in log batcher by @sentrivana in #5684
- (profiler) Prevent buffer race condition during rapid start/stop cycles by @ericapisani in #5622
- (utils) Avoid double serialization of strings in safe_serialize by @ericapisani in #5587
- Enable unused import ruff check and fix unused imports by @sentrivana in #5652
Documentation 📚
- (openai-agents) Remove inapplicable comment by @alexander-alderman-webb in #5495
- Add AGENTS.md by @sentrivana in #5579
- Add
set_attributeexample to changelog by @sentrivana in #5578
Internal Changes 🔧
Anthropic
- Check system and response ID attributes on spans created by
stream()by @alexander-alderman-webb in #5665 - Skip accumulation logic for unexpected types in streamed response by @alexander-alderman-webb in #5564
- Factor out streamed result handling by @alexander-alderman-webb in #5563
- Stream valid JSON by @alexander-alderman-webb in #5641
- Stop mocking response iterator by @alexander-alderman-webb in #5573
Openai Agents
- Do not fail on new tool fields by @alexander-alderman-webb in #5625
- Stop expecting a specific function name by @alexander-alderman-webb in #5623
- Set streaming header when library uses
with_streaming_response()by @alexander-alderman-webb in #5583 - Replace mocks with
httpxfor streamed responses by @alexander-alderman-webb in #5580 - Replace mocks with
httpxin non-MCP tool tests by @alexander-alderman-webb in #5602 - Replace mocks with
httpxin MCP tool tests by @alexander-alderman-webb in #5605 - Replace mocks with
httpxin handoff tests by @alexander-alderman-webb in #5604 - Replace mocks with
httpxin API error test by @alexander-alderman-webb in #5601 - Replace mocks with
httpxin non-error single-response tests by @alexander-alderman-webb in #5600 - Remove test for unreachable state by @alexander-alderman-webb in #5584
- Expect
namespacetool field for newopenaiversions by @alexander-alderman-webb in #5599
Other
- (graphene) Simplify span creation by @sentrivana in #5648
- (httpx) Resolve type checking failures by @alexander-alderman-webb in #5626
- (pyramid) Support alpha suffixes in version parsing by @alexander-alderman-webb in #5618
- (rust) Don't implement separate scope management by @sentrivana in #5639
- (strawberry) Simplify span creation by @sentrivana in #5647
- 🤖 Update test matrix with new releases (03/16) by @github-actions in #5671
- Remove custom warden action by @sentrivana in #5653
- Add
httpxto linting requirements by @alexander-alderman-webb in #5644 - Remove CodeQL action by @sentrivana in #5616
- Normalize dots in package names in
populate_tox.pyby @alexander-alderman-webb in #5574 - Do not run actions on
potel-baseby @sentrivana in #5614