Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions langfuse/_client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ class Langfuse:
mask (Optional[MaskFunction]): Function to mask sensitive data in traces before sending to the API.
blocked_instrumentation_scopes (Optional[List[str]]): List of instrumentation scope names to block from being exported to Langfuse. Spans from these scopes will be filtered out before being sent to the API. Useful for filtering out spans from specific libraries or frameworks. For exported spans, you can see the instrumentation scope name in the span metadata in Langfuse (`metadata.scope.name`)
additional_headers (Optional[Dict[str, str]]): Additional headers to include in all API requests and OTLPSpanExporter requests. These headers will be merged with default headers. Note: If httpx_client is provided, additional_headers must be set directly on your custom httpx_client as well.
tracer_provider(Optional[TracerProvider]): OpenTelemetry TracerProvider to use for Langfuse. This can be useful to set to have disconnected tracing between Langfuse and other OpenTelemetry-span emitting libraries. Note: To track active spans, the context is still shared between TracerProviders. This may lead to broken trace trees.

Example:
```python
Expand Down Expand Up @@ -165,6 +166,7 @@ def __init__(
mask: Optional[MaskFunction] = None,
blocked_instrumentation_scopes: Optional[List[str]] = None,
additional_headers: Optional[Dict[str, str]] = None,
tracer_provider: Optional[otel_trace_api.TracerProvider] = None,
):
self._host = host or os.environ.get(LANGFUSE_HOST, "https://cloud.langfuse.com")
self._environment = environment or os.environ.get(LANGFUSE_TRACING_ENVIRONMENT)
Expand Down Expand Up @@ -228,6 +230,7 @@ def __init__(
tracing_enabled=self._tracing_enabled,
blocked_instrumentation_scopes=blocked_instrumentation_scopes,
additional_headers=additional_headers,
tracer_provider=tracer_provider,
)
self._mask = self._resources.mask

Expand Down
6 changes: 4 additions & 2 deletions langfuse/_client/resource_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ def __new__(
tracing_enabled: Optional[bool] = None,
blocked_instrumentation_scopes: Optional[List[str]] = None,
additional_headers: Optional[Dict[str, str]] = None,
tracer_provider: Optional[TracerProvider] = None,
) -> "LangfuseResourceManager":
if public_key in cls._instances:
return cls._instances[public_key]
Expand All @@ -121,6 +122,7 @@ def __new__(
else True,
blocked_instrumentation_scopes=blocked_instrumentation_scopes,
additional_headers=additional_headers,
tracer_provider=tracer_provider,
)

cls._instances[public_key] = instance
Expand All @@ -145,6 +147,7 @@ def _initialize_instance(
tracing_enabled: bool = True,
blocked_instrumentation_scopes: Optional[List[str]] = None,
additional_headers: Optional[Dict[str, str]] = None,
tracer_provider: Optional[TracerProvider] = None,
):
self.public_key = public_key
self.secret_key = secret_key
Expand All @@ -154,7 +157,7 @@ def _initialize_instance(

# OTEL Tracer
if tracing_enabled:
tracer_provider = _init_tracer_provider(
tracer_provider = tracer_provider or _init_tracer_provider(
environment=environment, release=release, sample_rate=sample_rate
)

Expand All @@ -170,7 +173,6 @@ def _initialize_instance(
)
tracer_provider.add_span_processor(langfuse_processor)

tracer_provider = cast(TracerProvider, otel_trace_api.get_tracer_provider())
self._otel_tracer = tracer_provider.get_tracer(
LANGFUSE_TRACER_NAME,
langfuse_version,
Expand Down