Aggregate LLM Observability experimentation

Note: This endpoint is in preview and is subject to change. If you have any feedback, contact Datadog support.

POST https://api.ap1.datadoghq.com/api/v2/llm-obs/v1/experimentation/analyticshttps://api.ap2.datadoghq.com/api/v2/llm-obs/v1/experimentation/analyticshttps://api.datadoghq.eu/api/v2/llm-obs/v1/experimentation/analyticshttps://api.ddog-gov.com/api/v2/llm-obs/v1/experimentation/analyticshttps://api.us2.ddog-gov.com/api/v2/llm-obs/v1/experimentation/analyticshttps://api.datadoghq.com/api/v2/llm-obs/v1/experimentation/analyticshttps://api.us3.datadoghq.com/api/v2/llm-obs/v1/experimentation/analyticshttps://api.us5.datadoghq.com/api/v2/llm-obs/v1/experimentation/analytics

Overview

Execute an analytics aggregation over LLM Observability experimentation data. Use this endpoint to compute metrics (for example average eval scores) grouped by fields such as span_id or experiment_id.

At least one compute definition and one index must be provided.

Request

Body Data (required)

Analytics payload.

Expand All

Field

Type

Description

data [required]

object

Data object for an analytics request.

attributes [required]

object

Attributes for an analytics request.

aggregate [required]

object

Analytics aggregation parameters.

compute [required]

[object]

List of metric computations to perform.

metric [required]

string

Name of the metric to compute.

name

string

Optional alias for this computation in the response.

dataset_version

int64

Filter to a specific dataset version.

group_by

[object]

Fields to group results by.

field [required]

string

Field name to group by.

indexes [required]

[string]

Data indexes to query. At least one is required.

limit

int32

Maximum number of results to return.

search [required]

object

Search query for filtering analytics data.

query [required]

string

Filter expression.

time

object

Unix-millisecond time range for filtering analytics data.

from [required]

int64

Start of the time range in milliseconds since Unix epoch.

to [required]

int64

End of the time range in milliseconds since Unix epoch.

type [required]

enum

Resource type for experimentation search and analytics operations. Allowed enum values: experimentation

{
  "data": {
    "attributes": {
      "aggregate": {
        "compute": [
          {
            "metric": "score_value",
            "name": "avg_faithfulness"
          }
        ],
        "dataset_version": "integer",
        "group_by": [
          {
            "field": "span_id"
          }
        ],
        "indexes": [
          "experiment-evals"
        ],
        "limit": 1000,
        "search": {
          "query": "@experiment_id:3fd6b5e0-8910-4b1c-a7d0-5b84de329012"
        },
        "time": {
          "from": 1705312200000,
          "to": 1705315800000
        }
      }
    },
    "type": "experimentation"
  }
}

Response

OK

Response to an analytics query.

Expand All

Field

Type

Description

data [required]

object

JSON:API data object for an analytics response.

attributes [required]

object

Attributes of an analytics response.

hit_count [required]

int64

Total number of events matched by the query before grouping.

result [required]

object

Analytics query result containing all buckets.

values [required]

[object]

List of result buckets.

by

object

The group-by field values for this bucket.

metrics [required]

object

Computed metric values for this bucket.

id [required]

string

Server-generated identifier for this analytics result.

type [required]

enum

Resource type for experimentation search and analytics operations. Allowed enum values: experimentation

{
  "data": {
    "attributes": {
      "hit_count": 1500,
      "result": {
        "values": [
          {
            "by": {
              "span_id": "span-7a1b2c3d"
            },
            "metrics": {
              "score_value": 0.85
            }
          }
        ]
      }
    },
    "id": "00000000-0000-0000-0000-000000000001",
    "type": "experimentation"
  }
}

Bad Request

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "Bad Request"
    }
  ]
}

Unauthorized

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "Bad Request"
    }
  ]
}

Forbidden

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "Bad Request"
    }
  ]
}

Too many requests

API error response.

Expand All

Field

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Internal Server Error

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "Bad Request"
    }
  ]
}

Code Example

                  ## default
# 

# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/llm-obs/v1/experimentation/analytics" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ -d @- << EOF { "data": { "attributes": { "aggregate": { "compute": [ { "metric": "score_value", "name": "avg_faithfulness" } ], "group_by": [ { "field": "span_id" } ], "indexes": [ "experiment-evals" ], "search": { "query": "@experiment_id:3fd6b5e0-8910-4b1c-a7d0-5b84de329012 @label:faithfulness" } } }, "type": "experimentation" } } EOF