diff --git a/libs/langchain/langchain/agents/agent_toolkits/amadeus/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/amadeus/toolkit.py index ce5108571b5..e7e0b93d9ed 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/amadeus/toolkit.py +++ b/libs/langchain/langchain/agents/agent_toolkits/amadeus/toolkit.py @@ -1,3 +1,23 @@ -from langchain_community.agent_toolkits.amadeus.toolkit import AmadeusToolkit +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.agent_toolkits.amadeus.toolkit import AmadeusToolkit + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "AmadeusToolkit": "langchain_community.agent_toolkits.amadeus.toolkit" +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = ["AmadeusToolkit"] diff --git a/libs/langchain/langchain/agents/agent_toolkits/json/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/json/prompt.py index 7a55b3e6bc1..b781654307a 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/json/prompt.py +++ b/libs/langchain/langchain/agents/agent_toolkits/json/prompt.py @@ -1,3 +1,24 @@ -from langchain_community.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "JSON_PREFIX": "langchain_community.agent_toolkits.json.prompt", + "JSON_SUFFIX": "langchain_community.agent_toolkits.json.prompt", +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = ["JSON_PREFIX", "JSON_SUFFIX"] diff --git a/libs/langchain/langchain/agents/agent_toolkits/openapi/planner_prompt.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/planner_prompt.py index a496b94f78d..6ab49fc66c1 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/openapi/planner_prompt.py +++ b/libs/langchain/langchain/agents/agent_toolkits/openapi/planner_prompt.py @@ -1,22 +1,86 @@ -from langchain_community.agent_toolkits.openapi.planner_prompt import ( - API_CONTROLLER_PROMPT, - API_CONTROLLER_TOOL_DESCRIPTION, - API_CONTROLLER_TOOL_NAME, - API_ORCHESTRATOR_PROMPT, - API_PLANNER_PROMPT, - API_PLANNER_TOOL_DESCRIPTION, - API_PLANNER_TOOL_NAME, - PARSING_DELETE_PROMPT, - PARSING_GET_PROMPT, - PARSING_PATCH_PROMPT, - PARSING_POST_PROMPT, - PARSING_PUT_PROMPT, - REQUESTS_DELETE_TOOL_DESCRIPTION, - REQUESTS_GET_TOOL_DESCRIPTION, - REQUESTS_PATCH_TOOL_DESCRIPTION, - REQUESTS_POST_TOOL_DESCRIPTION, - REQUESTS_PUT_TOOL_DESCRIPTION, -) +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.agent_toolkits.openapi.planner_prompt import ( + API_CONTROLLER_PROMPT, + API_CONTROLLER_TOOL_DESCRIPTION, + API_CONTROLLER_TOOL_NAME, + API_ORCHESTRATOR_PROMPT, + API_PLANNER_PROMPT, + API_PLANNER_TOOL_DESCRIPTION, + API_PLANNER_TOOL_NAME, + PARSING_DELETE_PROMPT, + PARSING_GET_PROMPT, + PARSING_PATCH_PROMPT, + PARSING_POST_PROMPT, + PARSING_PUT_PROMPT, + REQUESTS_DELETE_TOOL_DESCRIPTION, + REQUESTS_GET_TOOL_DESCRIPTION, + REQUESTS_PATCH_TOOL_DESCRIPTION, + REQUESTS_POST_TOOL_DESCRIPTION, + REQUESTS_PUT_TOOL_DESCRIPTION, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "API_CONTROLLER_PROMPT": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "API_CONTROLLER_TOOL_DESCRIPTION": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "API_CONTROLLER_TOOL_NAME": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "API_ORCHESTRATOR_PROMPT": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "API_PLANNER_PROMPT": ("langchain_community.agent_toolkits.openapi.planner_prompt"), + "API_PLANNER_TOOL_DESCRIPTION": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "API_PLANNER_TOOL_NAME": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "PARSING_DELETE_PROMPT": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "PARSING_GET_PROMPT": ("langchain_community.agent_toolkits.openapi.planner_prompt"), + "PARSING_PATCH_PROMPT": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "PARSING_POST_PROMPT": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "PARSING_PUT_PROMPT": ("langchain_community.agent_toolkits.openapi.planner_prompt"), + "REQUESTS_DELETE_TOOL_DESCRIPTION": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "REQUESTS_GET_TOOL_DESCRIPTION": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "REQUESTS_PATCH_TOOL_DESCRIPTION": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "REQUESTS_POST_TOOL_DESCRIPTION": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), + "REQUESTS_PUT_TOOL_DESCRIPTION": ( + "langchain_community.agent_toolkits.openapi.planner_prompt" + ), +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = [ "API_PLANNER_PROMPT", diff --git a/libs/langchain/langchain/agents/agent_toolkits/openapi/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/openapi/prompt.py index 14ec08f82e3..7f124bad0d9 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/openapi/prompt.py +++ b/libs/langchain/langchain/agents/agent_toolkits/openapi/prompt.py @@ -1,7 +1,29 @@ -from langchain_community.agent_toolkits.openapi.prompt import ( - DESCRIPTION, - OPENAPI_PREFIX, - OPENAPI_SUFFIX, -) +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.agent_toolkits.openapi.prompt import ( + DESCRIPTION, + OPENAPI_PREFIX, + OPENAPI_SUFFIX, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "DESCRIPTION": "langchain_community.agent_toolkits.openapi.prompt", + "OPENAPI_PREFIX": "langchain_community.agent_toolkits.openapi.prompt", + "OPENAPI_SUFFIX": "langchain_community.agent_toolkits.openapi.prompt", +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = ["OPENAPI_PREFIX", "OPENAPI_SUFFIX", "DESCRIPTION"] diff --git a/libs/langchain/langchain/agents/agent_toolkits/powerbi/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/powerbi/prompt.py index c9b87c8d74a..325dbe08613 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/powerbi/prompt.py +++ b/libs/langchain/langchain/agents/agent_toolkits/powerbi/prompt.py @@ -1,9 +1,32 @@ -from langchain_community.agent_toolkits.powerbi.prompt import ( - POWERBI_CHAT_PREFIX, - POWERBI_CHAT_SUFFIX, - POWERBI_PREFIX, - POWERBI_SUFFIX, -) +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.agent_toolkits.powerbi.prompt import ( + POWERBI_CHAT_PREFIX, + POWERBI_CHAT_SUFFIX, + POWERBI_PREFIX, + POWERBI_SUFFIX, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "POWERBI_CHAT_PREFIX": "langchain_community.agent_toolkits.powerbi.prompt", + "POWERBI_CHAT_SUFFIX": "langchain_community.agent_toolkits.powerbi.prompt", + "POWERBI_PREFIX": "langchain_community.agent_toolkits.powerbi.prompt", + "POWERBI_SUFFIX": "langchain_community.agent_toolkits.powerbi.prompt", +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = [ "POWERBI_PREFIX", diff --git a/libs/langchain/langchain/agents/agent_toolkits/spark_sql/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/spark_sql/prompt.py index 1ecdb2fb9e3..f381c0f9b47 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/spark_sql/prompt.py +++ b/libs/langchain/langchain/agents/agent_toolkits/spark_sql/prompt.py @@ -1,3 +1,27 @@ -from langchain_community.agent_toolkits.spark_sql.prompt import SQL_PREFIX, SQL_SUFFIX +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.agent_toolkits.spark_sql.prompt import ( + SQL_PREFIX, + SQL_SUFFIX, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "SQL_PREFIX": "langchain_community.agent_toolkits.spark_sql.prompt", + "SQL_SUFFIX": "langchain_community.agent_toolkits.spark_sql.prompt", +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = ["SQL_PREFIX", "SQL_SUFFIX"] diff --git a/libs/langchain/langchain/agents/agent_toolkits/sql/prompt.py b/libs/langchain/langchain/agents/agent_toolkits/sql/prompt.py index 09a59512816..e06162b62b7 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/sql/prompt.py +++ b/libs/langchain/langchain/agents/agent_toolkits/sql/prompt.py @@ -1,7 +1,29 @@ -from langchain_community.agent_toolkits.sql.prompt import ( - SQL_FUNCTIONS_SUFFIX, - SQL_PREFIX, - SQL_SUFFIX, -) +from typing import TYPE_CHECKING, Any + +from langchain._api import create_importer + +if TYPE_CHECKING: + from langchain_community.agent_toolkits.sql.prompt import ( + SQL_FUNCTIONS_SUFFIX, + SQL_PREFIX, + SQL_SUFFIX, + ) + +# Create a way to dynamically look up deprecated imports. +# Used to consolidate logic for raising deprecation warnings and +# handling optional imports. +DEPRECATED_LOOKUP = { + "SQL_PREFIX": "langchain_community.agent_toolkits.sql.prompt", + "SQL_SUFFIX": "langchain_community.agent_toolkits.sql.prompt", + "SQL_FUNCTIONS_SUFFIX": "langchain_community.agent_toolkits.sql.prompt", +} + +_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) + + +def __getattr__(name: str) -> Any: + """Look up attributes dynamically.""" + return _import_attribute(name) + __all__ = ["SQL_PREFIX", "SQL_SUFFIX", "SQL_FUNCTIONS_SUFFIX"] diff --git a/libs/langchain/langchain/agents/agent_toolkits/vectorstore/toolkit.py b/libs/langchain/langchain/agents/agent_toolkits/vectorstore/toolkit.py index 37c010c25be..2faa3fc7f21 100644 --- a/libs/langchain/langchain/agents/agent_toolkits/vectorstore/toolkit.py +++ b/libs/langchain/langchain/agents/agent_toolkits/vectorstore/toolkit.py @@ -1,10 +1,6 @@ """Toolkit for interacting with a vector store.""" from typing import List -from langchain_community.tools.vectorstore.tool import ( - VectorStoreQATool, - VectorStoreQAWithSourcesTool, -) from langchain_core.language_models import BaseLanguageModel from langchain_core.pydantic_v1 import BaseModel, Field from langchain_core.tools import BaseTool, BaseToolkit @@ -37,6 +33,15 @@ class VectorStoreToolkit(BaseToolkit): def get_tools(self) -> List[BaseTool]: """Get the tools in the toolkit.""" + try: + from langchain_community.tools.vectorstore.tool import ( + VectorStoreQATool, + VectorStoreQAWithSourcesTool, + ) + except ImportError: + raise ImportError( + "You need to install langchain-community to use this toolkit." + ) description = VectorStoreQATool.get_description( self.vectorstore_info.name, self.vectorstore_info.description ) @@ -72,6 +77,14 @@ class VectorStoreRouterToolkit(BaseToolkit): def get_tools(self) -> List[BaseTool]: """Get the tools in the toolkit.""" tools: List[BaseTool] = [] + try: + from langchain_community.tools.vectorstore.tool import ( + VectorStoreQATool, + ) + except ImportError: + raise ImportError( + "You need to install langchain-community to use this toolkit." + ) for vectorstore_info in self.vectorstores: description = VectorStoreQATool.get_description( vectorstore_info.name, vectorstore_info.description