diff --git a/dbgpt/core/interface/knowledge.py b/dbgpt/core/interface/knowledge.py index 369108883..e155e3169 100644 --- a/dbgpt/core/interface/knowledge.py +++ b/dbgpt/core/interface/knowledge.py @@ -111,13 +111,23 @@ class Chunk(Document): @classmethod def chunk2langchain(cls, chunk): """Transform Chunk to Langchain format.""" - from langchain.schema import Document as LCDocument - + try: + from langchain.schema import Document as LCDocument # mypy: ignore + except ImportError: + raise ValueError( + "Could not import python package: langchain " + "Please install langchain by command `pip install langchain" + ) return LCDocument(page_content=chunk.content, metadata=chunk.metadata) @classmethod def chunk2llamaindex(cls, chunk): """Transform Chunk to llama-index format.""" - from llama_index.schema import TextNode - + try: + from llama_index.schema import TextNode + except ImportError: + raise ValueError( + "Could not import python package: llama_index " + "Please install llama_index by command `pip install llama_index" + ) return TextNode(text=chunk.content, metadata=chunk.metadata) diff --git a/dbgpt/rag/embedding/_wrapped.py b/dbgpt/rag/embedding/_wrapped.py index 4887d5838..de7e8cae9 100644 --- a/dbgpt/rag/embedding/_wrapped.py +++ b/dbgpt/rag/embedding/_wrapped.py @@ -5,7 +5,9 @@ from typing import TYPE_CHECKING, List from dbgpt.core import Embeddings if TYPE_CHECKING: - from langchain.embeddings.base import Embeddings as LangChainEmbeddings + from langchain.embeddings.base import ( + Embeddings as LangChainEmbeddings, # mypy: ignore + ) class WrappedEmbeddings(Embeddings): diff --git a/dbgpt/rag/knowledge/url.py b/dbgpt/rag/knowledge/url.py index 4a89de290..87afca757 100644 --- a/dbgpt/rag/knowledge/url.py +++ b/dbgpt/rag/knowledge/url.py @@ -37,7 +37,7 @@ class URLKnowledge(Knowledge): if self._loader: documents = self._loader.load() else: - from langchain.document_loaders import WebBaseLoader + from langchain.document_loaders import WebBaseLoader # mypy: ignore if self._path is not None: web_reader = WebBaseLoader(web_path=self._path) diff --git a/dbgpt/storage/vector_store/pgvector_store.py b/dbgpt/storage/vector_store/pgvector_store.py index 6f48aaf36..40f4f27e3 100644 --- a/dbgpt/storage/vector_store/pgvector_store.py +++ b/dbgpt/storage/vector_store/pgvector_store.py @@ -56,8 +56,12 @@ class PGVectorStore(VectorStoreBase): def __init__(self, vector_store_config: PGVectorConfig) -> None: """Create a PGVectorStore instance.""" - from langchain.vectorstores import PGVector - + try: + from langchain.vectorstores import PGVector # mypy: ignore + except ImportError: + raise ImportError( + "Please install the `langchain` package to use the PGVector." + ) self.connection_string = vector_store_config.connection_string self.embeddings = vector_store_config.embedding_fn self.collection_name = vector_store_config.name diff --git a/setup.py b/setup.py index 6131108df..b746384d3 100644 --- a/setup.py +++ b/setup.py @@ -418,6 +418,7 @@ def core_requires(): "typeguard", # Snowflake no additional dependencies. "snowflake-id", + "typing_inspect", ] # For DB-GPT python client SDK setup_spec.extras["client"] = setup_spec.extras["core"] + [