diff --git a/langchain/agents/agent_toolkits/pandas/base.py b/langchain/agents/agent_toolkits/pandas/base.py index 0913337e41183..40257bf90dd69 100644 --- a/langchain/agents/agent_toolkits/pandas/base.py +++ b/langchain/agents/agent_toolkits/pandas/base.py @@ -34,7 +34,7 @@ def create_pandas_dataframe_agent( try: import pandas as pd except ImportError: - raise ValueError( + raise ImportError( "pandas package not found, please install with `pip install pandas`" ) diff --git a/langchain/cache.py b/langchain/cache.py index c8e021c1f809d..5b2cf2c0e4113 100644 --- a/langchain/cache.py +++ b/langchain/cache.py @@ -313,7 +313,7 @@ def init_gptcache(cache_obj: gptcache.Cache, llm str): try: import gptcache # noqa: F401 except ImportError: - raise ValueError( + raise ImportError( "Could not import gptcache python package. " "Please install it with `pip install gptcache`." ) diff --git a/langchain/chains/moderation.py b/langchain/chains/moderation.py index 96528a766d312..e59dfa0cf6464 100644 --- a/langchain/chains/moderation.py +++ b/langchain/chains/moderation.py @@ -54,7 +54,7 @@ def validate_environment(cls, values: Dict) -> Dict: openai.organization = openai_organization values["client"] = openai.Moderation except ImportError: - raise ValueError( + raise ImportError( "Could not import openai python package. " "Please install it with `pip install openai`." ) diff --git a/langchain/chat_models/azure_openai.py b/langchain/chat_models/azure_openai.py index b569d5222e847..93d8e5b4c44a7 100644 --- a/langchain/chat_models/azure_openai.py +++ b/langchain/chat_models/azure_openai.py @@ -86,7 +86,7 @@ def validate_environment(cls, values: Dict) -> Dict: if openai_organization: openai.organization = openai_organization except ImportError: - raise ValueError( + raise ImportError( "Could not import openai python package. " "Please install it with `pip install openai`." ) diff --git a/langchain/document_loaders/apify_dataset.py b/langchain/document_loaders/apify_dataset.py index aae71aa74674f..e8d130597df8e 100644 --- a/langchain/document_loaders/apify_dataset.py +++ b/langchain/document_loaders/apify_dataset.py @@ -41,7 +41,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["apify_client"] = ApifyClient() except ImportError: - raise ValueError( + raise ImportError( "Could not import apify-client Python package. " "Please install it with `pip install apify-client`." ) diff --git a/langchain/document_loaders/docugami.py b/langchain/document_loaders/docugami.py index a808f499eb610..e30fa5f2c83f7 100644 --- a/langchain/document_loaders/docugami.py +++ b/langchain/document_loaders/docugami.py @@ -63,7 +63,7 @@ def _parse_dgml( try: from lxml import etree except ImportError: - raise ValueError( + raise ImportError( "Could not import lxml python package. " "Please install it with `pip install lxml`." ) @@ -259,7 +259,7 @@ def _metadata_for_project(self, project: Dict) -> Dict: try: from lxml import etree except ImportError: - raise ValueError( + raise ImportError( "Could not import lxml python package. " "Please install it with `pip install lxml`." ) diff --git a/langchain/document_loaders/duckdb_loader.py b/langchain/document_loaders/duckdb_loader.py index 5b7b0386915ba..43948fe37da3d 100644 --- a/langchain/document_loaders/duckdb_loader.py +++ b/langchain/document_loaders/duckdb_loader.py @@ -33,7 +33,7 @@ def load(self) -> List[Document]: try: import duckdb except ImportError: - raise ValueError( + raise ImportError( "Could not import duckdb python package. " "Please install it with `pip install duckdb`." ) diff --git a/langchain/document_loaders/image_captions.py b/langchain/document_loaders/image_captions.py index 1837ece61486f..6df4a03d0552e 100644 --- a/langchain/document_loaders/image_captions.py +++ b/langchain/document_loaders/image_captions.py @@ -39,7 +39,7 @@ def load(self) -> List[Document]: try: from transformers import BlipForConditionalGeneration, BlipProcessor except ImportError: - raise ValueError( + raise ImportError( "`transformers` package not found, please install with " "`pip install transformers`." ) @@ -66,7 +66,7 @@ def _get_captions_and_metadata( try: from PIL import Image except ImportError: - raise ValueError( + raise ImportError( "`PIL` package not found, please install with `pip install pillow`" ) diff --git a/langchain/document_loaders/json_loader.py b/langchain/document_loaders/json_loader.py index f1e594b20ef24..153c321b0913f 100644 --- a/langchain/document_loaders/json_loader.py +++ b/langchain/document_loaders/json_loader.py @@ -42,7 +42,7 @@ def __init__( try: import jq # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "jq package not found, please install it with `pip install jq`" ) diff --git a/langchain/document_loaders/notebook.py b/langchain/document_loaders/notebook.py index aaa5b057eaf65..afc572cb35b90 100644 --- a/langchain/document_loaders/notebook.py +++ b/langchain/document_loaders/notebook.py @@ -83,7 +83,7 @@ def load( try: import pandas as pd except ImportError: - raise ValueError( + raise ImportError( "pandas is needed for Notebook Loader, " "please install with `pip install pandas`" ) diff --git a/langchain/document_loaders/onedrive.py b/langchain/document_loaders/onedrive.py index 0d49902ec6124..4129f80f508a5 100644 --- a/langchain/document_loaders/onedrive.py +++ b/langchain/document_loaders/onedrive.py @@ -77,7 +77,7 @@ def _auth(self) -> Type[Account]: try: from O365 import FileSystemTokenBackend except ImportError: - raise ValueError( + raise ImportError( "O365 package not found, please install it with `pip install o365`" ) if self.auth_with_token: diff --git a/langchain/document_loaders/pdf.py b/langchain/document_loaders/pdf.py index 9a61f36c2f5a8..5f204f1f7f9e4 100644 --- a/langchain/document_loaders/pdf.py +++ b/langchain/document_loaders/pdf.py @@ -103,7 +103,7 @@ def __init__(self, file_path: str) -> None: try: import pypdf # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "pypdf package not found, please install it with " "`pip install pypdf`" ) self.parser = PyPDFParser() @@ -194,7 +194,7 @@ def __init__(self, file_path: str) -> None: try: from pdfminer.high_level import extract_text # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "`pdfminer` package not found, please install it with " "`pip install pdfminer.six`" ) @@ -222,7 +222,7 @@ def __init__(self, file_path: str): try: from pdfminer.high_level import extract_text_to_fp # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "`pdfminer` package not found, please install it with " "`pip install pdfminer.six`" ) @@ -256,7 +256,7 @@ def __init__(self, file_path: str) -> None: try: import fitz # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "`PyMuPDF` package not found, please install it with " "`pip install pymupdf`" ) @@ -375,7 +375,7 @@ def __init__( try: import pdfplumber # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "pdfplumber package not found, please install it with " "`pip install pdfplumber`" ) diff --git a/langchain/document_loaders/readthedocs.py b/langchain/document_loaders/readthedocs.py index b35f2687da898..bb10a0e9cebf8 100644 --- a/langchain/document_loaders/readthedocs.py +++ b/langchain/document_loaders/readthedocs.py @@ -19,9 +19,8 @@ def __init__( """Initialize path.""" try: from bs4 import BeautifulSoup - except ImportError: - raise ValueError( + raise ImportError( "Could not import python packages. " "Please install it with `pip install beautifulsoup4`. " ) diff --git a/langchain/document_loaders/s3_directory.py b/langchain/document_loaders/s3_directory.py index 31386539d21a0..0c842d0523706 100644 --- a/langchain/document_loaders/s3_directory.py +++ b/langchain/document_loaders/s3_directory.py @@ -19,7 +19,7 @@ def load(self) -> List[Document]: try: import boto3 except ImportError: - raise ValueError( + raise ImportError( "Could not import boto3 python package. " "Please install it with `pip install boto3`." ) diff --git a/langchain/document_loaders/s3_file.py b/langchain/document_loaders/s3_file.py index 3625ed0e6a3c3..246b0095b51d6 100644 --- a/langchain/document_loaders/s3_file.py +++ b/langchain/document_loaders/s3_file.py @@ -21,7 +21,7 @@ def load(self) -> List[Document]: try: import boto3 except ImportError: - raise ValueError( + raise ImportError( "Could not import `boto3` python package. " "Please install it with `pip install boto3`." ) diff --git a/langchain/document_loaders/sitemap.py b/langchain/document_loaders/sitemap.py index 826692a1902b3..029f12f70e8ec 100644 --- a/langchain/document_loaders/sitemap.py +++ b/langchain/document_loaders/sitemap.py @@ -58,7 +58,7 @@ def __init__( try: import lxml # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "lxml package not found, please install it with " "`pip install lxml`" ) @@ -107,8 +107,9 @@ def load(self) -> List[Document]: try: import bs4 except ImportError: - raise ValueError( - "bs4 package not found, please install it with " "`pip install bs4`" + raise ImportError( + "beautifulsoup4 package not found, please install it" + " with `pip install beautifulsoup4`" ) fp = open(self.web_path) soup = bs4.BeautifulSoup(fp, "xml") diff --git a/langchain/document_loaders/srt.py b/langchain/document_loaders/srt.py index ce38f1c2f89a1..ee26d3230abf2 100644 --- a/langchain/document_loaders/srt.py +++ b/langchain/document_loaders/srt.py @@ -13,8 +13,8 @@ def __init__(self, file_path: str): try: import pysrt # noqa:F401 except ImportError: - raise ValueError( - "package `pysrt` not found, please install it with `pysrt`" + raise ImportError( + "package `pysrt` not found, please install it with `pip install pysrt`" ) self.file_path = file_path diff --git a/langchain/document_loaders/telegram.py b/langchain/document_loaders/telegram.py index 795e1879934a2..3e4bf0e5ea7cb 100644 --- a/langchain/document_loaders/telegram.py +++ b/langchain/document_loaders/telegram.py @@ -226,7 +226,7 @@ def load(self) -> List[Document]: nest_asyncio.apply() asyncio.run(self.fetch_data_from_telegram()) except ImportError: - raise ValueError( + raise ImportError( """`nest_asyncio` package not found. please install with `pip install nest_asyncio` """ @@ -239,7 +239,7 @@ def load(self) -> List[Document]: try: import pandas as pd except ImportError: - raise ValueError( + raise ImportError( """`pandas` package not found. please install with `pip install pandas` """ diff --git a/langchain/document_loaders/twitter.py b/langchain/document_loaders/twitter.py index 2b1afd77ab7e3..1cf93321a1f29 100644 --- a/langchain/document_loaders/twitter.py +++ b/langchain/document_loaders/twitter.py @@ -15,7 +15,7 @@ def _dependable_tweepy_import() -> tweepy: try: import tweepy except ImportError: - raise ValueError( + raise ImportError( "tweepy package not found, please install it with `pip install tweepy`" ) return tweepy diff --git a/langchain/document_loaders/url_playwright.py b/langchain/document_loaders/url_playwright.py index 15739263c76a0..d68cf105ab33e 100644 --- a/langchain/document_loaders/url_playwright.py +++ b/langchain/document_loaders/url_playwright.py @@ -30,7 +30,7 @@ def __init__( try: import playwright # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "playwright package not found, please install it with " "`pip install playwright`" ) diff --git a/langchain/document_loaders/url_selenium.py b/langchain/document_loaders/url_selenium.py index 9a315ccc74087..5cc3f0ce099cd 100644 --- a/langchain/document_loaders/url_selenium.py +++ b/langchain/document_loaders/url_selenium.py @@ -40,7 +40,7 @@ def __init__( try: import selenium # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "selenium package not found, please install it with " "`pip install selenium`" ) @@ -48,7 +48,7 @@ def __init__( try: import unstructured # noqa:F401 except ImportError: - raise ValueError( + raise ImportError( "unstructured package not found, please install it with " "`pip install unstructured`" ) diff --git a/langchain/embeddings/cohere.py b/langchain/embeddings/cohere.py index e4fe18b247d34..a107dc02cc0d1 100644 --- a/langchain/embeddings/cohere.py +++ b/langchain/embeddings/cohere.py @@ -48,7 +48,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["client"] = cohere.Client(cohere_api_key) except ImportError: - raise ValueError( + raise ImportError( "Could not import cohere python package. " "Please install it with `pip install cohere`." ) diff --git a/langchain/embeddings/huggingface.py b/langchain/embeddings/huggingface.py index 2d87ae0d50278..04e0c76e6fa61 100644 --- a/langchain/embeddings/huggingface.py +++ b/langchain/embeddings/huggingface.py @@ -46,7 +46,7 @@ def __init__(self, **kwargs: Any): import sentence_transformers except ImportError as exc: - raise ValueError( + raise ImportError( "Could not import sentence_transformers python package. " "Please install it with `pip install sentence_transformers`." ) from exc diff --git a/langchain/embeddings/jina.py b/langchain/embeddings/jina.py index b5b3d8ce389cb..d980ee3a8cec2 100644 --- a/langchain/embeddings/jina.py +++ b/langchain/embeddings/jina.py @@ -34,7 +34,7 @@ def validate_environment(cls, values: Dict) -> Dict: try: import jina except ImportError: - raise ValueError( + raise ImportError( "Could not import `jina` python package. " "Please install it with `pip install jina`." ) diff --git a/langchain/embeddings/openai.py b/langchain/embeddings/openai.py index 9eb488522f9fd..f0e2215ec8477 100644 --- a/langchain/embeddings/openai.py +++ b/langchain/embeddings/openai.py @@ -178,7 +178,7 @@ def validate_environment(cls, values: Dict) -> Dict: openai.api_type = openai_api_type values["client"] = openai.Embedding except ImportError: - raise ValueError( + raise ImportError( "Could not import openai python package. " "Please install it with `pip install openai`." ) @@ -192,66 +192,63 @@ def _get_len_safe_embeddings( embeddings: List[List[float]] = [[] for _ in range(len(texts))] try: import tiktoken + except ImportError: + raise ImportError( + "Could not import tiktoken python package. " + "This is needed in order to for OpenAIEmbeddings. " + "Please install it with `pip install tiktoken`." + ) - tokens = [] - indices = [] - encoding = tiktoken.model.encoding_for_model(self.model) - for i, text in enumerate(texts): - if self.model.endswith("001"): - # See: https://github.com/openai/openai-python/issues/418#issuecomment-1525939500 - # replace newlines, which can negatively affect performance. - text = text.replace("\n", " ") - token = encoding.encode( - text, - allowed_special=self.allowed_special, - disallowed_special=self.disallowed_special, - ) - for j in range(0, len(token), self.embedding_ctx_length): - tokens += [token[j : j + self.embedding_ctx_length]] - indices += [i] - - batched_embeddings = [] - _chunk_size = chunk_size or self.chunk_size - for i in range(0, len(tokens), _chunk_size): - response = embed_with_retry( + tokens = [] + indices = [] + encoding = tiktoken.model.encoding_for_model(self.model) + for i, text in enumerate(texts): + if self.model.endswith("001"): + # See: https://github.com/openai/openai-python/issues/418#issuecomment-1525939500 + # replace newlines, which can negatively affect performance. + text = text.replace("\n", " ") + token = encoding.encode( + text, + allowed_special=self.allowed_special, + disallowed_special=self.disallowed_special, + ) + for j in range(0, len(token), self.embedding_ctx_length): + tokens += [token[j : j + self.embedding_ctx_length]] + indices += [i] + + batched_embeddings = [] + _chunk_size = chunk_size or self.chunk_size + for i in range(0, len(tokens), _chunk_size): + response = embed_with_retry( + self, + input=tokens[i : i + _chunk_size], + engine=self.deployment, + request_timeout=self.request_timeout, + headers=self.headers, + ) + batched_embeddings += [r["embedding"] for r in response["data"]] + + results: List[List[List[float]]] = [[] for _ in range(len(texts))] + num_tokens_in_batch: List[List[int]] = [[] for _ in range(len(texts))] + for i in range(len(indices)): + results[indices[i]].append(batched_embeddings[i]) + num_tokens_in_batch[indices[i]].append(len(tokens[i])) + + for i in range(len(texts)): + _result = results[i] + if len(_result) == 0: + average = embed_with_retry( self, - input=tokens[i : i + _chunk_size], + input="", engine=self.deployment, request_timeout=self.request_timeout, headers=self.headers, - ) - batched_embeddings += [r["embedding"] for r in response["data"]] - - results: List[List[List[float]]] = [[] for _ in range(len(texts))] - num_tokens_in_batch: List[List[int]] = [[] for _ in range(len(texts))] - for i in range(len(indices)): - results[indices[i]].append(batched_embeddings[i]) - num_tokens_in_batch[indices[i]].append(len(tokens[i])) - - for i in range(len(texts)): - _result = results[i] - if len(_result) == 0: - average = embed_with_retry( - self, - input="", - engine=self.deployment, - request_timeout=self.request_timeout, - headers=self.headers, - )["data"][0]["embedding"] - else: - average = np.average( - _result, axis=0, weights=num_tokens_in_batch[i] - ) - embeddings[i] = (average / np.linalg.norm(average)).tolist() - - return embeddings + )["data"][0]["embedding"] + else: + average = np.average(_result, axis=0, weights=num_tokens_in_batch[i]) + embeddings[i] = (average / np.linalg.norm(average)).tolist() - except ImportError: - raise ValueError( - "Could not import tiktoken python package. " - "This is needed in order to for OpenAIEmbeddings. " - "Please install it with `pip install tiktoken`." - ) + return embeddings def _embedding_func(self, text: str, *, engine: str) -> List[float]: """Call out to OpenAI's embedding endpoint.""" diff --git a/langchain/embeddings/tensorflow_hub.py b/langchain/embeddings/tensorflow_hub.py index 0dc439233ad22..1e699ecbd31c7 100644 --- a/langchain/embeddings/tensorflow_hub.py +++ b/langchain/embeddings/tensorflow_hub.py @@ -30,13 +30,20 @@ def __init__(self, **kwargs: Any): super().__init__(**kwargs) try: import tensorflow_hub + except ImportError: + raise ImportError( + "Could not import tensorflow-hub python package. " + "Please install it with `pip install tensorflow-hub``." + ) + try: import tensorflow_text # noqa + except ImportError: + raise ImportError( + "Could not import tensorflow_text python package. " + "Please install it with `pip install tensorflow_text``." + ) - self.embed = tensorflow_hub.load(self.model_url) - except ImportError as e: - raise ValueError( - "Could not import some python packages." "Please install them." - ) from e + self.embed = tensorflow_hub.load(self.model_url) class Config: """Configuration for this pydantic object.""" diff --git a/langchain/graphs/networkx_graph.py b/langchain/graphs/networkx_graph.py index 813eb3f220ded..753db5fc5d810 100644 --- a/langchain/graphs/networkx_graph.py +++ b/langchain/graphs/networkx_graph.py @@ -54,7 +54,7 @@ def __init__(self, graph: Optional[Any] = None) -> None: try: import networkx as nx except ImportError: - raise ValueError( + raise ImportError( "Could not import networkx python package. " "Please install it with `pip install networkx`." ) @@ -70,7 +70,7 @@ def from_gml(cls, gml_path: str) -> NetworkxEntityGraph: try: import networkx as nx except ImportError: - raise ValueError( + raise ImportError( "Could not import networkx python package. " "Please install it with `pip install networkx`." ) diff --git a/langchain/llms/aleph_alpha.py b/langchain/llms/aleph_alpha.py index bcdbebf8ad754..384fd2650637f 100644 --- a/langchain/llms/aleph_alpha.py +++ b/langchain/llms/aleph_alpha.py @@ -148,7 +148,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["client"] = aleph_alpha_client.Client(token=aleph_alpha_api_key) except ImportError: - raise ValueError( + raise ImportError( "Could not import aleph_alpha_client python package. " "Please install it with `pip install aleph_alpha_client`." ) diff --git a/langchain/llms/anthropic.py b/langchain/llms/anthropic.py index 5c2349f406631..a6cf9ce932aa9 100644 --- a/langchain/llms/anthropic.py +++ b/langchain/llms/anthropic.py @@ -59,7 +59,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["AI_PROMPT"] = anthropic.AI_PROMPT values["count_tokens"] = anthropic.count_tokens except ImportError: - raise ValueError( + raise ImportError( "Could not import anthropic python package. " "Please it install it with `pip install anthropic`." ) diff --git a/langchain/llms/bananadev.py b/langchain/llms/bananadev.py index 8d95c1edd28a7..353c9dca9fdd1 100644 --- a/langchain/llms/bananadev.py +++ b/langchain/llms/bananadev.py @@ -91,7 +91,7 @@ def _call( try: import banana_dev as banana except ImportError: - raise ValueError( + raise ImportError( "Could not import banana-dev python package. " "Please install it with `pip install banana-dev`." ) diff --git a/langchain/llms/cohere.py b/langchain/llms/cohere.py index 2eff193b78083..6da6cf9e3a0b5 100644 --- a/langchain/llms/cohere.py +++ b/langchain/llms/cohere.py @@ -72,7 +72,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["client"] = cohere.Client(cohere_api_key) except ImportError: - raise ValueError( + raise ImportError( "Could not import cohere python package. " "Please install it with `pip install cohere`." ) diff --git a/langchain/llms/google_palm.py b/langchain/llms/google_palm.py index ee709cbab8288..530cc2e9fdc67 100644 --- a/langchain/llms/google_palm.py +++ b/langchain/llms/google_palm.py @@ -29,7 +29,10 @@ def _create_retry_decorator() -> Callable[[Any], Any]: try: import google.api_core.exceptions except ImportError: - raise ImportError() + raise ImportError( + "Could not import google-api-core python package. " + "Please install it with `pip install google-api-core`." + ) multiplier = 2 min_seconds = 1 @@ -105,7 +108,10 @@ def validate_environment(cls, values: Dict) -> Dict: genai.configure(api_key=google_api_key) except ImportError: - raise ImportError("Could not import google.generativeai python package.") + raise ImportError( + "Could not import google-generativeai python package. " + "Please install it with `pip install google-generativeai`." + ) values["client"] = genai diff --git a/langchain/llms/gooseai.py b/langchain/llms/gooseai.py index 571feb2b37c1a..e1a3f8db22635 100644 --- a/langchain/llms/gooseai.py +++ b/langchain/llms/gooseai.py @@ -100,7 +100,7 @@ def validate_environment(cls, values: Dict) -> Dict: openai.api_base = "https://api.goose.ai/v1" values["client"] = openai.Completion except ImportError: - raise ValueError( + raise ImportError( "Could not import openai python package. " "Please install it with `pip install openai`." ) diff --git a/langchain/llms/huggingface_text_gen_inference.py b/langchain/llms/huggingface_text_gen_inference.py index 987db8421ba73..d121b3b9de765 100644 --- a/langchain/llms/huggingface_text_gen_inference.py +++ b/langchain/llms/huggingface_text_gen_inference.py @@ -97,7 +97,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["inference_server_url"], timeout=values["timeout"] ) except ImportError: - raise ValueError( + raise ImportError( "Could not import text_generation python package. " "Please install it with `pip install text_generation`." ) diff --git a/langchain/llms/nlpcloud.py b/langchain/llms/nlpcloud.py index 72f6b38e4c4d1..d901e6b76d85d 100644 --- a/langchain/llms/nlpcloud.py +++ b/langchain/llms/nlpcloud.py @@ -75,7 +75,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["model_name"], nlpcloud_api_key, gpu=True, lang="en" ) except ImportError: - raise ValueError( + raise ImportError( "Could not import nlpcloud python package. " "Please install it with `pip install nlpcloud`." ) diff --git a/langchain/llms/openai.py b/langchain/llms/openai.py index c48837cc0312e..d9dca1bb95442 100644 --- a/langchain/llms/openai.py +++ b/langchain/llms/openai.py @@ -234,7 +234,7 @@ def validate_environment(cls, values: Dict) -> Dict: openai.organization = openai_organization values["client"] = openai.Completion except ImportError: - raise ValueError( + raise ImportError( "Could not import openai python package. " "Please install it with `pip install openai`." ) @@ -462,7 +462,7 @@ def get_token_ids(self, text: str) -> List[int]: try: import tiktoken except ImportError: - raise ValueError( + raise ImportError( "Could not import tiktoken python package. " "This is needed in order to calculate get_num_tokens. " "Please install it with `pip install tiktoken`." @@ -677,7 +677,7 @@ def validate_environment(cls, values: Dict) -> Dict: if openai_organization: openai.organization = openai_organization except ImportError: - raise ValueError( + raise ImportError( "Could not import openai python package. " "Please install it with `pip install openai`." ) @@ -807,7 +807,7 @@ def get_token_ids(self, text: str) -> List[int]: try: import tiktoken except ImportError: - raise ValueError( + raise ImportError( "Could not import tiktoken python package. " "This is needed in order to calculate get_num_tokens. " "Please install it with `pip install tiktoken`." diff --git a/langchain/llms/predictionguard.py b/langchain/llms/predictionguard.py index 4309cae556320..228f81fffeffe 100644 --- a/langchain/llms/predictionguard.py +++ b/langchain/llms/predictionguard.py @@ -50,7 +50,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["client"] = pg.Client(token=token) except ImportError: - raise ValueError( + raise ImportError( "Could not import predictionguard python package. " "Please install it with `pip install predictionguard`." ) diff --git a/langchain/llms/replicate.py b/langchain/llms/replicate.py index b1dfaf4758891..117d8dde463b5 100644 --- a/langchain/llms/replicate.py +++ b/langchain/llms/replicate.py @@ -89,7 +89,7 @@ def _call( try: import replicate as replicate_python except ImportError: - raise ValueError( + raise ImportError( "Could not import replicate python package. " "Please install it with `pip install replicate`." ) diff --git a/langchain/llms/rwkv.py b/langchain/llms/rwkv.py index 0e873d48cbef9..b2643d905835c 100644 --- a/langchain/llms/rwkv.py +++ b/langchain/llms/rwkv.py @@ -103,7 +103,7 @@ def validate_environment(cls, values: Dict) -> Dict: try: import tokenizers except ImportError: - raise ValueError( + raise ImportError( "Could not import tokenizers python package. " "Please install it with `pip install tokenizers`." ) diff --git a/langchain/llms/sagemaker_endpoint.py b/langchain/llms/sagemaker_endpoint.py index 80cb663f2852a..f793aae141ec4 100644 --- a/langchain/llms/sagemaker_endpoint.py +++ b/langchain/llms/sagemaker_endpoint.py @@ -182,7 +182,7 @@ def validate_environment(cls, values: Dict) -> Dict: ) from e except ImportError: - raise ValueError( + raise ImportError( "Could not import boto3 python package. " "Please install it with `pip install boto3`." ) diff --git a/langchain/llms/self_hosted.py b/langchain/llms/self_hosted.py index e7e51725f5ebc..7d36643b982dd 100644 --- a/langchain/llms/self_hosted.py +++ b/langchain/llms/self_hosted.py @@ -155,7 +155,7 @@ def __init__(self, **kwargs: Any): import runhouse as rh except ImportError: - raise ValueError( + raise ImportError( "Could not import runhouse python package. " "Please install it with `pip install runhouse`." ) diff --git a/langchain/memory/chat_message_histories/firestore.py b/langchain/memory/chat_message_histories/firestore.py index 15bbe253babe8..dbbf3ff1123e0 100644 --- a/langchain/memory/chat_message_histories/firestore.py +++ b/langchain/memory/chat_message_histories/firestore.py @@ -52,13 +52,11 @@ def prepare_firestore(self) -> None: try: import firebase_admin from firebase_admin import firestore - except ImportError as e: - logger.error( - "Failed to import Firebase and Firestore: %s. " - "Make sure to install the 'firebase-admin' module.", - e, + except ImportError: + raise ImportError( + "Could not import firebase-admin python package. " + "Please install it with `pip install firebase-admin`." ) - raise e # For multiple instances, only initialize the app once. try: diff --git a/langchain/memory/chat_message_histories/redis.py b/langchain/memory/chat_message_histories/redis.py index dad0c30363396..d9c7a9a3c8443 100644 --- a/langchain/memory/chat_message_histories/redis.py +++ b/langchain/memory/chat_message_histories/redis.py @@ -25,7 +25,7 @@ def __init__( try: import redis except ImportError: - raise ValueError( + raise ImportError( "Could not import redis python package. " "Please install it with `pip install redis`." ) diff --git a/langchain/memory/entity.py b/langchain/memory/entity.py index 70da11af80d52..381b2b188e246 100644 --- a/langchain/memory/entity.py +++ b/langchain/memory/entity.py @@ -91,7 +91,7 @@ def __init__( try: import redis except ImportError: - raise ValueError( + raise ImportError( "Could not import redis python package. " "Please install it with `pip install redis`." ) diff --git a/langchain/retrievers/document_compressors/cohere_rerank.py b/langchain/retrievers/document_compressors/cohere_rerank.py index 41513c656c2a9..7774c3397113c 100644 --- a/langchain/retrievers/document_compressors/cohere_rerank.py +++ b/langchain/retrievers/document_compressors/cohere_rerank.py @@ -41,7 +41,7 @@ def validate_environment(cls, values: Dict) -> Dict: values["client"] = cohere.Client(cohere_api_key) except ImportError: - raise ValueError( + raise ImportError( "Could not import cohere python package. " "Please install it with `pip install cohere`." ) diff --git a/langchain/retrievers/weaviate_hybrid_search.py b/langchain/retrievers/weaviate_hybrid_search.py index 2f743ced101e1..1393a9098a181 100644 --- a/langchain/retrievers/weaviate_hybrid_search.py +++ b/langchain/retrievers/weaviate_hybrid_search.py @@ -23,7 +23,7 @@ def __init__( try: import weaviate except ImportError: - raise ValueError( + raise ImportError( "Could not import weaviate python package. " "Please install it with `pip install weaviate-client`." ) diff --git a/langchain/text_splitter.py b/langchain/text_splitter.py index 06e1fc2a9b148..19b86e60696d3 100644 --- a/langchain/text_splitter.py +++ b/langchain/text_splitter.py @@ -154,7 +154,7 @@ def from_tiktoken_encoder( try: import tiktoken except ImportError: - raise ValueError( + raise ImportError( "Could not import tiktoken python package. " "This is needed in order to calculate max_tokens_for_prompt. " "Please install it with `pip install tiktoken`." @@ -232,7 +232,7 @@ def __init__( try: import tiktoken except ImportError: - raise ValueError( + raise ImportError( "Could not import tiktoken python package. " "This is needed in order to for TokenTextSplitter. " "Please install it with `pip install tiktoken`." diff --git a/langchain/utilities/awslambda.py b/langchain/utilities/awslambda.py index 9a1beebf84b88..292277bc454e9 100644 --- a/langchain/utilities/awslambda.py +++ b/langchain/utilities/awslambda.py @@ -35,7 +35,7 @@ def validate_environment(cls, values: Dict) -> Dict: except ImportError: raise ImportError( - "boto3 is not installed." "Please install it with `pip install boto3`" + "boto3 is not installed. Please install it with `pip install boto3`" ) values["lambda_client"] = boto3.client("lambda") diff --git a/langchain/utilities/google_places_api.py b/langchain/utilities/google_places_api.py index 585a52424a33c..5d62c93045d41 100644 --- a/langchain/utilities/google_places_api.py +++ b/langchain/utilities/google_places_api.py @@ -51,8 +51,8 @@ def validate_environment(cls, values: Dict) -> Dict: values["google_map_client"] = googlemaps.Client(gplaces_api_key) except ImportError: - raise ValueError( - "Could not import googlemaps python packge. " + raise ImportError( + "Could not import googlemaps python package. " "Please install it with `pip install googlemaps`." ) return values diff --git a/langchain/utilities/jira.py b/langchain/utilities/jira.py index dd94fa788c6b7..af6b38a8551b6 100644 --- a/langchain/utilities/jira.py +++ b/langchain/utilities/jira.py @@ -156,7 +156,7 @@ def create(self, query: str) -> str: import json except ImportError: raise ImportError( - "json is not installed. " "Please install it with `pip install json`" + "json is not installed. Please install it with `pip install json`" ) params = json.loads(query) return self.jira.issue_create(fields=dict(params)) diff --git a/langchain/utilities/openweathermap.py b/langchain/utilities/openweathermap.py index 54737bdf835e3..8d753fe1bb955 100644 --- a/langchain/utilities/openweathermap.py +++ b/langchain/utilities/openweathermap.py @@ -38,7 +38,7 @@ def validate_environment(cls, values: Dict) -> Dict: except ImportError: raise ImportError( - "pyowm is not installed. " "Please install it with `pip install pyowm`" + "pyowm is not installed. Please install it with `pip install pyowm`" ) owm = pyowm.OWM(openweathermap_api_key)