425 lines
13 KiB
Python
425 lines
13 KiB
Python
|
|
"""Main entrypoint into package."""
|
||
|
|
|
||
|
|
import warnings
|
||
|
|
from importlib import metadata
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
from langchain_core._api.deprecation import surface_langchain_deprecation_warnings
|
||
|
|
|
||
|
|
try:
|
||
|
|
__version__ = metadata.version(__package__)
|
||
|
|
except metadata.PackageNotFoundError:
|
||
|
|
# Case where package metadata is not available.
|
||
|
|
__version__ = ""
|
||
|
|
del metadata # optional, avoids polluting the results of dir(__package__)
|
||
|
|
|
||
|
|
|
||
|
|
def _warn_on_import(name: str, replacement: str | None = None) -> None:
|
||
|
|
"""Warn on import of deprecated module."""
|
||
|
|
from langchain_classic._api.interactive_env import is_interactive_env
|
||
|
|
|
||
|
|
if is_interactive_env():
|
||
|
|
# No warnings for interactive environments.
|
||
|
|
# This is done to avoid polluting the output of interactive environments
|
||
|
|
# where users rely on auto-complete and may trigger this warning
|
||
|
|
# even if they are not using any deprecated modules
|
||
|
|
return
|
||
|
|
|
||
|
|
if replacement:
|
||
|
|
warnings.warn(
|
||
|
|
f"Importing {name} from langchain root module is no longer supported. "
|
||
|
|
f"Please use {replacement} instead.",
|
||
|
|
stacklevel=3,
|
||
|
|
)
|
||
|
|
else:
|
||
|
|
warnings.warn(
|
||
|
|
f"Importing {name} from langchain root module is no longer supported.",
|
||
|
|
stacklevel=3,
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
# Surfaces Deprecation and Pending Deprecation warnings from langchain_classic.
|
||
|
|
surface_langchain_deprecation_warnings()
|
||
|
|
|
||
|
|
|
||
|
|
def __getattr__(name: str) -> Any:
|
||
|
|
if name == "MRKLChain":
|
||
|
|
from langchain_classic.agents import MRKLChain
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.agents.MRKLChain")
|
||
|
|
|
||
|
|
return MRKLChain
|
||
|
|
if name == "ReActChain":
|
||
|
|
from langchain_classic.agents import ReActChain
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.agents.ReActChain")
|
||
|
|
|
||
|
|
return ReActChain
|
||
|
|
if name == "SelfAskWithSearchChain":
|
||
|
|
from langchain_classic.agents import SelfAskWithSearchChain
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name, replacement="langchain_classic.agents.SelfAskWithSearchChain"
|
||
|
|
)
|
||
|
|
|
||
|
|
return SelfAskWithSearchChain
|
||
|
|
if name == "ConversationChain":
|
||
|
|
from langchain_classic.chains import ConversationChain
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.chains.ConversationChain")
|
||
|
|
|
||
|
|
return ConversationChain
|
||
|
|
if name == "LLMBashChain":
|
||
|
|
msg = (
|
||
|
|
"This module has been moved to langchain-experimental. "
|
||
|
|
"For more details: "
|
||
|
|
"https://github.com/langchain-ai/langchain/discussions/11352."
|
||
|
|
"To access this code, install it with `pip install langchain-experimental`."
|
||
|
|
"`from langchain_experimental.llm_bash.base "
|
||
|
|
"import LLMBashChain`"
|
||
|
|
)
|
||
|
|
raise ImportError(msg)
|
||
|
|
|
||
|
|
if name == "LLMChain":
|
||
|
|
from langchain_classic.chains import LLMChain
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.chains.LLMChain")
|
||
|
|
|
||
|
|
return LLMChain
|
||
|
|
if name == "LLMCheckerChain":
|
||
|
|
from langchain_classic.chains import LLMCheckerChain
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.chains.LLMCheckerChain")
|
||
|
|
|
||
|
|
return LLMCheckerChain
|
||
|
|
if name == "LLMMathChain":
|
||
|
|
from langchain_classic.chains import LLMMathChain
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.chains.LLMMathChain")
|
||
|
|
|
||
|
|
return LLMMathChain
|
||
|
|
if name == "QAWithSourcesChain":
|
||
|
|
from langchain_classic.chains import QAWithSourcesChain
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.chains.QAWithSourcesChain")
|
||
|
|
|
||
|
|
return QAWithSourcesChain
|
||
|
|
if name == "VectorDBQA":
|
||
|
|
from langchain_classic.chains import VectorDBQA
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.chains.VectorDBQA")
|
||
|
|
|
||
|
|
return VectorDBQA
|
||
|
|
if name == "VectorDBQAWithSourcesChain":
|
||
|
|
from langchain_classic.chains import VectorDBQAWithSourcesChain
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name, replacement="langchain_classic.chains.VectorDBQAWithSourcesChain"
|
||
|
|
)
|
||
|
|
|
||
|
|
return VectorDBQAWithSourcesChain
|
||
|
|
if name == "InMemoryDocstore":
|
||
|
|
from langchain_community.docstore import InMemoryDocstore
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.docstore.InMemoryDocstore")
|
||
|
|
|
||
|
|
return InMemoryDocstore
|
||
|
|
if name == "Wikipedia":
|
||
|
|
from langchain_community.docstore import Wikipedia
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_classic.docstore.Wikipedia")
|
||
|
|
|
||
|
|
return Wikipedia
|
||
|
|
if name == "Anthropic":
|
||
|
|
from langchain_community.llms import Anthropic
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.Anthropic")
|
||
|
|
|
||
|
|
return Anthropic
|
||
|
|
if name == "Banana":
|
||
|
|
from langchain_community.llms import Banana
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.Banana")
|
||
|
|
|
||
|
|
return Banana
|
||
|
|
if name == "CerebriumAI":
|
||
|
|
from langchain_community.llms import CerebriumAI
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.CerebriumAI")
|
||
|
|
|
||
|
|
return CerebriumAI
|
||
|
|
if name == "Cohere":
|
||
|
|
from langchain_community.llms import Cohere
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.Cohere")
|
||
|
|
|
||
|
|
return Cohere
|
||
|
|
if name == "ForefrontAI":
|
||
|
|
from langchain_community.llms import ForefrontAI
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.ForefrontAI")
|
||
|
|
|
||
|
|
return ForefrontAI
|
||
|
|
if name == "GooseAI":
|
||
|
|
from langchain_community.llms import GooseAI
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.GooseAI")
|
||
|
|
|
||
|
|
return GooseAI
|
||
|
|
if name == "HuggingFaceHub":
|
||
|
|
from langchain_community.llms import HuggingFaceHub
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.HuggingFaceHub")
|
||
|
|
|
||
|
|
return HuggingFaceHub
|
||
|
|
if name == "HuggingFaceTextGenInference":
|
||
|
|
from langchain_community.llms import HuggingFaceTextGenInference
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.llms.HuggingFaceTextGenInference",
|
||
|
|
)
|
||
|
|
|
||
|
|
return HuggingFaceTextGenInference
|
||
|
|
if name == "LlamaCpp":
|
||
|
|
from langchain_community.llms import LlamaCpp
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.LlamaCpp")
|
||
|
|
|
||
|
|
return LlamaCpp
|
||
|
|
if name == "Modal":
|
||
|
|
from langchain_community.llms import Modal
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.Modal")
|
||
|
|
|
||
|
|
return Modal
|
||
|
|
if name == "OpenAI":
|
||
|
|
from langchain_community.llms import OpenAI
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.OpenAI")
|
||
|
|
|
||
|
|
return OpenAI
|
||
|
|
if name == "Petals":
|
||
|
|
from langchain_community.llms import Petals
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.Petals")
|
||
|
|
|
||
|
|
return Petals
|
||
|
|
if name == "PipelineAI":
|
||
|
|
from langchain_community.llms import PipelineAI
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.PipelineAI")
|
||
|
|
|
||
|
|
return PipelineAI
|
||
|
|
if name == "SagemakerEndpoint":
|
||
|
|
from langchain_community.llms import SagemakerEndpoint
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.SagemakerEndpoint")
|
||
|
|
|
||
|
|
return SagemakerEndpoint
|
||
|
|
if name == "StochasticAI":
|
||
|
|
from langchain_community.llms import StochasticAI
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.StochasticAI")
|
||
|
|
|
||
|
|
return StochasticAI
|
||
|
|
if name == "Writer":
|
||
|
|
from langchain_community.llms import Writer
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.llms.Writer")
|
||
|
|
|
||
|
|
return Writer
|
||
|
|
if name == "HuggingFacePipeline":
|
||
|
|
from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.llms.huggingface_pipeline.HuggingFacePipeline",
|
||
|
|
)
|
||
|
|
|
||
|
|
return HuggingFacePipeline
|
||
|
|
if name == "FewShotPromptTemplate":
|
||
|
|
from langchain_core.prompts import FewShotPromptTemplate
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_core.prompts.FewShotPromptTemplate",
|
||
|
|
)
|
||
|
|
|
||
|
|
return FewShotPromptTemplate
|
||
|
|
if name == "Prompt":
|
||
|
|
from langchain_core.prompts import PromptTemplate
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_core.prompts.PromptTemplate")
|
||
|
|
|
||
|
|
# it's renamed as prompt template anyways
|
||
|
|
# this is just for backwards compat
|
||
|
|
return PromptTemplate
|
||
|
|
if name == "PromptTemplate":
|
||
|
|
from langchain_core.prompts import PromptTemplate
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_core.prompts.PromptTemplate")
|
||
|
|
|
||
|
|
return PromptTemplate
|
||
|
|
if name == "BasePromptTemplate":
|
||
|
|
from langchain_core.prompts import BasePromptTemplate
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_core.prompts.BasePromptTemplate")
|
||
|
|
|
||
|
|
return BasePromptTemplate
|
||
|
|
if name == "ArxivAPIWrapper":
|
||
|
|
from langchain_community.utilities import ArxivAPIWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.ArxivAPIWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return ArxivAPIWrapper
|
||
|
|
if name == "GoldenQueryAPIWrapper":
|
||
|
|
from langchain_community.utilities import GoldenQueryAPIWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.GoldenQueryAPIWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return GoldenQueryAPIWrapper
|
||
|
|
if name == "GoogleSearchAPIWrapper":
|
||
|
|
from langchain_community.utilities import GoogleSearchAPIWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.GoogleSearchAPIWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return GoogleSearchAPIWrapper
|
||
|
|
if name == "GoogleSerperAPIWrapper":
|
||
|
|
from langchain_community.utilities import GoogleSerperAPIWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.GoogleSerperAPIWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return GoogleSerperAPIWrapper
|
||
|
|
if name == "PowerBIDataset":
|
||
|
|
from langchain_community.utilities import PowerBIDataset
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.PowerBIDataset",
|
||
|
|
)
|
||
|
|
|
||
|
|
return PowerBIDataset
|
||
|
|
if name == "SearxSearchWrapper":
|
||
|
|
from langchain_community.utilities import SearxSearchWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.SearxSearchWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return SearxSearchWrapper
|
||
|
|
if name == "WikipediaAPIWrapper":
|
||
|
|
from langchain_community.utilities import WikipediaAPIWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.WikipediaAPIWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return WikipediaAPIWrapper
|
||
|
|
if name == "WolframAlphaAPIWrapper":
|
||
|
|
from langchain_community.utilities import WolframAlphaAPIWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.WolframAlphaAPIWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return WolframAlphaAPIWrapper
|
||
|
|
if name == "SQLDatabase":
|
||
|
|
from langchain_community.utilities import SQLDatabase
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.utilities.SQLDatabase")
|
||
|
|
|
||
|
|
return SQLDatabase
|
||
|
|
if name == "FAISS":
|
||
|
|
from langchain_community.vectorstores import FAISS
|
||
|
|
|
||
|
|
_warn_on_import(name, replacement="langchain_community.vectorstores.FAISS")
|
||
|
|
|
||
|
|
return FAISS
|
||
|
|
if name == "ElasticVectorSearch":
|
||
|
|
from langchain_community.vectorstores import ElasticVectorSearch
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.vectorstores.ElasticVectorSearch",
|
||
|
|
)
|
||
|
|
|
||
|
|
return ElasticVectorSearch
|
||
|
|
# For backwards compatibility
|
||
|
|
if name in {"SerpAPIChain", "SerpAPIWrapper"}:
|
||
|
|
from langchain_community.utilities import SerpAPIWrapper
|
||
|
|
|
||
|
|
_warn_on_import(
|
||
|
|
name,
|
||
|
|
replacement="langchain_community.utilities.SerpAPIWrapper",
|
||
|
|
)
|
||
|
|
|
||
|
|
return SerpAPIWrapper
|
||
|
|
msg = f"Could not find: {name}"
|
||
|
|
raise AttributeError(msg)
|
||
|
|
|
||
|
|
|
||
|
|
__all__ = [
|
||
|
|
"FAISS",
|
||
|
|
"Anthropic",
|
||
|
|
"ArxivAPIWrapper",
|
||
|
|
"Banana",
|
||
|
|
"BasePromptTemplate",
|
||
|
|
"CerebriumAI",
|
||
|
|
"Cohere",
|
||
|
|
"ConversationChain",
|
||
|
|
"ElasticVectorSearch",
|
||
|
|
"FewShotPromptTemplate",
|
||
|
|
"ForefrontAI",
|
||
|
|
"GoldenQueryAPIWrapper",
|
||
|
|
"GoogleSearchAPIWrapper",
|
||
|
|
"GoogleSerperAPIWrapper",
|
||
|
|
"GooseAI",
|
||
|
|
"HuggingFaceHub",
|
||
|
|
"HuggingFacePipeline",
|
||
|
|
"HuggingFaceTextGenInference",
|
||
|
|
"InMemoryDocstore",
|
||
|
|
"LLMChain",
|
||
|
|
"LLMCheckerChain",
|
||
|
|
"LLMMathChain",
|
||
|
|
"LlamaCpp",
|
||
|
|
"MRKLChain",
|
||
|
|
"Modal",
|
||
|
|
"OpenAI",
|
||
|
|
"Petals",
|
||
|
|
"PipelineAI",
|
||
|
|
"PowerBIDataset",
|
||
|
|
"Prompt",
|
||
|
|
"PromptTemplate",
|
||
|
|
"QAWithSourcesChain",
|
||
|
|
"ReActChain",
|
||
|
|
"SQLDatabase",
|
||
|
|
"SagemakerEndpoint",
|
||
|
|
"SearxSearchWrapper",
|
||
|
|
"SelfAskWithSearchChain",
|
||
|
|
"SerpAPIChain",
|
||
|
|
"SerpAPIWrapper",
|
||
|
|
"StochasticAI",
|
||
|
|
"VectorDBQA",
|
||
|
|
"VectorDBQAWithSourcesChain",
|
||
|
|
"Wikipedia",
|
||
|
|
"WikipediaAPIWrapper",
|
||
|
|
"WolframAlphaAPIWrapper",
|
||
|
|
"Writer",
|
||
|
|
]
|