Skip to content
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
344e2d7
chore: bump otel deps to 0.58b0
nagkumar91 Oct 7, 2025
c1c74ff
feat: enrich langchain spans with genai metadata
nagkumar91 Oct 7, 2025
33ead3a
refactor: support chat span without request model
nagkumar91 Oct 7, 2025
669ace4
test: cover azure span provider metadata
nagkumar91 Oct 7, 2025
8b6937c
test: add callback handler unit coverage
nagkumar91 Oct 7, 2025
489ff2d
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 7, 2025
96889d7
docs: note langchain genai schema update
nagkumar91 Oct 7, 2025
3ae8264
update with precommit fixes
nagkumar91 Oct 7, 2025
eb20620
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 8, 2025
0e05bef
feat: capture langchain message content by default
nagkumar91 Oct 8, 2025
48f5e3a
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 9, 2025
b82dd71
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 10, 2025
f97ef77
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 13, 2025
cdd3487
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 13, 2025
476c86e
Fix pyright typing for LangChain instrumentation
nagkumar91 Oct 14, 2025
3ac649a
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 14, 2025
e55b1b3
Improve LangChain stub typing and typecheck config
nagkumar91 Oct 14, 2025
fa1f16d
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 14, 2025
5e28f79
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 15, 2025
fadcf7d
Rename LangChain instrumentation package to v2
nagkumar91 Oct 16, 2025
2343707
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 16, 2025
b028c75
Register LangChain v2 bootstrap mapping
nagkumar91 Oct 16, 2025
af3bc15
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 16, 2025
0d4cfd7
tox -e generate
nagkumar91 Oct 16, 2025
aef0792
chore: update configs and docs
nagkumar91 Oct 16, 2025
4c81201
tox generate
nagkumar91 Oct 16, 2025
8930c0d
ignore the typecheck as its failing only on 3.9
nagkumar91 Oct 16, 2025
1c1e875
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 16, 2025
81e3241
Merge branch 'main' into feature/genai-genai-spec-updates
nagkumar91 Oct 17, 2025
992dfff
Revert "tox generate"
nagkumar91 Oct 20, 2025
a632d3b
Revert "chore: update configs and docs"
nagkumar91 Oct 20, 2025
4cef9b0
Revert "Register LangChain v2 bootstrap mapping"
nagkumar91 Oct 20, 2025
32c7320
Revert "Rename LangChain instrumentation package to v2"
nagkumar91 Oct 20, 2025
abd719f
feat: add multi-agent sample and tool spans
nagkumar91 Oct 20, 2025
c626a5e
Update LangChain instrumentation and samples for 1.x
nagkumar91 Oct 21, 2025
44f4c1d
Switch tests and samples to gpt-4.1 and refresh VCR cassettes
nagkumar91 Oct 21, 2025
06bcda0
tox -e generate
nagkumar91 Oct 21, 2025
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 @@ -8,4 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased

- Added span support for genAI langchain llm invocation.
([#3665](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3665))
([#3665](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3665))
- Align LangChain instrumentation with GenAI schema 1.37.0 and add unit coverage for updated metadata.
([#3813](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3813))
- Capture GenAI input/output messages on spans by default with opt-out control.
([#3813](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3813))
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ classifiers = [
]
dependencies = [
"opentelemetry-api >= 1.31.0",
"opentelemetry-instrumentation ~= 0.57b0",
"opentelemetry-semantic-conventions ~= 0.57b0"
"opentelemetry-instrumentation ~= 0.58b0",
"opentelemetry-semantic-conventions ~= 0.58b0"
]

[project.optional-dependencies]
Expand All @@ -53,4 +53,3 @@ include = [

[tool.hatch.build.targets.wheel]
packages = ["src/opentelemetry"]

Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
---
"""

import os
from typing import Any, Callable, Collection

from langchain_core.callbacks import BaseCallbackHandler # type: ignore
Expand Down Expand Up @@ -72,6 +73,7 @@ def _instrument(self, **kwargs: Any):
Enable Langchain instrumentation.
"""
tracer_provider = kwargs.get("tracer_provider")
capture_messages = self._resolve_capture_messages(kwargs)
tracer = get_tracer(
__name__,
__version__,
Expand All @@ -81,6 +83,7 @@ def _instrument(self, **kwargs: Any):

otel_callback_handler = OpenTelemetryLangChainCallbackHandler(
tracer=tracer,
capture_messages=capture_messages,
)

wrap_function_wrapper(
Expand All @@ -95,6 +98,18 @@ def _uninstrument(self, **kwargs: Any):
"""
unwrap("langchain_core.callbacks.base.BaseCallbackManager", "__init__")

def _resolve_capture_messages(self, kwargs: dict[str, Any]) -> bool:
if "capture_messages" in kwargs:
return bool(kwargs["capture_messages"])

env_value = os.getenv(
"OTEL_INSTRUMENTATION_LANGCHAIN_CAPTURE_MESSAGES"
)
if env_value is not None:
return env_value.lower() in ("1", "true", "yes", "on")

return True


class _BaseCallbackManagerInitWrapper:
"""
Expand Down
Loading
Loading