Skip to content

Commit 4c3c0f3

Browse files
committed
feat(langchain): align tracer with genai semantic spec
1 parent 34db73e commit 4c3c0f3

File tree

4 files changed

+1557
-181
lines changed

4 files changed

+1557
-181
lines changed

instrumentation-genai/opentelemetry-instrumentation-langchain/src/opentelemetry/instrumentation/langchain/__init__.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
---
3737
"""
3838

39+
import os
3940
from typing import Any, Callable, Collection
4041

4142
from langchain_core.callbacks import BaseCallbackHandler # type: ignore
@@ -72,6 +73,7 @@ def _instrument(self, **kwargs: Any):
7273
Enable Langchain instrumentation.
7374
"""
7475
tracer_provider = kwargs.get("tracer_provider")
76+
capture_messages = self._resolve_capture_messages(kwargs)
7577
tracer = get_tracer(
7678
__name__,
7779
__version__,
@@ -81,6 +83,9 @@ def _instrument(self, **kwargs: Any):
8183

8284
otel_callback_handler = OpenTelemetryLangChainCallbackHandler(
8385
tracer=tracer,
86+
capture_messages=capture_messages,
87+
provider_name=kwargs.get("provider_name"),
88+
agent_id=kwargs.get("agent_id"),
8489
)
8590

8691
wrap_function_wrapper(
@@ -95,6 +100,18 @@ def _uninstrument(self, **kwargs: Any):
95100
"""
96101
unwrap("langchain_core.callbacks.base.BaseCallbackManager", "__init__")
97102

103+
def _resolve_capture_messages(self, kwargs: dict[str, Any]) -> bool:
104+
if "capture_messages" in kwargs:
105+
return bool(kwargs["capture_messages"])
106+
107+
env_value = os.getenv(
108+
"OTEL_INSTRUMENTATION_LANGCHAIN_CAPTURE_MESSAGES"
109+
)
110+
if env_value is not None:
111+
return env_value.lower() in ("1", "true", "yes", "on")
112+
113+
return True
114+
98115

99116
class _BaseCallbackManagerInitWrapper:
100117
"""

0 commit comments

Comments
 (0)