Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 35 additions & 9 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31063,9 +31063,17 @@ components:
type: string
values:
description: |-
Column values in row order. The element type matches the column's `type`;
for example a `VARCHAR` column carries strings, a `TIMESTAMP` column carries
Unix-millisecond integers. `null` is allowed for missing values.
Column values in row order, one entry per result row. The element type
follows the column's `type`. The following serialization rules should be
taken into account:

- `BIGINT` values are encoded as JSON numbers in the signed 64-bit integer range.
- `DECIMAL` values are encoded as JSON numbers with 64-bit double precision.
- `TIMESTAMP` and `DATE` values are encoded as Unix-millisecond integers; a
`DATE` resolves to midnight UTC.
- `JSON` values are returned as a JSON-encoded string.

`null` is allowed for any column type where a value is missing.
example:
- web-store
- checkout
Expand Down Expand Up @@ -55956,6 +55964,10 @@ components:
example: "2024-01-15T10:30:00Z"
format: date-time
type: string
curation_enabled:
description: Whether automatic dataset curation is enabled for this configuration.
example: true
type: boolean
evp_query:
description: Query that selects the spans the patterns run analyzes.
example: "@ml_app:support-bot"
Expand Down Expand Up @@ -56028,6 +56040,10 @@ components:
example: "2024-01-15T10:30:00Z"
format: date-time
type: string
curation_enabled:
description: Whether automatic dataset curation is enabled for this configuration.
example: true
type: boolean
evp_query:
description: Query that selects the spans the patterns run analyzes.
example: "@ml_app:support-bot"
Expand Down Expand Up @@ -56185,6 +56201,13 @@ components:
description: The ID of an existing configuration to update. If omitted, a new configuration is created.
example: "a7c8d9e0-1234-5678-9abc-def012345678"
type: string
curation_enabled:
description: |-
When true, Datadog automatically provisions a managed project and dataset
(`{pattern-name}-pattern-curated`) to receive suggested interactions after
each run. Defaults to true for new patterns.
example: true
type: boolean
evp_query:
description: Query that selects the spans the patterns run analyzes.
example: "@ml_app:support-bot"
Expand Down Expand Up @@ -135602,9 +135625,6 @@ paths:
summary: Execute a tabular DDSQL query
tags:
- DDSQL
x-unstable: |-
**Note**: This endpoint is in preview and is subject to change.
If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/ddsql/query/tabular/fetch:
post:
description: |-
Expand Down Expand Up @@ -135713,9 +135733,6 @@ paths:
summary: Fetch the result of a DDSQL query
tags:
- DDSQL
x-unstable: |-
**Note**: This endpoint is in preview and is subject to change.
If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/deletion/data/{product}:
post:
description: Creates a data deletion request by providing a query and a timeframe targeting the proper data.
Expand Down Expand Up @@ -154572,6 +154589,7 @@ paths:
attributes:
configs:
- created_at: "2024-01-15T10:30:00Z"
curation_enabled: true
evp_query: "@ml_app:support-bot"
hierarchy_depth: 2
id: a7c8d9e0-1234-5678-9abc-def012345678
Expand Down Expand Up @@ -154651,6 +154669,7 @@ paths:
data:
attributes:
created_at: "2024-01-15T10:30:00Z"
curation_enabled: true
evp_query: "@ml_app:support-bot"
hierarchy_depth: 2
name: Support chatbot topics
Expand Down Expand Up @@ -154687,6 +154706,12 @@ paths:
schema:
$ref: "#/components/schemas/JSONAPIErrorResponse"
description: Not Found
"409":
content:
application/json:
schema:
$ref: "#/components/schemas/JSONAPIErrorResponse"
description: Conflict
"429":
$ref: "#/components/responses/TooManyRequestsResponse"
"500":
Expand Down Expand Up @@ -154718,6 +154743,7 @@ paths:
data:
attributes:
created_at: "2024-01-15T10:30:00Z"
curation_enabled: true
evp_query: "@ml_app:support-bot"
hierarchy_depth: 2
name: Support chatbot topics
Expand Down
14 changes: 11 additions & 3 deletions features/v2/llm_observability.feature
Original file line number Diff line number Diff line change
Expand Up @@ -373,23 +373,31 @@ Feature: LLM Observability
Scenario: Create or update a patterns configuration returns "Bad Request" response
Given operation "UpsertLLMObsPatternsConfig" enabled
And new "UpsertLLMObsPatternsConfig" request
And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}}
And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}}
When the request is sent
Then the response status is 400 Bad Request

@generated @skip @team:DataDog/ml-observability
Scenario: Create or update a patterns configuration returns "Conflict" response
Given operation "UpsertLLMObsPatternsConfig" enabled
And new "UpsertLLMObsPatternsConfig" request
And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}}
When the request is sent
Then the response status is 409 Conflict

@generated @skip @team:DataDog/ml-observability
Scenario: Create or update a patterns configuration returns "Not Found" response
Given operation "UpsertLLMObsPatternsConfig" enabled
And new "UpsertLLMObsPatternsConfig" request
And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}}
And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}}
When the request is sent
Then the response status is 404 Not Found

@generated @skip @team:DataDog/ml-observability
Scenario: Create or update a patterns configuration returns "OK" response
Given operation "UpsertLLMObsPatternsConfig" enabled
And new "UpsertLLMObsPatternsConfig" request
And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}}
And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}}
When the request is sent
Then the response status is 200 OK

