Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,24 @@

import logging
from typing import Collection
from opentelemetry.instrumentation.langchain.config import Config
from wrapt import wrap_function_wrapper

from opentelemetry.trace import get_tracer

from opentelemetry._events import get_event_logger
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
from opentelemetry.instrumentation.utils import unwrap

from opentelemetry.instrumentation.langchain.version import __version__
from opentelemetry.instrumentation.langchain.utils import is_package_available


from opentelemetry.trace.propagation.tracecontext import (
TraceContextTextMapPropagator,
)
from opentelemetry.trace.propagation import set_span_in_context

from opentelemetry.instrumentation.langchain.callback_handler import (
TraceloopCallbackHandler,
)

from opentelemetry.instrumentation.langchain.config import Config
from opentelemetry.instrumentation.langchain.utils import is_package_available
from opentelemetry.instrumentation.langchain.version import __version__
from opentelemetry.instrumentation.utils import unwrap
from opentelemetry.metrics import get_meter
from opentelemetry.semconv_ai import Meters
from opentelemetry.trace import get_tracer
from opentelemetry.trace.propagation import set_span_in_context
from opentelemetry.trace.propagation.tracecontext import (
TraceContextTextMapPropagator,
)
from wrapt import wrap_function_wrapper

logger = logging.getLogger(__name__)

Expand All @@ -34,9 +29,15 @@
class LangchainInstrumentor(BaseInstrumentor):
"""An instrumentor for Langchain SDK."""

def __init__(self, exception_logger=None, disable_trace_context_propagation=False):
def __init__(
self,
exception_logger=None,
disable_trace_context_propagation=False,
use_legacy_attributes: bool = True,
):
super().__init__()
Config.exception_logger = exception_logger
Config.use_legacy_attributes = use_legacy_attributes
self.disable_trace_context_propagation = disable_trace_context_propagation

def instrumentation_dependencies(self) -> Collection[str]:
Expand Down Expand Up @@ -64,6 +65,12 @@ def _instrument(self, **kwargs):
description="Measures number of input and output tokens used",
)

if not Config.use_legacy_attributes:
event_logger_provider = kwargs.get("event_logger_provider")
Config.event_logger = get_event_logger(
__name__, __version__, event_logger_provider=event_logger_provider
)

traceloopCallbackHandler = TraceloopCallbackHandler(
tracer, duration_histogram, token_histogram
)
Expand Down Expand Up @@ -212,7 +219,6 @@ def __call__(
args,
kwargs,
) -> None:

run_manager = kwargs.get("run_manager")
if run_manager:
run_id = run_manager.run_id
Expand Down
Loading