Skip to content

Commit 9a5cba5

Browse files
committed
refactor(openai): Use shared genai-utils helpers for metric creation
Move metric histogram creation to use create_duration_histogram, create_token_histogram, and create_ttft_histogram from opentelemetry.util.genai.instruments instead of defining bucket boundaries and creating histograms inline. This aligns with the pattern of keeping common metric definitions in genai-utils rather than individual instrumentations.
1 parent 40ac7e3 commit 9a5cba5

1 file changed

Lines changed: 6 additions & 55 deletions

File tree

  • instrumentation-genai/opentelemetry-instrumentation-openai-v2/src/opentelemetry/instrumentation/openai_v2
Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,13 @@
11
from opentelemetry.metrics import Histogram, Meter
2-
from opentelemetry.semconv._incubating.metrics import gen_ai_metrics
32
from opentelemetry.util.genai.instruments import (
4-
GEN_AI_CLIENT_TIME_TO_FIRST_TOKEN,
5-
GEN_AI_CLIENT_TIME_TO_FIRST_TOKEN_BUCKETS,
3+
create_duration_histogram,
4+
create_token_histogram,
5+
create_ttft_histogram,
66
)
77

8-
_GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS = [
9-
0.01,
10-
0.02,
11-
0.04,
12-
0.08,
13-
0.16,
14-
0.32,
15-
0.64,
16-
1.28,
17-
2.56,
18-
5.12,
19-
10.24,
20-
20.48,
21-
40.96,
22-
81.92,
23-
]
24-
25-
_GEN_AI_CLIENT_TOKEN_USAGE_BUCKETS = [
26-
1,
27-
4,
28-
16,
29-
64,
30-
256,
31-
1024,
32-
4096,
33-
16384,
34-
65536,
35-
262144,
36-
1048576,
37-
4194304,
38-
16777216,
39-
67108864,
40-
]
41-
428

439
class Instruments:
4410
def __init__(self, meter: Meter):
45-
self.operation_duration_histogram: Histogram = meter.create_histogram(
46-
name=gen_ai_metrics.GEN_AI_CLIENT_OPERATION_DURATION,
47-
description="GenAI operation duration",
48-
unit="s",
49-
explicit_bucket_boundaries_advisory=_GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS,
50-
)
51-
self.token_usage_histogram: Histogram = meter.create_histogram(
52-
name=gen_ai_metrics.GEN_AI_CLIENT_TOKEN_USAGE,
53-
description="Measures number of input and output tokens used",
54-
unit="{token}",
55-
explicit_bucket_boundaries_advisory=_GEN_AI_CLIENT_TOKEN_USAGE_BUCKETS,
56-
)
57-
self.ttft_histogram: Histogram = meter.create_histogram(
58-
name=GEN_AI_CLIENT_TIME_TO_FIRST_TOKEN,
59-
description="Time to generate first token for successful responses",
60-
unit="s",
61-
explicit_bucket_boundaries_advisory=GEN_AI_CLIENT_TIME_TO_FIRST_TOKEN_BUCKETS,
62-
)
11+
self.operation_duration_histogram: Histogram = create_duration_histogram(meter)
12+
self.token_usage_histogram: Histogram = create_token_histogram(meter)
13+
self.ttft_histogram: Histogram = create_ttft_histogram(meter)

0 commit comments

Comments
 (0)