v3.19.0rc1
📦 datadog-sdkView on GitHub →
✨ 5 features🐛 8 fixes⚡ 3 deprecations🔧 10 symbols
Summary
This release introduces multi-run LLM experiments and security response IDs, alongside several bug fixes addressing performance issues related to profiling and CI Visibility. Several attributes on ExperimentResult and the Span.finished setter are deprecated.
Migration Steps
- When dealing with multi-run LLM experiments, update code to use the ExperimentResult.runs attribute instead of the deprecated ExperimentResult.rows or ExperimentResult.summary_evaluations attributes.
- Replace usage of Span.finished setter with the Span.finish() method.
✨ New Features
- Introduces security response id for easy identification of blocking responses in AAP.
- LLM Observability experiments can now be run multiple times using the optional runs argument to assess performance stability. Use the new ExperimentResult.runs attribute to access results by run iteration.
- Non-root experiment spans are now tagged with experiment ID, run ID, and run iteration tags.
- Adds additional tags to MCP client session and tool call spans to power LLM Observability MCP tool call features.
- Marks client mcp tool call spans as errors when the corresponding server tool call errored.
🐛 Bug Fixes
- Resolved an issue in CI Visibility where repo tags were fetched while unshallowing to extract commit metadata, causing performance issues for repos with many tags.
- Resolved an issue where payload size statistics were not being sent to the backend for Data Streams Monitoring (DSM).
- Resolved a performance issue in the core module where forksafe locks used patched threading primitives from the profiling module; forksafe now uses unpatched threading primitives (Lock, RLock, Event).
- Added support for HTTPS_PROXY in LLM Observability.
- Modified Error Tracking to store the exception id instead of the exception object to prevent TypeErrors with custom exception objects.
- Resolved an issue where importing the profiler module after an asyncio Event Loop started made the Profiler blind to the existing Event Loop and its Tasks.
- Prevented a potential ResourceWarning in multiprocess scenarios.
- Prevented startup failure when a temporary directory is not available.
🔧 Affected Symbols
Span.finishedSpan.finish()Span.finish_with_ancestors()ExperimentResultExperimentResult.rowsExperimentResult.summary_evaluationsExperimentResult.runsLockRLockEvent⚡ Deprecations
- The Span.finished setter is deprecated; use the Span.finish() method instead.
- Span.finish_with_ancestors() is deprecated with no alternative.
- The ExperimentResult class' rows and summary_evaluations attributes are deprecated and will be removed in the next major release. These attributes will only store the results of the first run iteration for multi-run experiments. Use the ExperimentResult.runs attribute instead to access experiment results and summary evaluations.