mirror of
https://github.com/hwchase17/langchain.git
synced 2026-04-12 23:42:51 +00:00
add langchain
This commit is contained in:
@@ -183,8 +183,8 @@ class BaseLanguageModel(
|
||||
"""Pydantic V2 lifecycle hook called automatically after `__init__`.
|
||||
|
||||
Seeds `metadata["versions"]` with the installed `langchain-core`
|
||||
version so that every LLM trace carries the package version that
|
||||
produced it.
|
||||
(and `langchain`, if installed) versions so that every LLM trace
|
||||
carries the package versions that produced it.
|
||||
|
||||
Partner packages should **not** override this method. Instead, they
|
||||
should define a `@model_validator(mode="after")` that calls
|
||||
@@ -206,6 +206,13 @@ class BaseLanguageModel(
|
||||
|
||||
self._add_version("langchain-core", VERSION)
|
||||
|
||||
try:
|
||||
from importlib.metadata import version as pkg_version # noqa: PLC0415
|
||||
|
||||
self._add_version("langchain", pkg_version("langchain"))
|
||||
except Exception: # noqa: S110
|
||||
pass
|
||||
|
||||
def _add_version(self, pkg: str, version: str) -> None:
|
||||
"""Record a package version in `metadata.versions` for tracing.
|
||||
|
||||
@@ -216,7 +223,13 @@ class BaseLanguageModel(
|
||||
Example resulting metadata:
|
||||
|
||||
```python
|
||||
{"versions": {"langchain-core": "1.x.x", "langchain-openai": "1.x.x"}}
|
||||
{
|
||||
"versions": {
|
||||
"langchain-core": "1.x.x",
|
||||
"langchain": "1.x.x",
|
||||
"langchain-openai": "1.x.x",
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Args:
|
||||
|
||||
@@ -1312,6 +1312,36 @@ def test_add_version_with_non_dict_versions() -> None:
|
||||
assert "langchain-core" in llm.metadata["versions"]
|
||||
|
||||
|
||||
def test_langchain_version_in_metadata(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
"""When `langchain` is installed, its version appears in metadata."""
|
||||
monkeypatch.setattr(
|
||||
"importlib.metadata.version",
|
||||
lambda pkg: (
|
||||
"1.2.13"
|
||||
if pkg == "langchain"
|
||||
else (_ for _ in ()).throw(Exception(f"not found: {pkg}"))
|
||||
),
|
||||
)
|
||||
llm = FakeListChatModel(responses=["x"])
|
||||
assert llm.metadata is not None
|
||||
assert llm.metadata["versions"]["langchain"] == "1.2.13"
|
||||
assert "langchain-core" in llm.metadata["versions"]
|
||||
|
||||
|
||||
def test_langchain_version_missing_when_not_installed(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
"""When `langchain` is not installed, metadata.versions has no entry."""
|
||||
monkeypatch.setattr(
|
||||
"importlib.metadata.version",
|
||||
lambda pkg: (_ for _ in ()).throw(Exception(f"not found: {pkg}")),
|
||||
)
|
||||
llm = FakeListChatModel(responses=["x"])
|
||||
assert llm.metadata is not None
|
||||
assert "langchain" not in llm.metadata["versions"]
|
||||
assert "langchain-core" in llm.metadata["versions"]
|
||||
|
||||
|
||||
def test_model_profiles() -> None:
|
||||
model = GenericFakeChatModel(messages=iter([]))
|
||||
assert model.profile is None
|
||||
|
||||
Reference in New Issue
Block a user