Expand Down
8 changes: 0 additions & 8 deletions services/ddsql/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,6 @@ import { DDSQLApiV2 } from "@datadog/datadog-api-client-ddsql";
import { v2 } from "@datadog/datadog-api-client-ddsql";

const configuration = createConfiguration();
// Enable unstable operations
const configurationOpts = {
unstableOperations: {
"DDSQLApi.v2.executeDdsqlTabularQuery": true
}
}

const configuration = createConfiguration(configurationOpts);
const apiInstance = new DDSQLApiV2(configuration);
const params = {/* parameters */};

Expand Down
12 changes: 0 additions & 12 deletions services/ddsql/src/v2/DDSQLApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,6 @@ export class DDSQLApiRequestFactory extends BaseAPIRequestFactory {
): Promise<RequestContext> {
const _config = _options || this.configuration;

if (!_config.unstableOperations["DDSQLApi.v2.executeDdsqlTabularQuery"]) {
throw new Error(
"Unstable operation 'executeDdsqlTabularQuery' is disabled. Enable it by setting `configuration.unstableOperations['DDSQLApi.v2.executeDdsqlTabularQuery'] = true`",
);
}

// verify required parameter 'body' is not null or undefined
if (body === null || body === undefined) {
throw new RequiredError("body", "executeDdsqlTabularQuery");
Expand Down Expand Up @@ -100,12 +94,6 @@ export class DDSQLApiRequestFactory extends BaseAPIRequestFactory {
): Promise<RequestContext> {
const _config = _options || this.configuration;

if (!_config.unstableOperations["DDSQLApi.v2.fetchDdsqlTabularQuery"]) {
throw new Error(
"Unstable operation 'fetchDdsqlTabularQuery' is disabled. Enable it by setting `configuration.unstableOperations['DDSQLApi.v2.fetchDdsqlTabularQuery'] = true`",
);
}

// verify required parameter 'body' is not null or undefined
if (body === null || body === undefined) {
throw new RequiredError("body", "fetchDdsqlTabularQuery");
Expand Down
14 changes: 11 additions & 3 deletions services/ddsql/src/v2/models/DdsqlTabularQueryColumn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,17 @@ export class DdsqlTabularQueryColumn {
*/
"type": string;
/**
* Column values in row order. The element type matches the column's `type`;
* for example a `VARCHAR` column carries strings, a `TIMESTAMP` column carries
* Unix-millisecond integers. `null` is allowed for missing values.
* Column values in row order, one entry per result row. The element type
* follows the column's `type`. The following serialization rules should be
* taken into account:
*
* - `BIGINT` values are encoded as JSON numbers in the signed 64-bit integer range.
* - `DECIMAL` values are encoded as JSON numbers with 64-bit double precision.
* - `TIMESTAMP` and `DATE` values are encoded as Unix-millisecond integers; a
* `DATE` resolves to midnight UTC.
* - `JSON` values are returned as a JSON-encoded string.
*
* `null` is allowed for any column type where a value is missing.
*/
"values": Array<any>;
/**
Expand Down
1 change: 1 addition & 0 deletions services/llm_observability/src/v2/LLMObservabilityApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10819,6 +10819,7 @@ export class LLMObservabilityApiResponseProcessor {
response.httpStatusCode === 401 ||
response.httpStatusCode === 403 ||
response.httpStatusCode === 404 ||
response.httpStatusCode === 409 ||
response.httpStatusCode === 500
) {
const bodyText = parse(await response.body.text(), contentType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ export class LLMObsPatternsConfigAttributes {
* Timestamp when the configuration was created.
*/
"createdAt": Date;
/**
* Whether automatic dataset curation is enabled for this configuration.
*/
"curationEnabled"?: boolean;
/**
* Query that selects the spans the patterns run analyzes.
*/
Expand Down Expand Up @@ -77,6 +81,10 @@ export class LLMObsPatternsConfigAttributes {
required: true,
format: "date-time",
},
curationEnabled: {
baseName: "curation_enabled",
type: "boolean",
},
evpQuery: {
baseName: "evp_query",
type: "string",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ export class LLMObsPatternsConfigItem {
* Timestamp when the configuration was created.
*/
"createdAt": Date;
/**
* Whether automatic dataset curation is enabled for this configuration.
*/
"curationEnabled"?: boolean;
/**
* Query that selects the spans the patterns run analyzes.
*/
Expand Down Expand Up @@ -81,6 +85,10 @@ export class LLMObsPatternsConfigItem {
required: true,
format: "date-time",
},
curationEnabled: {
baseName: "curation_enabled",
type: "boolean",
},
evpQuery: {
baseName: "evp_query",
type: "string",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ export class LLMObsPatternsConfigUpsertRequestAttributes {
* The ID of an existing configuration to update. If omitted, a new configuration is created.
*/
"configId"?: string;
/**
* When true, Datadog automatically provisions a managed project and dataset
* (`{pattern-name}-pattern-curated`) to receive suggested interactions after
* each run. Defaults to true for new patterns.
*/
"curationEnabled"?: boolean;
/**
* Query that selects the spans the patterns run analyzes.
*/
Expand Down Expand Up @@ -71,6 +77,10 @@ export class LLMObsPatternsConfigUpsertRequestAttributes {
baseName: "config_id",
type: "string",
},
curationEnabled: {
baseName: "curation_enabled",
type: "boolean",
},
evpQuery: {
baseName: "evp_query",
type: "string",
Expand Down
Loading