mirror of
https://github.com/hwchase17/langchain
synced 2024-11-02 09:40:22 +00:00
d314acb2d5
Classes and functions defined in __init__.py are not parsed into the API Reference. For example: libs/core/langchain_core/globals/__init__.py : `set_verbose` `get_llm_cache`, `set_llm_cache`, ... And the whole `langchain_core.globals` namespace is not visible in the API Reference. The refactoring is just file renaming.
198 lines
8.2 KiB
Python
198 lines
8.2 KiB
Python
# flake8: noqa
|
|
"""Global values and configuration that apply to all of LangChain."""
|
|
import warnings
|
|
from typing import TYPE_CHECKING, Optional
|
|
|
|
if TYPE_CHECKING:
|
|
from langchain_core.caches import BaseCache
|
|
|
|
|
|
# DO NOT USE THESE VALUES DIRECTLY!
|
|
# Use them only via `get_<X>()` and `set_<X>()` below,
|
|
# or else your code may behave unexpectedly with other uses of these global settings:
|
|
# https://github.com/langchain-ai/langchain/pull/11311#issuecomment-1743780004
|
|
_verbose: bool = False
|
|
_debug: bool = False
|
|
_llm_cache: Optional["BaseCache"] = None
|
|
|
|
|
|
def set_verbose(value: bool) -> None:
|
|
"""Set a new value for the `verbose` global setting."""
|
|
try:
|
|
import langchain # type: ignore[import]
|
|
|
|
# We're about to run some deprecated code, don't report warnings from it.
|
|
# The user called the correct (non-deprecated) code path and shouldn't get warnings.
|
|
with warnings.catch_warnings():
|
|
warnings.filterwarnings(
|
|
"ignore",
|
|
message=(
|
|
"Importing verbose from langchain root module is no longer supported"
|
|
),
|
|
)
|
|
# N.B.: This is a workaround for an unfortunate quirk of Python's
|
|
# module-level `__getattr__()` implementation:
|
|
# https://github.com/langchain-ai/langchain/pull/11311#issuecomment-1743780004
|
|
#
|
|
# Remove it once `langchain.verbose` is no longer supported, and once all users
|
|
# have migrated to using `set_verbose()` here.
|
|
langchain.verbose = value
|
|
except ImportError:
|
|
pass
|
|
|
|
global _verbose
|
|
_verbose = value
|
|
|
|
|
|
def get_verbose() -> bool:
|
|
"""Get the value of the `verbose` global setting."""
|
|
try:
|
|
import langchain # type: ignore[import]
|
|
|
|
# We're about to run some deprecated code, don't report warnings from it.
|
|
# The user called the correct (non-deprecated) code path and shouldn't get warnings.
|
|
with warnings.catch_warnings():
|
|
warnings.filterwarnings(
|
|
"ignore",
|
|
message=(
|
|
".*Importing verbose from langchain root module is no longer supported"
|
|
),
|
|
)
|
|
# N.B.: This is a workaround for an unfortunate quirk of Python's
|
|
# module-level `__getattr__()` implementation:
|
|
# https://github.com/langchain-ai/langchain/pull/11311#issuecomment-1743780004
|
|
#
|
|
# Remove it once `langchain.verbose` is no longer supported, and once all users
|
|
# have migrated to using `set_verbose()` here.
|
|
#
|
|
# In the meantime, the `verbose` setting is considered True if either the old
|
|
# or the new value are True. This accommodates users who haven't migrated
|
|
# to using `set_verbose()` yet. Those users are getting deprecation warnings
|
|
# directing them to use `set_verbose()` when they import `langhchain.verbose`.
|
|
old_verbose = langchain.verbose
|
|
except ImportError:
|
|
old_verbose = False
|
|
|
|
global _verbose
|
|
return _verbose or old_verbose
|
|
|
|
|
|
def set_debug(value: bool) -> None:
|
|
"""Set a new value for the `debug` global setting."""
|
|
try:
|
|
import langchain # type: ignore[import]
|
|
|
|
# We're about to run some deprecated code, don't report warnings from it.
|
|
# The user called the correct (non-deprecated) code path and shouldn't get warnings.
|
|
with warnings.catch_warnings():
|
|
warnings.filterwarnings(
|
|
"ignore",
|
|
message="Importing debug from langchain root module is no longer supported",
|
|
)
|
|
# N.B.: This is a workaround for an unfortunate quirk of Python's
|
|
# module-level `__getattr__()` implementation:
|
|
# https://github.com/langchain-ai/langchain/pull/11311#issuecomment-1743780004
|
|
#
|
|
# Remove it once `langchain.debug` is no longer supported, and once all users
|
|
# have migrated to using `set_debug()` here.
|
|
langchain.debug = value
|
|
except ImportError:
|
|
pass
|
|
|
|
global _debug
|
|
_debug = value
|
|
|
|
|
|
def get_debug() -> bool:
|
|
"""Get the value of the `debug` global setting."""
|
|
try:
|
|
import langchain # type: ignore[import]
|
|
|
|
# We're about to run some deprecated code, don't report warnings from it.
|
|
# The user called the correct (non-deprecated) code path and shouldn't get warnings.
|
|
with warnings.catch_warnings():
|
|
warnings.filterwarnings(
|
|
"ignore",
|
|
message="Importing debug from langchain root module is no longer supported",
|
|
)
|
|
# N.B.: This is a workaround for an unfortunate quirk of Python's
|
|
# module-level `__getattr__()` implementation:
|
|
# https://github.com/langchain-ai/langchain/pull/11311#issuecomment-1743780004
|
|
#
|
|
# Remove it once `langchain.debug` is no longer supported, and once all users
|
|
# have migrated to using `set_debug()` here.
|
|
#
|
|
# In the meantime, the `debug` setting is considered True if either the old
|
|
# or the new value are True. This accommodates users who haven't migrated
|
|
# to using `set_debug()` yet. Those users are getting deprecation warnings
|
|
# directing them to use `set_debug()` when they import `langhchain.debug`.
|
|
old_debug = langchain.debug
|
|
except ImportError:
|
|
old_debug = False
|
|
|
|
global _debug
|
|
return _debug or old_debug
|
|
|
|
|
|
def set_llm_cache(value: Optional["BaseCache"]) -> None:
|
|
"""Set a new LLM cache, overwriting the previous value, if any."""
|
|
try:
|
|
import langchain # type: ignore[import]
|
|
|
|
# We're about to run some deprecated code, don't report warnings from it.
|
|
# The user called the correct (non-deprecated) code path and shouldn't get warnings.
|
|
with warnings.catch_warnings():
|
|
warnings.filterwarnings(
|
|
"ignore",
|
|
message=(
|
|
"Importing llm_cache from langchain root module is no longer supported"
|
|
),
|
|
)
|
|
# N.B.: This is a workaround for an unfortunate quirk of Python's
|
|
# module-level `__getattr__()` implementation:
|
|
# https://github.com/langchain-ai/langchain/pull/11311#issuecomment-1743780004
|
|
#
|
|
# Remove it once `langchain.llm_cache` is no longer supported, and
|
|
# once all users have migrated to using `set_llm_cache()` here.
|
|
langchain.llm_cache = value
|
|
except ImportError:
|
|
pass
|
|
|
|
global _llm_cache
|
|
_llm_cache = value
|
|
|
|
|
|
def get_llm_cache() -> "BaseCache":
|
|
"""Get the value of the `llm_cache` global setting."""
|
|
try:
|
|
import langchain # type: ignore[import]
|
|
|
|
# We're about to run some deprecated code, don't report warnings from it.
|
|
# The user called the correct (non-deprecated) code path and shouldn't get warnings.
|
|
with warnings.catch_warnings():
|
|
warnings.filterwarnings(
|
|
"ignore",
|
|
message=(
|
|
"Importing llm_cache from langchain root module is no longer supported"
|
|
),
|
|
)
|
|
# N.B.: This is a workaround for an unfortunate quirk of Python's
|
|
# module-level `__getattr__()` implementation:
|
|
# https://github.com/langchain-ai/langchain/pull/11311#issuecomment-1743780004
|
|
#
|
|
# Remove it once `langchain.llm_cache` is no longer supported, and
|
|
# once all users have migrated to using `set_llm_cache()` here.
|
|
#
|
|
# In the meantime, the `llm_cache` setting returns whichever of
|
|
# its two backing sources is truthy (not `None` and non-empty),
|
|
# or the old value if both are falsy. This accommodates users
|
|
# who haven't migrated to using `set_llm_cache()` yet.
|
|
# Those users are getting deprecation warnings directing them
|
|
# to use `set_llm_cache()` when they import `langhchain.llm_cache`.
|
|
old_llm_cache = langchain.llm_cache
|
|
except ImportError:
|
|
old_llm_cache = None
|
|
|
|
global _llm_cache
|
|
return _llm_cache or old_llm_cache
|