From 3a82b57a267488b5d0ccbc8540087150b8c5b5ad Mon Sep 17 00:00:00 2001 From: Dinesh Yeduguru Date: Wed, 5 Mar 2025 16:30:46 -0800 Subject: [PATCH] return metric labels as list --- docs/_static/llama-stack-spec.html | 303 ++++++++++++++++++++++++ docs/_static/llama-stack-spec.yaml | 207 ++++++++++++++++ llama_stack/apis/telemetry/telemetry.py | 8 +- 3 files changed, 517 insertions(+), 1 deletion(-) diff --git a/docs/_static/llama-stack-spec.html b/docs/_static/llama-stack-spec.html index 8d877e3b7..250bd7515 100644 --- a/docs/_static/llama-stack-spec.html +++ b/docs/_static/llama-stack-spec.html @@ -4945,7 +4945,11 @@ "metrics": { "type": "array", "items": { +<<<<<<< HEAD "$ref": "#/components/schemas/MetricInResponse" +======= + "$ref": "#/components/schemas/MetricEvent" +>>>>>>> 6ab59fb65 (return metric labels as list) } }, "content": { @@ -5273,7 +5277,11 @@ "metrics": { "type": "array", "items": { +<<<<<<< HEAD "$ref": "#/components/schemas/MetricInResponse" +======= + "$ref": "#/components/schemas/MetricEvent" +>>>>>>> 6ab59fb65 (return metric labels as list) } }, "delta": { @@ -7967,6 +7975,301 @@ } } }, +<<<<<<< HEAD +======= + "StringType": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "string", + "default": "string" + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "title": "StringType" + }, + "UnionType": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "union", + "default": "union" + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "title": "UnionType" + }, + "MetricLabelMatcher": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + }, + "operator": { + "$ref": "#/components/schemas/MetricLabelOperator", + "default": "=" + } + }, + "additionalProperties": false, + "required": [ + "name", + "value", + "operator" + ], + "title": "MetricLabelMatcher" + }, + "MetricLabelOperator": { + "type": "string", + "enum": [ + "=", + "!=", + "=~", + "!~" + ], + "title": "MetricLabelOperator" + }, + "MetricQueryType": { + "type": "string", + "enum": [ + "range", + "instant" + ], + "title": "MetricQueryType" + }, + "GetMetricsRequest": { + "type": "object", + "properties": { + "start_time": { + "type": "integer" + }, + "end_time": { + "type": "integer" + }, + "step": { + "type": "string" + }, + "query_type": { + "$ref": "#/components/schemas/MetricQueryType" + }, + "label_matchers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricLabelMatcher" + } + } + }, + "additionalProperties": false, + "required": [ + "start_time", + "query_type" + ], + "title": "GetMetricsRequest" + }, + "GetMetricsResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricSeries" + } + } + }, + "additionalProperties": false, + "required": [ + "data" + ], + "title": "GetMetricsResponse" + }, + "MetricDataPoint": { + "type": "object", + "properties": { + "timestamp": { + "type": "string", + "format": "date-time" + }, + "value": { + "type": "number" + } + }, + "additionalProperties": false, + "required": [ + "timestamp", + "value" + ], + "title": "MetricDataPoint" + }, + "MetricLabel": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "name", + "value" + ], + "title": "MetricLabel" + }, + "MetricSeries": { + "type": "object", + "properties": { + "metric": { + "type": "string" + }, + "labels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricLabel" + } + }, + "values": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetricDataPoint" + } + } + }, + "additionalProperties": false, + "required": [ + "metric", + "labels", + "values" + ], + "title": "MetricSeries" + }, + "Model": { + "type": "object", + "properties": { + "identifier": { + "type": "string" + }, + "provider_resource_id": { + "type": "string" + }, + "provider_id": { + "type": "string" + }, + "type": { + "type": "string", + "const": "model", + "default": "model" + }, + "metadata": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "array" + }, + { + "type": "object" + } + ] + } + }, + "model_type": { + "$ref": "#/components/schemas/ModelType", + "default": "llm" + } + }, + "additionalProperties": false, + "required": [ + "identifier", + "provider_resource_id", + "provider_id", + "type", + "metadata", + "model_type" + ], + "title": "Model" + }, + "ModelType": { + "type": "string", + "enum": [ + "llm", + "embedding" + ], + "title": "ModelType" + }, + "PaginatedRowsResult": { + "type": "object", + "properties": { + "rows": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "array" + }, + { + "type": "object" + } + ] + } + }, + "description": "The rows in the current page." + }, + "total_count": { + "type": "integer", + "description": "The total number of rows in the dataset." + }, + "next_page_token": { + "type": "string", + "description": "The token to get the next page of rows." + } + }, + "additionalProperties": false, + "required": [ + "rows", + "total_count" + ], + "title": "PaginatedRowsResult", + "description": "A paginated list of rows from a dataset." + }, +>>>>>>> 6ab59fb65 (return metric labels as list) "ScoringFn": { "type": "object", "properties": { diff --git a/docs/_static/llama-stack-spec.yaml b/docs/_static/llama-stack-spec.yaml index 5d0c0f78d..042512c54 100644 --- a/docs/_static/llama-stack-spec.yaml +++ b/docs/_static/llama-stack-spec.yaml @@ -3434,7 +3434,11 @@ components: metrics: type: array items: +<<<<<<< HEAD $ref: '#/components/schemas/MetricInResponse' +======= + $ref: '#/components/schemas/MetricEvent' +>>>>>>> 6ab59fb65 (return metric labels as list) content: type: string description: The generated completion text @@ -3708,7 +3712,11 @@ components: metrics: type: array items: +<<<<<<< HEAD $ref: '#/components/schemas/MetricInResponse' +======= + $ref: '#/components/schemas/MetricEvent' +>>>>>>> 6ab59fb65 (return metric labels as list) delta: type: string description: >- @@ -5548,6 +5556,205 @@ components: chat_completion_input: '#/components/schemas/ChatCompletionInputType' completion_input: '#/components/schemas/CompletionInputType' agent_turn_input: '#/components/schemas/AgentTurnInputType' +<<<<<<< HEAD +======= + StringType: + type: object + properties: + type: + type: string + const: string + default: string + additionalProperties: false + required: + - type + title: StringType + UnionType: + type: object + properties: + type: + type: string + const: union + default: union + additionalProperties: false + required: + - type + title: UnionType + MetricLabelMatcher: + type: object + properties: + name: + type: string + value: + type: string + operator: + $ref: '#/components/schemas/MetricLabelOperator' + default: '=' + additionalProperties: false + required: + - name + - value + - operator + title: MetricLabelMatcher + MetricLabelOperator: + type: string + enum: + - '=' + - '!=' + - =~ + - '!~' + title: MetricLabelOperator + MetricQueryType: + type: string + enum: + - range + - instant + title: MetricQueryType + GetMetricsRequest: + type: object + properties: + start_time: + type: integer + end_time: + type: integer + step: + type: string + query_type: + $ref: '#/components/schemas/MetricQueryType' + label_matchers: + type: array + items: + $ref: '#/components/schemas/MetricLabelMatcher' + additionalProperties: false + required: + - start_time + - query_type + title: GetMetricsRequest + GetMetricsResponse: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/MetricSeries' + additionalProperties: false + required: + - data + title: GetMetricsResponse + MetricDataPoint: + type: object + properties: + timestamp: + type: string + format: date-time + value: + type: number + additionalProperties: false + required: + - timestamp + - value + title: MetricDataPoint + MetricLabel: + type: object + properties: + name: + type: string + value: + type: string + additionalProperties: false + required: + - name + - value + title: MetricLabel + MetricSeries: + type: object + properties: + metric: + type: string + labels: + type: array + items: + $ref: '#/components/schemas/MetricLabel' + values: + type: array + items: + $ref: '#/components/schemas/MetricDataPoint' + additionalProperties: false + required: + - metric + - labels + - values + title: MetricSeries + Model: + type: object + properties: + identifier: + type: string + provider_resource_id: + type: string + provider_id: + type: string + type: + type: string + const: model + default: model + metadata: + type: object + additionalProperties: + oneOf: + - type: 'null' + - type: boolean + - type: number + - type: string + - type: array + - type: object + model_type: + $ref: '#/components/schemas/ModelType' + default: llm + additionalProperties: false + required: + - identifier + - provider_resource_id + - provider_id + - type + - metadata + - model_type + title: Model + ModelType: + type: string + enum: + - llm + - embedding + title: ModelType + PaginatedRowsResult: + type: object + properties: + rows: + type: array + items: + type: object + additionalProperties: + oneOf: + - type: 'null' + - type: boolean + - type: number + - type: string + - type: array + - type: object + description: The rows in the current page. + total_count: + type: integer + description: The total number of rows in the dataset. + next_page_token: + type: string + description: The token to get the next page of rows. + additionalProperties: false + required: + - rows + - total_count + title: PaginatedRowsResult + description: A paginated list of rows from a dataset. +>>>>>>> 6ab59fb65 (return metric labels as list) ScoringFn: type: object properties: diff --git a/llama_stack/apis/telemetry/telemetry.py b/llama_stack/apis/telemetry/telemetry.py index 369b07c8b..ea5bd36c2 100644 --- a/llama_stack/apis/telemetry/telemetry.py +++ b/llama_stack/apis/telemetry/telemetry.py @@ -221,6 +221,12 @@ class MetricLabelMatcher(BaseModel): operator: MetricLabelOperator = MetricLabelOperator.EQUALS +@json_schema_type +class MetricLabel(BaseModel): + name: str + value: str + + @json_schema_type class MetricDataPoint(BaseModel): timestamp: datetime @@ -230,7 +236,7 @@ class MetricDataPoint(BaseModel): @json_schema_type class MetricSeries(BaseModel): metric: str - labels: dict[str, str] + labels: list[MetricLabel] values: list[MetricDataPoint]