Change8

v4.7.0rc3

📦 datadog-sdkView on GitHub →
23 features🐛 1 fixes🔧 11 symbols

Summary

This release introduces significant new features across LLM Observability, AI Guard integration with AWS Strands Agents, and tracing for Azure Durable Functions. It also optimizes the lock profiler via Cython compilation and propagates process tags across various monitoring payloads.

Migration Steps

  1. If using AI Guard, note that the default behavior for evaluation calls is now blocking (`block=True`). If you require non-blocking behavior, explicitly pass `block=False`.
  2. If using MLFlow, ensure environment variables DD_API_KEY, DD_APP_KEY, and DD_MODEL_LAB_ENABLED are set if you expect Datadog headers to be included in HTTP requests.
  3. If using AWS Strands Agents, for the recommended Plugin API, ensure `strands-agents` version is >= 1.29.0.

✨ New Features

  • Adds a request header provider (auth plugin) for MLFlow, including DD-API-KEY and DD-APPLICATION-KEY headers if environment variables are set.
  • AI Guard evaluation calls now block by default if blocking is enabled in the UI; this can be disabled with `block=False`.
  • AI Guard SDK response now includes Sensitive Data Scanner (SDS) results.
  • Introduces AI Guard support for the AWS Strands Agents SDK via Plugin API (recommended, requires strands-agents >= 1.29.0) and HookProvider API (legacy).
  • Adds tracing support for Azure Durable Functions, tracing durable activity and entity functions.
  • Adds process tags to profiler payloads (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • Adds process tags to runtime metrics tags (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • Adds process tags to remote configuration payloads (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • Adds process tags to debugger payloads (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • Adds process tags to crash tracking payloads (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • Adds process tags to Data Streams Monitoring payloads (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • Adds process tags to Database Monitoring SQL service hash propagation (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • Adds process tags to stats computation payloads (can be deactivated via DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=false).
  • LLM Observability: Adds support for capturing stop_reason and structured_output from the Claude Agent SDK integration.
  • LLM Observability: Adds support for user-defined dataset record IDs via an optional 'id' field in dataset creation/appending methods, or via the new 'id_column' parameter in create_dataset_from_csv().
  • LLM Observability: Experiment tasks can now optionally receive dataset record metadata as a third parameter.
  • LLM Observability: Introduces RemoteEvaluator to reference LLM-as-Judge evaluations configured in the Datadog UI by name during local experiments.
  • LLM Observability: Adds cache creation breakdown metrics (ephemeral_5m_input_tokens, ephemeral_1h_input_tokens) for the Anthropic integration when prompt caching is used.
  • LLM Observability: Adds support for reasoning and extended thinking content in Anthropic, LiteLLM, and OpenAI-compatible integrations.
  • LLM Observability: LLMJudge now forwards extra client_options to the underlying provider client constructor.
  • LLM Observability: Adds three new Dataset methods for tag management: dataset.add_tags, dataset.remove_tags, and dataset.replace_tags.
  • LLM Observability: Changes experiment execution to run evaluators immediately after each record's task completes instead of batching, posting spans/metrics incrementally.
  • LLM Observability: Adds support for Pydantic AI evaluations in LLM Observability Experiments.

🐛 Bug Fixes

  • Flag evaluations for non-existent flags now return Reason.ERROR with ErrorCode.FLAG_NOT_FOUND instead of Reason.DEFAULT when configuration is available but the flag is not found (preserves Reason.DEFAULT if no configuration is loaded).

Affected Symbols