Skip to content

Commit 8f0f7a5

Browse files
feat(api): some updates to query metrics
1 parent c935c79 commit 8f0f7a5

File tree

11 files changed

+392
-39
lines changed

11 files changed

+392
-39
lines changed

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 106
1+
configured_endpoints: 107
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-f252873ea1e1f38fd207331ef2621c511154d5be3f4076e59cc15754fc58eee4.yml
33
openapi_spec_hash: 10cbb4337a06a9fdd7d08612dd6044c3
4-
config_hash: ddcbd66d7ac80290da208232a746e30f
4+
config_hash: 17fe64b23723fc54f2ee61c80223c3e3

api.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,12 +509,14 @@ Types:
509509
```python
510510
from llama_stack_client.types import (
511511
Event,
512+
Metric,
512513
QueryCondition,
513514
QuerySpansResponse,
514515
SpanWithStatus,
515516
Trace,
516517
TelemetryGetSpanResponse,
517518
TelemetryGetSpanTreeResponse,
519+
TelemetryQueryMetricsResponse,
518520
TelemetryQuerySpansResponse,
519521
TelemetryQueryTracesResponse,
520522
)
@@ -526,6 +528,7 @@ Methods:
526528
- <code title="post /v1/telemetry/spans/{span_id}/tree">client.telemetry.<a href="./src/llama_stack_client/resources/telemetry.py">get_span_tree</a>(span_id, \*\*<a href="src/llama_stack_client/types/telemetry_get_span_tree_params.py">params</a>) -> <a href="./src/llama_stack_client/types/telemetry_get_span_tree_response.py">TelemetryGetSpanTreeResponse</a></code>
527529
- <code title="get /v1/telemetry/traces/{trace_id}">client.telemetry.<a href="./src/llama_stack_client/resources/telemetry.py">get_trace</a>(trace_id) -> <a href="./src/llama_stack_client/types/trace.py">Trace</a></code>
528530
- <code title="post /v1/telemetry/events">client.telemetry.<a href="./src/llama_stack_client/resources/telemetry.py">log_event</a>(\*\*<a href="src/llama_stack_client/types/telemetry_log_event_params.py">params</a>) -> None</code>
531+
- <code title="post /v1/telemetry/metrics/{metric_name}">client.telemetry.<a href="./src/llama_stack_client/resources/telemetry.py">query_metrics</a>(metric_name, \*\*<a href="src/llama_stack_client/types/telemetry_query_metrics_params.py">params</a>) -> <a href="./src/llama_stack_client/types/telemetry_query_metrics_response.py">TelemetryQueryMetricsResponse</a></code>
529532
- <code title="post /v1/telemetry/spans">client.telemetry.<a href="./src/llama_stack_client/resources/telemetry.py">query_spans</a>(\*\*<a href="src/llama_stack_client/types/telemetry_query_spans_params.py">params</a>) -> <a href="./src/llama_stack_client/types/telemetry_query_spans_response.py">TelemetryQuerySpansResponse</a></code>
530533
- <code title="post /v1/telemetry/traces">client.telemetry.<a href="./src/llama_stack_client/resources/telemetry.py">query_traces</a>(\*\*<a href="src/llama_stack_client/types/telemetry_query_traces_params.py">params</a>) -> <a href="./src/llama_stack_client/types/telemetry_query_traces_response.py">TelemetryQueryTracesResponse</a></code>
531534
- <code title="post /v1/telemetry/spans/export">client.telemetry.<a href="./src/llama_stack_client/resources/telemetry.py">save_spans_to_dataset</a>(\*\*<a href="src/llama_stack_client/types/telemetry_save_spans_to_dataset_params.py">params</a>) -> None</code>

src/llama_stack_client/resources/telemetry.py

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from __future__ import annotations
44

55
from typing import List, Type, Iterable, cast
6+
from typing_extensions import Literal
67

78
import httpx
89

@@ -11,6 +12,7 @@
1112
telemetry_query_spans_params,
1213
telemetry_query_traces_params,
1314
telemetry_get_span_tree_params,
15+
telemetry_query_metrics_params,
1416
telemetry_save_spans_to_dataset_params,
1517
)
1618
from .._types import NOT_GIVEN, Body, Query, Headers, NoneType, NotGiven
@@ -32,6 +34,7 @@
3234
from ..types.telemetry_query_spans_response import TelemetryQuerySpansResponse
3335
from ..types.telemetry_query_traces_response import TelemetryQueryTracesResponse
3436
from ..types.telemetry_get_span_tree_response import TelemetryGetSpanTreeResponse
37+
from ..types.telemetry_query_metrics_response import TelemetryQueryMetricsResponse
3538

3639
__all__ = ["TelemetryResource", "AsyncTelemetryResource"]
3740

@@ -219,6 +222,68 @@ def log_event(
219222
cast_to=NoneType,
220223
)
221224

225+
def query_metrics(
226+
self,
227+
metric_name: str,
228+
*,
229+
query_type: Literal["range", "instant"],
230+
start_time: int,
231+
end_time: int | NotGiven = NOT_GIVEN,
232+
granularity: str | NotGiven = NOT_GIVEN,
233+
label_matchers: Iterable[telemetry_query_metrics_params.LabelMatcher] | NotGiven = NOT_GIVEN,
234+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
235+
# The extra values given here take precedence over values defined on the client or passed to this method.
236+
extra_headers: Headers | None = None,
237+
extra_query: Query | None = None,
238+
extra_body: Body | None = None,
239+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
240+
) -> TelemetryQueryMetricsResponse:
241+
"""
242+
Query metrics.
243+
244+
Args:
245+
query_type: The type of query to perform.
246+
247+
start_time: The start time of the metric to query.
248+
249+
end_time: The end time of the metric to query.
250+
251+
granularity: The granularity of the metric to query.
252+
253+
label_matchers: The label matchers to apply to the metric.
254+
255+
extra_headers: Send extra headers
256+
257+
extra_query: Add additional query parameters to the request
258+
259+
extra_body: Add additional JSON properties to the request
260+
261+
timeout: Override the client-level default timeout for this request, in seconds
262+
"""
263+
if not metric_name:
264+
raise ValueError(f"Expected a non-empty value for `metric_name` but received {metric_name!r}")
265+
return self._post(
266+
f"/v1/telemetry/metrics/{metric_name}",
267+
body=maybe_transform(
268+
{
269+
"query_type": query_type,
270+
"start_time": start_time,
271+
"end_time": end_time,
272+
"granularity": granularity,
273+
"label_matchers": label_matchers,
274+
},
275+
telemetry_query_metrics_params.TelemetryQueryMetricsParams,
276+
),
277+
options=make_request_options(
278+
extra_headers=extra_headers,
279+
extra_query=extra_query,
280+
extra_body=extra_body,
281+
timeout=timeout,
282+
post_parser=DataWrapper[TelemetryQueryMetricsResponse]._unwrapper,
283+
),
284+
cast_to=cast(Type[TelemetryQueryMetricsResponse], DataWrapper[TelemetryQueryMetricsResponse]),
285+
)
286+
222287
def query_spans(
223288
self,
224289
*,
@@ -561,6 +626,68 @@ async def log_event(
561626
cast_to=NoneType,
562627
)
563628

629+
async def query_metrics(
630+
self,
631+
metric_name: str,
632+
*,
633+
query_type: Literal["range", "instant"],
634+
start_time: int,
635+
end_time: int | NotGiven = NOT_GIVEN,
636+
granularity: str | NotGiven = NOT_GIVEN,
637+
label_matchers: Iterable[telemetry_query_metrics_params.LabelMatcher] | NotGiven = NOT_GIVEN,
638+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
639+
# The extra values given here take precedence over values defined on the client or passed to this method.
640+
extra_headers: Headers | None = None,
641+
extra_query: Query | None = None,
642+
extra_body: Body | None = None,
643+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
644+
) -> TelemetryQueryMetricsResponse:
645+
"""
646+
Query metrics.
647+
648+
Args:
649+
query_type: The type of query to perform.
650+
651+
start_time: The start time of the metric to query.
652+
653+
end_time: The end time of the metric to query.
654+
655+
granularity: The granularity of the metric to query.
656+
657+
label_matchers: The label matchers to apply to the metric.
658+
659+
extra_headers: Send extra headers
660+
661+
extra_query: Add additional query parameters to the request
662+
663+
extra_body: Add additional JSON properties to the request
664+
665+
timeout: Override the client-level default timeout for this request, in seconds
666+
"""
667+
if not metric_name:
668+
raise ValueError(f"Expected a non-empty value for `metric_name` but received {metric_name!r}")
669+
return await self._post(
670+
f"/v1/telemetry/metrics/{metric_name}",
671+
body=await async_maybe_transform(
672+
{
673+
"query_type": query_type,
674+
"start_time": start_time,
675+
"end_time": end_time,
676+
"granularity": granularity,
677+
"label_matchers": label_matchers,
678+
},
679+
telemetry_query_metrics_params.TelemetryQueryMetricsParams,
680+
),
681+
options=make_request_options(
682+
extra_headers=extra_headers,
683+
extra_query=extra_query,
684+
extra_body=extra_body,
685+
timeout=timeout,
686+
post_parser=DataWrapper[TelemetryQueryMetricsResponse]._unwrapper,
687+
),
688+
cast_to=cast(Type[TelemetryQueryMetricsResponse], DataWrapper[TelemetryQueryMetricsResponse]),
689+
)
690+
564691
async def query_spans(
565692
self,
566693
*,
@@ -736,6 +863,9 @@ def __init__(self, telemetry: TelemetryResource) -> None:
736863
self.log_event = to_raw_response_wrapper(
737864
telemetry.log_event,
738865
)
866+
self.query_metrics = to_raw_response_wrapper(
867+
telemetry.query_metrics,
868+
)
739869
self.query_spans = to_raw_response_wrapper(
740870
telemetry.query_spans,
741871
)
@@ -763,6 +893,9 @@ def __init__(self, telemetry: AsyncTelemetryResource) -> None:
763893
self.log_event = async_to_raw_response_wrapper(
764894
telemetry.log_event,
765895
)
896+
self.query_metrics = async_to_raw_response_wrapper(
897+
telemetry.query_metrics,
898+
)
766899
self.query_spans = async_to_raw_response_wrapper(
767900
telemetry.query_spans,
768901
)
@@ -790,6 +923,9 @@ def __init__(self, telemetry: TelemetryResource) -> None:
790923
self.log_event = to_streamed_response_wrapper(
791924
telemetry.log_event,
792925
)
926+
self.query_metrics = to_streamed_response_wrapper(
927+
telemetry.query_metrics,
928+
)
793929
self.query_spans = to_streamed_response_wrapper(
794930
telemetry.query_spans,
795931
)
@@ -817,6 +953,9 @@ def __init__(self, telemetry: AsyncTelemetryResource) -> None:
817953
self.log_event = async_to_streamed_response_wrapper(
818954
telemetry.log_event,
819955
)
956+
self.query_metrics = async_to_streamed_response_wrapper(
957+
telemetry.query_metrics,
958+
)
820959
self.query_spans = async_to_streamed_response_wrapper(
821960
telemetry.query_spans,
822961
)

src/llama_stack_client/types/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from .tool import Tool as Tool
88
from .model import Model as Model
99
from .trace import Trace as Trace
10+
from .metric import Metric as Metric
1011
from .shared import (
1112
Message as Message,
1213
Document as Document,
@@ -142,6 +143,7 @@
142143
from .telemetry_query_traces_params import TelemetryQueryTracesParams as TelemetryQueryTracesParams
143144
from .scoring_function_list_response import ScoringFunctionListResponse as ScoringFunctionListResponse
144145
from .telemetry_get_span_tree_params import TelemetryGetSpanTreeParams as TelemetryGetSpanTreeParams
146+
from .telemetry_query_metrics_params import TelemetryQueryMetricsParams as TelemetryQueryMetricsParams
145147
from .telemetry_query_spans_response import TelemetryQuerySpansResponse as TelemetryQuerySpansResponse
146148
from .tool_runtime_list_tools_params import ToolRuntimeListToolsParams as ToolRuntimeListToolsParams
147149
from .eval_evaluate_rows_alpha_params import EvalEvaluateRowsAlphaParams as EvalEvaluateRowsAlphaParams
@@ -152,6 +154,7 @@
152154
from .list_post_training_jobs_response import ListPostTrainingJobsResponse as ListPostTrainingJobsResponse
153155
from .scoring_function_register_params import ScoringFunctionRegisterParams as ScoringFunctionRegisterParams
154156
from .telemetry_get_span_tree_response import TelemetryGetSpanTreeResponse as TelemetryGetSpanTreeResponse
157+
from .telemetry_query_metrics_response import TelemetryQueryMetricsResponse as TelemetryQueryMetricsResponse
155158
from .tool_runtime_list_tools_response import ToolRuntimeListToolsResponse as ToolRuntimeListToolsResponse
156159
from .inference_batch_completion_params import InferenceBatchCompletionParams as InferenceBatchCompletionParams
157160
from .synthetic_data_generation_response import SyntheticDataGenerationResponse as SyntheticDataGenerationResponse

src/llama_stack_client/types/chat_completion_response_stream_chunk.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
from typing import List, Optional
44
from typing_extensions import Literal
55

6+
from .metric import Metric
67
from .._models import BaseModel
78
from .shared.content_delta import ContentDelta
89
from .shared.shared_token_log_probs import SharedTokenLogProbs
910

10-
__all__ = ["ChatCompletionResponseStreamChunk", "Event", "Metric"]
11+
__all__ = ["ChatCompletionResponseStreamChunk", "Event"]
1112

1213

1314
class Event(BaseModel):
@@ -27,17 +28,6 @@ class Event(BaseModel):
2728
"""Optional reason why generation stopped, if complete"""
2829

2930

30-
class Metric(BaseModel):
31-
metric: str
32-
"""The name of the metric"""
33-
34-
value: float
35-
"""The numeric value of the metric"""
36-
37-
unit: Optional[str] = None
38-
"""(Optional) The unit of measurement for the metric value"""
39-
40-
4131
class ChatCompletionResponseStreamChunk(BaseModel):
4232
event: Event
4333
"""The event containing the new content"""
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from typing import Optional
4+
5+
from .._models import BaseModel
6+
7+
__all__ = ["Metric"]
8+
9+
10+
class Metric(BaseModel):
11+
metric: str
12+
"""The name of the metric"""
13+
14+
value: float
15+
"""The numeric value of the metric"""
16+
17+
unit: Optional[str] = None
18+
"""(Optional) The unit of measurement for the metric value"""

src/llama_stack_client/types/shared/batch_completion.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,11 @@
33
from typing import List, Optional
44
from typing_extensions import Literal
55

6+
from ..metric import Metric
67
from ..._models import BaseModel
78
from .shared_token_log_probs import SharedTokenLogProbs
89

9-
__all__ = ["BatchCompletion", "Batch", "BatchMetric"]
10-
11-
12-
class BatchMetric(BaseModel):
13-
metric: str
14-
"""The name of the metric"""
15-
16-
value: float
17-
"""The numeric value of the metric"""
18-
19-
unit: Optional[str] = None
20-
"""(Optional) The unit of measurement for the metric value"""
10+
__all__ = ["BatchCompletion", "Batch"]
2111

2212

2313
class Batch(BaseModel):
@@ -30,7 +20,7 @@ class Batch(BaseModel):
3020
logprobs: Optional[List[SharedTokenLogProbs]] = None
3121
"""Optional log probabilities for generated tokens"""
3222

33-
metrics: Optional[List[BatchMetric]] = None
23+
metrics: Optional[List[Metric]] = None
3424
"""(Optional) List of metrics associated with the API response"""
3525

3626

src/llama_stack_client/types/shared/chat_completion_response.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,12 @@
22

33
from typing import List, Optional
44

5+
from ..metric import Metric
56
from ..._models import BaseModel
67
from .completion_message import CompletionMessage
78
from .shared_token_log_probs import SharedTokenLogProbs
89

9-
__all__ = ["ChatCompletionResponse", "Metric"]
10-
11-
12-
class Metric(BaseModel):
13-
metric: str
14-
"""The name of the metric"""
15-
16-
value: float
17-
"""The numeric value of the metric"""
18-
19-
unit: Optional[str] = None
20-
"""(Optional) The unit of measurement for the metric value"""
10+
__all__ = ["ChatCompletionResponse"]
2111

2212

2313
class ChatCompletionResponse(BaseModel):

0 commit comments

Comments
 (0)