Skip to content

Commit 52375df

Browse files
Fix setting otel tracing provider (#1594)
### Purpose We should use the global otel tracing provider if it's set outside of LangSmith
1 parent 5d7b90f commit 52375df

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

python/langsmith/client.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -623,10 +623,25 @@ def __init__(
623623
"LANGSMITH_OTEL_ENABLED is set but OpenTelemetry packages are not installed. "
624624
"Install with `pip install langsmith[otel]`"
625625
)
626+
existing_provider = otel_trace.get_tracer_provider()
627+
tracer = existing_provider.get_tracer(__name__)
626628
if otel_tracer_provider is None:
627-
otel_tracer_provider = get_otlp_tracer_provider()
628-
# Set as global tracer provider if we're creating a new one
629-
otel_trace.set_tracer_provider(otel_tracer_provider)
629+
# Use existing global provider if available
630+
if not (
631+
isinstance(existing_provider, otel_trace.ProxyTracerProvider)
632+
and hasattr(tracer, "_tracer")
633+
and isinstance(
634+
cast(
635+
otel_trace.ProxyTracer,
636+
tracer,
637+
)._tracer,
638+
otel_trace.NoOpTracer,
639+
)
640+
):
641+
otel_tracer_provider = cast(TracerProvider, existing_provider)
642+
else:
643+
otel_tracer_provider = get_otlp_tracer_provider()
644+
otel_trace.set_tracer_provider(otel_tracer_provider)
630645

631646
self.otel_exporter = OTELExporter(tracer_provider=otel_tracer_provider)
632647

0 commit comments

Comments
 (0)