Skip to content

Commit 399a014

Browse files
authored
Merge pull request #1 from ishaanagw/create-metrics-refactor
enhancement(create_metrics_refactor)
2 parents 7401807 + 67696ca commit 399a014

File tree

3 files changed

+28
-36
lines changed
  • packages
    • opentelemetry-instrumentation-anthropic/opentelemetry/instrumentation/anthropic
    • opentelemetry-instrumentation-groq/opentelemetry/instrumentation/groq
    • opentelemetry-semantic-conventions-ai/opentelemetry/semconv_ai

3 files changed

+28
-36
lines changed

packages/opentelemetry-instrumentation-anthropic/opentelemetry/instrumentation/anthropic/__init__.py

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
LLMRequestTypeValues,
3030
SpanAttributes,
3131
Meters,
32+
MetricUtils,
3233
)
3334
from opentelemetry.trace import SpanKind, Tracer, get_tracer
3435
from opentelemetry.trace.status import Status, StatusCode
@@ -372,24 +373,8 @@ def wrapper(wrapped, instance, args, kwargs):
372373

373374

374375
def _create_metrics(meter: Meter):
375-
token_histogram = meter.create_histogram(
376-
name=Meters.LLM_TOKEN_USAGE,
377-
unit="token",
378-
description="Measures number of input and output tokens used",
379-
)
380-
381-
choice_counter = meter.create_counter(
382-
name=Meters.LLM_GENERATION_CHOICES,
383-
unit="choice",
384-
description="Number of choices returned by chat completions call",
385-
)
386-
387-
duration_histogram = meter.create_histogram(
388-
name=Meters.LLM_OPERATION_DURATION,
389-
unit="s",
390-
description="GenAI operation duration",
391-
)
392-
376+
token_histogram, choice_counter, duration_histogram = MetricUtils.basic_metrics(meter)
377+
393378
exception_counter = meter.create_counter(
394379
name=Meters.LLM_ANTHROPIC_COMPLETION_EXCEPTIONS,
395380
unit="time",

packages/opentelemetry-instrumentation-groq/opentelemetry/instrumentation/groq/__init__.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
LLMRequestTypeValues,
2727
SpanAttributes,
2828
Meters,
29+
MetricUtils,
2930
)
3031
from opentelemetry.trace import SpanKind, Tracer, get_tracer
3132
from opentelemetry.trace.status import Status, StatusCode
@@ -245,24 +246,7 @@ def wrapper(wrapped, instance, args, kwargs):
245246

246247

247248
def _create_metrics(meter: Meter):
248-
token_histogram = meter.create_histogram(
249-
name=Meters.LLM_TOKEN_USAGE,
250-
unit="token",
251-
description="Measures number of input and output tokens used",
252-
)
253-
254-
choice_counter = meter.create_counter(
255-
name=Meters.LLM_GENERATION_CHOICES,
256-
unit="choice",
257-
description="Number of choices returned by chat completions call",
258-
)
259-
260-
duration_histogram = meter.create_histogram(
261-
name=Meters.LLM_OPERATION_DURATION,
262-
unit="s",
263-
description="GenAI operation duration",
264-
)
265-
249+
token_histogram, choice_counter, duration_histogram = MetricUtils.basic_metrics(meter)
266250
return token_histogram, choice_counter, duration_histogram
267251

268252

packages/opentelemetry-semantic-conventions-ai/opentelemetry/semconv_ai/__init__.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,26 @@ class TraceloopSpanKindValues(Enum):
236236
AGENT = "agent"
237237
TOOL = "tool"
238238
UNKNOWN = "unknown"
239+
240+
class MetricUtils:
241+
242+
def basic_metrics(meter):
243+
token_histogram = meter.create_histogram(
244+
name=Meters.LLM_TOKEN_USAGE,
245+
unit="token",
246+
description="Measures number of input and output tokens used",
247+
)
248+
249+
choice_counter = meter.create_counter(
250+
name=Meters.LLM_GENERATION_CHOICES,
251+
unit="choice",
252+
description="Number of choices returned by chat completions call",
253+
)
254+
255+
duration_histogram = meter.create_histogram(
256+
name=Meters.LLM_OPERATION_DURATION,
257+
unit="s",
258+
description="GenAI operation duration",
259+
)
260+
261+
return token_histogram, choice_counter, duration_histogram

0 commit comments

Comments
 (0)