Skip to content

Commit

Permalink
langchain[minor]: add warnings when importing integrations (#15505)
Browse files Browse the repository at this point in the history
Should be imported from community directly
  • Loading branch information
baskaryan committed Jan 4, 2024
1 parent 1496658 commit f5e4f0b
Show file tree
Hide file tree
Showing 40 changed files with 556 additions and 2,564 deletions.
48 changes: 23 additions & 25 deletions libs/langchain/langchain/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,11 @@
del metadata # optional, avoids polluting the results of dir(__package__)


def _is_interactive_env() -> bool:
"""Determine if running within IPython or Jupyter."""
import sys

return hasattr(sys, "ps2")


def _warn_on_import(name: str, replacement: Optional[str] = None) -> None:
"""Warn on import of deprecated module."""
if _is_interactive_env():
from langchain.utils.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
Expand Down Expand Up @@ -131,104 +126,107 @@ def __getattr__(name: str) -> Any:
elif name == "Anthropic":
from langchain_community.llms import Anthropic

_warn_on_import(name, replacement="langchain.llms.Anthropic")
_warn_on_import(name, replacement="langchain_community.llms.Anthropic")

return Anthropic
elif name == "Banana":
from langchain_community.llms import Banana

_warn_on_import(name, replacement="langchain.llms.Banana")
_warn_on_import(name, replacement="langchain_community.llms.Banana")

return Banana
elif name == "CerebriumAI":
from langchain_community.llms import CerebriumAI

_warn_on_import(name, replacement="langchain.llms.CerebriumAI")
_warn_on_import(name, replacement="langchain_community.llms.CerebriumAI")

return CerebriumAI
elif name == "Cohere":
from langchain_community.llms import Cohere

_warn_on_import(name, replacement="langchain.llms.Cohere")
_warn_on_import(name, replacement="langchain_community.llms.Cohere")

return Cohere
elif name == "ForefrontAI":
from langchain_community.llms import ForefrontAI

_warn_on_import(name, replacement="langchain.llms.ForefrontAI")
_warn_on_import(name, replacement="langchain_community.llms.ForefrontAI")

return ForefrontAI
elif name == "GooseAI":
from langchain_community.llms import GooseAI

_warn_on_import(name, replacement="langchain.llms.GooseAI")
_warn_on_import(name, replacement="langchain_community.llms.GooseAI")

return GooseAI
elif name == "HuggingFaceHub":
from langchain_community.llms import HuggingFaceHub

_warn_on_import(name, replacement="langchain.llms.HuggingFaceHub")
_warn_on_import(name, replacement="langchain_community.llms.HuggingFaceHub")

return HuggingFaceHub
elif name == "HuggingFaceTextGenInference":
from langchain_community.llms import HuggingFaceTextGenInference

_warn_on_import(name, replacement="langchain.llms.HuggingFaceTextGenInference")
_warn_on_import(
name, replacement="langchain_community.llms.HuggingFaceTextGenInference"
)

return HuggingFaceTextGenInference
elif name == "LlamaCpp":
from langchain_community.llms import LlamaCpp

_warn_on_import(name, replacement="langchain.llms.LlamaCpp")
_warn_on_import(name, replacement="langchain_community.llms.LlamaCpp")

return LlamaCpp
elif name == "Modal":
from langchain_community.llms import Modal

_warn_on_import(name, replacement="langchain.llms.Modal")
_warn_on_import(name, replacement="langchain_community.llms.Modal")

return Modal
elif name == "OpenAI":
from langchain_community.llms import OpenAI

_warn_on_import(name, replacement="langchain.llms.OpenAI")
_warn_on_import(name, replacement="langchain_community.llms.OpenAI")

return OpenAI
elif name == "Petals":
from langchain_community.llms import Petals

_warn_on_import(name, replacement="langchain.llms.Petals")
_warn_on_import(name, replacement="langchain_community.llms.Petals")

return Petals
elif name == "PipelineAI":
from langchain_community.llms import PipelineAI

_warn_on_import(name, replacement="langchain.llms.PipelineAI")
_warn_on_import(name, replacement="langchain_community.llms.PipelineAI")

return PipelineAI
elif name == "SagemakerEndpoint":
from langchain_community.llms import SagemakerEndpoint

_warn_on_import(name, replacement="langchain.llms.SagemakerEndpoint")
_warn_on_import(name, replacement="langchain_community.llms.SagemakerEndpoint")

return SagemakerEndpoint
elif name == "StochasticAI":
from langchain_community.llms import StochasticAI

_warn_on_import(name, replacement="langchain.llms.StochasticAI")
_warn_on_import(name, replacement="langchain_community.llms.StochasticAI")

return StochasticAI
elif name == "Writer":
from langchain_community.llms import Writer

_warn_on_import(name, replacement="langchain.llms.Writer")
_warn_on_import(name, replacement="langchain_community.llms.Writer")

return Writer
elif name == "HuggingFacePipeline":
from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline

_warn_on_import(
name, replacement="langchain.llms.huggingface_pipeline.HuggingFacePipeline"
name,
replacement="langchain_community.llms.huggingface_pipeline.HuggingFacePipeline",
)

return HuggingFacePipeline
Expand Down
50 changes: 18 additions & 32 deletions libs/langchain/langchain/agents/agent_toolkits/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,40 +13,11 @@
See [Security](https://python.langchain.com/docs/security) for more information.
"""
import warnings
from pathlib import Path
from typing import Any

from langchain_community.agent_toolkits.ainetwork.toolkit import AINetworkToolkit
from langchain_community.agent_toolkits.amadeus.toolkit import AmadeusToolkit
from langchain_community.agent_toolkits.azure_cognitive_services import (
AzureCognitiveServicesToolkit,
)
from langchain_community.agent_toolkits.file_management.toolkit import (
FileManagementToolkit,
)
from langchain_community.agent_toolkits.gmail.toolkit import GmailToolkit
from langchain_community.agent_toolkits.jira.toolkit import JiraToolkit
from langchain_community.agent_toolkits.json.base import create_json_agent
from langchain_community.agent_toolkits.json.toolkit import JsonToolkit
from langchain_community.agent_toolkits.multion.toolkit import MultionToolkit
from langchain_community.agent_toolkits.nasa.toolkit import NasaToolkit
from langchain_community.agent_toolkits.nla.toolkit import NLAToolkit
from langchain_community.agent_toolkits.office365.toolkit import O365Toolkit
from langchain_community.agent_toolkits.openapi.base import create_openapi_agent
from langchain_community.agent_toolkits.openapi.toolkit import OpenAPIToolkit
from langchain_community.agent_toolkits.playwright.toolkit import (
PlayWrightBrowserToolkit,
)
from langchain_community.agent_toolkits.powerbi.base import create_pbi_agent
from langchain_community.agent_toolkits.powerbi.chat_base import create_pbi_chat_agent
from langchain_community.agent_toolkits.powerbi.toolkit import PowerBIToolkit
from langchain_community.agent_toolkits.slack.toolkit import SlackToolkit
from langchain_community.agent_toolkits.spark_sql.base import create_spark_sql_agent
from langchain_community.agent_toolkits.spark_sql.toolkit import SparkSQLToolkit
from langchain_community.agent_toolkits.sql.base import create_sql_agent
from langchain_community.agent_toolkits.sql.toolkit import SQLDatabaseToolkit
from langchain_community.agent_toolkits.steam.toolkit import SteamToolkit
from langchain_community.agent_toolkits.zapier.toolkit import ZapierToolkit
from langchain_core._api import LangChainDeprecationWarning
from langchain_core._api.path import as_import_path

from langchain.agents.agent_toolkits.conversational_retrieval.openai_functions import (
Expand All @@ -62,6 +33,7 @@
VectorStoreToolkit,
)
from langchain.tools.retriever import create_retriever_tool
from langchain.utils.interactive_env import is_interactive_env

DEPRECATED_AGENTS = [
"create_csv_agent",
Expand All @@ -84,7 +56,21 @@ def __getattr__(name: str) -> Any:
"for more information.\n"
f"Please update your import statement from: `{old_path}` to `{new_path}`."
)
raise AttributeError(f"{name} does not exist")

from langchain_community import agent_toolkits

# If not in interactive env, raise warning.
if not is_interactive_env():
warnings.warn(
"Importing this agent toolkit from langchain is deprecated. Importing it "
"from langchain will no longer be supported as of langchain==0.2.0. "
"Please import from langchain-community instead:\n\n"
f"`from langchain_community.agent_toolkits import {name}`.\n\n"
"To install langchain-community run `pip install -U langchain-community`.",
category=LangChainDeprecationWarning,
)

return getattr(agent_toolkits, name)


__all__ = [
Expand Down
53 changes: 22 additions & 31 deletions libs/langchain/langchain/callbacks/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,10 @@
BaseCallbackHandler --> <name>CallbackHandler # Example: AimCallbackHandler
"""
import warnings
from typing import Any

from langchain_community.callbacks.aim_callback import AimCallbackHandler
from langchain_community.callbacks.argilla_callback import ArgillaCallbackHandler
from langchain_community.callbacks.arize_callback import ArizeCallbackHandler
from langchain_community.callbacks.arthur_callback import ArthurCallbackHandler
from langchain_community.callbacks.clearml_callback import ClearMLCallbackHandler
from langchain_community.callbacks.comet_ml_callback import CometCallbackHandler
from langchain_community.callbacks.context_callback import ContextCallbackHandler
from langchain_community.callbacks.flyte_callback import FlyteCallbackHandler
from langchain_community.callbacks.human import HumanApprovalCallbackHandler
from langchain_community.callbacks.infino_callback import InfinoCallbackHandler
from langchain_community.callbacks.labelstudio_callback import (
LabelStudioCallbackHandler,
)
from langchain_community.callbacks.llmonitor_callback import LLMonitorCallbackHandler
from langchain_community.callbacks.manager import (
get_openai_callback,
wandb_tracing_enabled,
)
from langchain_community.callbacks.mlflow_callback import MlflowCallbackHandler
from langchain_community.callbacks.openai_info import OpenAICallbackHandler
from langchain_community.callbacks.promptlayer_callback import (
PromptLayerCallbackHandler,
)
from langchain_community.callbacks.sagemaker_callback import SageMakerCallbackHandler
from langchain_community.callbacks.streamlit import (
LLMThoughtLabeler,
StreamlitCallbackHandler,
)
from langchain_community.callbacks.trubrics_callback import TrubricsCallbackHandler
from langchain_community.callbacks.wandb_callback import WandbCallbackHandler
from langchain_community.callbacks.whylabs_callback import WhyLabsCallbackHandler
from langchain_core._api import LangChainDeprecationWarning
from langchain_core.callbacks import (
StdOutCallbackHandler,
StreamingStdOutCallbackHandler,
Expand All @@ -54,6 +26,25 @@
from langchain.callbacks.streaming_stdout_final_only import (
FinalStreamingStdOutCallbackHandler,
)
from langchain.utils.interactive_env import is_interactive_env


def __getattr__(name: str) -> Any:
from langchain_community import callbacks

# If not in interactive env, raise warning.
if not is_interactive_env():
warnings.warn(
"Importing this callback from langchain is deprecated. Importing it from "
"langchain will no longer be supported as of langchain==0.2.0. "
"Please import from langchain-community instead:\n\n"
f"`from langchain_community.callbacks import {name}`.\n\n"
"To install langchain-community run `pip install -U langchain-community`.",
category=LangChainDeprecationWarning,
)

return getattr(callbacks, name)


__all__ = [
"AimCallbackHandler",
Expand Down
52 changes: 22 additions & 30 deletions libs/langchain/langchain/chat_models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,37 +16,29 @@
AIMessage, BaseMessage, HumanMessage
""" # noqa: E501
import warnings

from langchain_core._api import LangChainDeprecationWarning

from langchain.utils.interactive_env import is_interactive_env


def __getattr__(name: str) -> None:
from langchain_community import chat_models

# If not in interactive env, raise warning.
if not is_interactive_env():
warnings.warn(
"Importing chat models from langchain is deprecated. Importing from "
"langchain will no longer be supported as of langchain==0.2.0. "
"Please import from langchain-community instead:\n\n"
f"`from langchain_community.chat_models import {name}`.\n\n"
"To install langchain-community run `pip install -U langchain-community`.",
category=LangChainDeprecationWarning,
)

return getattr(chat_models, name)

from langchain_community.chat_models.anthropic import ChatAnthropic
from langchain_community.chat_models.anyscale import ChatAnyscale
from langchain_community.chat_models.azure_openai import AzureChatOpenAI
from langchain_community.chat_models.baichuan import ChatBaichuan
from langchain_community.chat_models.baidu_qianfan_endpoint import QianfanChatEndpoint
from langchain_community.chat_models.bedrock import BedrockChat
from langchain_community.chat_models.cohere import ChatCohere
from langchain_community.chat_models.databricks import ChatDatabricks
from langchain_community.chat_models.ernie import ErnieBotChat
from langchain_community.chat_models.everlyai import ChatEverlyAI
from langchain_community.chat_models.fake import FakeListChatModel
from langchain_community.chat_models.fireworks import ChatFireworks
from langchain_community.chat_models.gigachat import GigaChat
from langchain_community.chat_models.google_palm import ChatGooglePalm
from langchain_community.chat_models.human import HumanInputChatModel
from langchain_community.chat_models.hunyuan import ChatHunyuan
from langchain_community.chat_models.javelin_ai_gateway import ChatJavelinAIGateway
from langchain_community.chat_models.jinachat import JinaChat
from langchain_community.chat_models.konko import ChatKonko
from langchain_community.chat_models.litellm import ChatLiteLLM
from langchain_community.chat_models.minimax import MiniMaxChat
from langchain_community.chat_models.mlflow import ChatMlflow
from langchain_community.chat_models.mlflow_ai_gateway import ChatMLflowAIGateway
from langchain_community.chat_models.ollama import ChatOllama
from langchain_community.chat_models.openai import ChatOpenAI
from langchain_community.chat_models.pai_eas_endpoint import PaiEasChatEndpoint
from langchain_community.chat_models.promptlayer_openai import PromptLayerChatOpenAI
from langchain_community.chat_models.vertexai import ChatVertexAI
from langchain_community.chat_models.volcengine_maas import VolcEngineMaasChat
from langchain_community.chat_models.yandex import ChatYandexGPT

__all__ = [
"ChatOpenAI",
Expand Down
27 changes: 24 additions & 3 deletions libs/langchain/langchain/docstore/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,29 @@
Document, AddableMixin
"""
from langchain.docstore.arbitrary_fn import DocstoreFn
from langchain.docstore.in_memory import InMemoryDocstore
from langchain.docstore.wikipedia import Wikipedia
import warnings
from typing import Any

from langchain_core._api import LangChainDeprecationWarning

from langchain.utils.interactive_env import is_interactive_env


def __getattr__(name: str) -> Any:
from langchain_community import docstore

# If not in interactive env, raise warning.
if not is_interactive_env():
warnings.warn(
"Importing docstores from langchain is deprecated. Importing from "
"langchain will no longer be supported as of langchain==0.2.0. "
"Please import from langchain-community instead:\n\n"
f"`from langchain_community.docstore import {name}`.\n\n"
"To install langchain-community run `pip install -U langchain-community`.",
category=LangChainDeprecationWarning,
)

return getattr(docstore, name)


__all__ = ["DocstoreFn", "InMemoryDocstore", "Wikipedia"]

0 comments on commit f5e4f0b

Please sign in to comment.