Skip to content

Commit f07c61f

Browse files
committed
refactor: move tracer to generator, clean up dead code
1 parent 80c94bf commit f07c61f

File tree

2 files changed

+14
-26
lines changed

2 files changed

+14
-26
lines changed

util/opentelemetry-util-genai/src/opentelemetry/util/genai/generators.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,31 +31,26 @@
3131
follow the GenAI semantic conventions.
3232
"""
3333

34-
from contextvars import Token
35-
from typing import Dict, Optional
36-
from uuid import UUID
37-
38-
from typing_extensions import TypeAlias
34+
from typing import Any
3935

4036
from opentelemetry import context as otel_context
4137
from opentelemetry import trace
4238
from opentelemetry.semconv._incubating.attributes import (
4339
gen_ai_attributes as GenAI,
4440
)
41+
from opentelemetry.semconv.schemas import Schemas
4542
from opentelemetry.trace import (
46-
Span,
4743
SpanKind,
4844
Tracer,
45+
get_tracer,
4946
set_span_in_context,
5047
)
5148
from opentelemetry.util.genai.span_utils import (
5249
_apply_error_attributes,
5350
_apply_finish_attributes,
5451
)
5552
from opentelemetry.util.genai.types import Error, LLMInvocation
56-
57-
# Type alias matching the token type expected by opentelemetry.context.detach
58-
ContextToken: TypeAlias = Token[otel_context.Context]
53+
from opentelemetry.util.genai.version import __version__
5954

6055

6156
class BaseTelemetryGenerator:
@@ -80,13 +75,17 @@ class SpanGenerator(BaseTelemetryGenerator):
8075

8176
def __init__(
8277
self,
83-
tracer: Optional[Tracer] = None,
78+
**kwargs: Any,
8479
):
80+
tracer_provider = kwargs.get("tracer_provider")
81+
tracer = get_tracer(
82+
__name__,
83+
__version__,
84+
tracer_provider,
85+
schema_url=Schemas.V1_36_0.value,
86+
)
8587
self._tracer: Tracer = tracer or trace.get_tracer(__name__)
8688

87-
# Store the active span and its context attachment token
88-
self._active: Dict[UUID, tuple[Span, ContextToken]] = {}
89-
9089
def start(self, invocation: LLMInvocation):
9190
# Create a span and attach it as current; keep the token to detach later
9291
if not (invocation.request_model and invocation.request_model.strip()):

util/opentelemetry-util-genai/src/opentelemetry/util/genai/handler.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,8 @@
5454
from contextlib import contextmanager
5555
from typing import Any, Iterator, Optional
5656

57-
from opentelemetry.semconv.schemas import Schemas
58-
from opentelemetry.trace import get_tracer
5957
from opentelemetry.util.genai.generators import SpanGenerator
6058
from opentelemetry.util.genai.types import Error, LLMInvocation
61-
from opentelemetry.util.genai.version import __version__
6259

6360

6461
class TelemetryHandler:
@@ -68,15 +65,7 @@ class TelemetryHandler:
6865
"""
6966

7067
def __init__(self, **kwargs: Any):
71-
tracer_provider = kwargs.get("tracer_provider")
72-
self._tracer = get_tracer(
73-
__name__,
74-
__version__,
75-
tracer_provider,
76-
schema_url=Schemas.V1_36_0.value,
77-
)
78-
79-
self._generator = SpanGenerator(tracer=self._tracer)
68+
self._generator = SpanGenerator(**kwargs)
8069

8170
@contextmanager
8271
def llm(self, invocation: LLMInvocation) -> Iterator[LLMInvocation]:
@@ -91,7 +80,7 @@ def llm(self, invocation: LLMInvocation) -> Iterator[LLMInvocation]:
9180
self._generator.start(invocation)
9281
try:
9382
yield invocation
94-
except BaseException as exc: # noqa: B902 - ensure we capture all exceptions incl. SystemExit, KeyboardInterrupt
83+
except Exception as exc: # noqa: B902 - ensure we capture all exceptions incl. SystemExit, KeyboardInterrupt
9584
invocation.end_time = time.time()
9685
self._generator.error(
9786
Error(message=str(exc), type=type(exc)), invocation

0 commit comments

Comments
 (0)