v3.19.0
📦 datadog-sdkView on GitHub →
✨ 5 features🐛 8 fixes⚡ 3 deprecations🔧 10 symbols
Summary
This release introduces multi-run support for LLM Observability experiments and fixes several performance issues related to profiling and CI Visibility tag fetching. Several attributes on ExperimentResult are deprecated in favor of the new .runs attribute.
Migration Steps
- If you were using Span.finished setter, switch to calling the Span.finish() method.
- If you were relying on ExperimentResult.rows or ExperimentResult.summary_evaluations for multi-run experiments, update your code to use the ExperimentResult.runs attribute instead.
✨ 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 exception event storage in Error Tracking to store the exception id instead of the exception object, preventing 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.runsthreading.Lockthreading.RLockthreading.Event⚡ 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. They will only store results of the first run iteration for multi-run experiments. Use the ExperimentResult.runs attribute instead.