diff --git a/langchain/agents/agent_toolkits/pandas/base.py b/langchain/agents/agent_toolkits/pandas/base.py index 0913337e..40257bf9 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 c8e021c1..5b2cf2c0 100644 --- a/langchain/cache.py +++ b/langchain/cache.py @@ -313,7 +313,7 @@ class GPTCache(BaseCache): 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 96528a76..e59dfa0c 100644 --- a/langchain/chains/moderation.py +++ b/langchain/chains/moderation.py @@ -54,7 +54,7 @@ class OpenAIModerationChain(Chain): 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 b569d522..93d8e5b4 100644 --- a/langchain/chat_models/azure_openai.py +++ b/langchain/chat_models/azure_openai.py @@ -86,7 +86,7 @@ class AzureChatOpenAI(ChatOpenAI): 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 aae71aa7..e8d13059 100644 --- a/langchain/document_loaders/apify_dataset.py +++ b/langchain/document_loaders/apify_dataset.py @@ -41,7 +41,7 @@ class ApifyDatasetLoader(BaseLoader, BaseModel): 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 a808f499..e30fa5f2 100644 --- a/langchain/document_loaders/docugami.py +++ b/langchain/document_loaders/docugami.py @@ -63,7 +63,7 @@ class DocugamiLoader(BaseLoader, BaseModel): 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 @@ class DocugamiLoader(BaseLoader, BaseModel): 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 5b7b0386..43948fe3 100644 --- a/langchain/document_loaders/duckdb_loader.py +++ b/langchain/document_loaders/duckdb_loader.py @@ -33,7 +33,7 @@ class DuckDBLoader(BaseLoader): 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 1837ece6..6df4a03d 100644 --- a/langchain/document_loaders/image_captions.py +++ b/langchain/document_loaders/image_captions.py @@ -39,7 +39,7 @@ class ImageCaptionLoader(BaseLoader): 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 @@ class ImageCaptionLoader(BaseLoader): 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 f1e594b2..153c321b 100644 --- a/langchain/document_loaders/json_loader.py +++ b/langchain/document_loaders/json_loader.py @@ -42,7 +42,7 @@ class JSONLoader(BaseLoader): 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 aaa5b057..afc572cb 100644 --- a/langchain/document_loaders/notebook.py +++ b/langchain/document_loaders/notebook.py @@ -83,7 +83,7 @@ class NotebookLoader(BaseLoader): 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 0d49902e..4129f80f 100644 --- a/langchain/document_loaders/onedrive.py +++ b/langchain/document_loaders/onedrive.py @@ -77,7 +77,7 @@ class OneDriveLoader(BaseLoader, BaseModel): 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 9a61f36c..5f204f1f 100644 --- a/langchain/document_loaders/pdf.py +++ b/langchain/document_loaders/pdf.py @@ -103,7 +103,7 @@ class PyPDFLoader(BasePDFLoader): 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 @@ class PDFMinerLoader(BasePDFLoader): 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 @@ class PDFMinerPDFasHTMLLoader(BasePDFLoader): 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 @@ class PyMuPDFLoader(BasePDFLoader): 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 @@ class PDFPlumberLoader(BasePDFLoader): 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 b35f2687..bb10a0e9 100644 --- a/langchain/document_loaders/readthedocs.py +++ b/langchain/document_loaders/readthedocs.py @@ -19,9 +19,8 @@ class ReadTheDocsLoader(BaseLoader): """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 31386539..0c842d05 100644 --- a/langchain/document_loaders/s3_directory.py +++ b/langchain/document_loaders/s3_directory.py @@ -19,7 +19,7 @@ class S3DirectoryLoader(BaseLoader): 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 3625ed0e..246b0095 100644 --- a/langchain/document_loaders/s3_file.py +++ b/langchain/document_loaders/s3_file.py @@ -21,7 +21,7 @@ class S3FileLoader(BaseLoader): 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 826692a1..029f12f7 100644 --- a/langchain/document_loaders/sitemap.py +++ b/langchain/document_loaders/sitemap.py @@ -58,7 +58,7 @@ class SitemapLoader(WebBaseLoader): 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 @@ class SitemapLoader(WebBaseLoader): 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 ce38f1c2..ee26d323 100644 --- a/langchain/document_loaders/srt.py +++ b/langchain/document_loaders/srt.py @@ -13,8 +13,8 @@ class SRTLoader(BaseLoader): 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 795e1879..3e4bf0e5 100644 --- a/langchain/document_loaders/telegram.py +++ b/langchain/document_loaders/telegram.py @@ -226,7 +226,7 @@ class TelegramChatApiLoader(BaseLoader): 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 @@ class TelegramChatApiLoader(BaseLoader): 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 2b1afd77..1cf93321 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 15739263..d68cf105 100644 --- a/langchain/document_loaders/url_playwright.py +++ b/langchain/document_loaders/url_playwright.py @@ -30,7 +30,7 @@ class PlaywrightURLLoader(BaseLoader): 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 9a315ccc..5cc3f0ce 100644 --- a/langchain/document_loaders/url_selenium.py +++ b/langchain/document_loaders/url_selenium.py @@ -40,7 +40,7 @@ class SeleniumURLLoader(BaseLoader): 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 @@ class SeleniumURLLoader(BaseLoader): 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 e4fe18b2..a107dc02 100644 --- a/langchain/embeddings/cohere.py +++ b/langchain/embeddings/cohere.py @@ -48,7 +48,7 @@ class CohereEmbeddings(BaseModel, Embeddings): 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 2d87ae0d..04e0c76e 100644 --- a/langchain/embeddings/huggingface.py +++ b/langchain/embeddings/huggingface.py @@ -46,7 +46,7 @@ class HuggingFaceEmbeddings(BaseModel, Embeddings): 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 b5b3d8ce..d980ee3a 100644 --- a/langchain/embeddings/jina.py +++ b/langchain/embeddings/jina.py @@ -34,7 +34,7 @@ class JinaEmbeddings(BaseModel, Embeddings): 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 9eb48852..f0e2215e 100644 --- a/langchain/embeddings/openai.py +++ b/langchain/embeddings/openai.py @@ -178,7 +178,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings): 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 @@ class OpenAIEmbeddings(BaseModel, 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 0dc43923..1e699ecb 100644 --- a/langchain/embeddings/tensorflow_hub.py +++ b/langchain/embeddings/tensorflow_hub.py @@ -30,13 +30,20 @@ class TensorflowHubEmbeddings(BaseModel, Embeddings): 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 813eb3f2..753db5fc 100644 --- a/langchain/graphs/networkx_graph.py +++ b/langchain/graphs/networkx_graph.py @@ -54,7 +54,7 @@ class 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`." ) @@ -70,7 +70,7 @@ class 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 bcdbebf8..384fd265 100644 --- a/langchain/llms/aleph_alpha.py +++ b/langchain/llms/aleph_alpha.py @@ -148,7 +148,7 @@ class AlephAlpha(LLM): 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 5c2349f4..a6cf9ce9 100644 --- a/langchain/llms/anthropic.py +++ b/langchain/llms/anthropic.py @@ -59,7 +59,7 @@ class _AnthropicCommon(BaseModel): 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 8d95c1ed..353c9dca 100644 --- a/langchain/llms/bananadev.py +++ b/langchain/llms/bananadev.py @@ -91,7 +91,7 @@ class Banana(LLM): 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 2eff193b..6da6cf9e 100644 --- a/langchain/llms/cohere.py +++ b/langchain/llms/cohere.py @@ -72,7 +72,7 @@ class Cohere(LLM): 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 ee709cba..530cc2e9 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 @@ class GooglePalm(BaseLLM, BaseModel): 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 571feb2b..e1a3f8db 100644 --- a/langchain/llms/gooseai.py +++ b/langchain/llms/gooseai.py @@ -100,7 +100,7 @@ class GooseAI(LLM): 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 987db842..d121b3b9 100644 --- a/langchain/llms/huggingface_text_gen_inference.py +++ b/langchain/llms/huggingface_text_gen_inference.py @@ -97,7 +97,7 @@ class HuggingFaceTextGenInference(LLM): 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 72f6b38e..d901e6b7 100644 --- a/langchain/llms/nlpcloud.py +++ b/langchain/llms/nlpcloud.py @@ -75,7 +75,7 @@ class NLPCloud(LLM): 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 c48837cc..d9dca1bb 100644 --- a/langchain/llms/openai.py +++ b/langchain/llms/openai.py @@ -234,7 +234,7 @@ class BaseOpenAI(BaseLLM): 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 @@ class BaseOpenAI(BaseLLM): 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 @@ class OpenAIChat(BaseLLM): 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 @@ class OpenAIChat(BaseLLM): 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 4309cae5..228f81ff 100644 --- a/langchain/llms/predictionguard.py +++ b/langchain/llms/predictionguard.py @@ -50,7 +50,7 @@ class PredictionGuard(LLM): 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 b1dfaf47..117d8dde 100644 --- a/langchain/llms/replicate.py +++ b/langchain/llms/replicate.py @@ -89,7 +89,7 @@ class Replicate(LLM): 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 0e873d48..b2643d90 100644 --- a/langchain/llms/rwkv.py +++ b/langchain/llms/rwkv.py @@ -103,7 +103,7 @@ class RWKV(LLM, BaseModel): 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 80cb663f..f793aae1 100644 --- a/langchain/llms/sagemaker_endpoint.py +++ b/langchain/llms/sagemaker_endpoint.py @@ -182,7 +182,7 @@ class SagemakerEndpoint(LLM): ) 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 e7e51725..7d36643b 100644 --- a/langchain/llms/self_hosted.py +++ b/langchain/llms/self_hosted.py @@ -155,7 +155,7 @@ class SelfHostedPipeline(LLM): 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 15bbe253..dbbf3ff1 100644 --- a/langchain/memory/chat_message_histories/firestore.py +++ b/langchain/memory/chat_message_histories/firestore.py @@ -52,13 +52,11 @@ class FirestoreChatMessageHistory(BaseChatMessageHistory): 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 dad0c303..d9c7a9a3 100644 --- a/langchain/memory/chat_message_histories/redis.py +++ b/langchain/memory/chat_message_histories/redis.py @@ -25,7 +25,7 @@ class RedisChatMessageHistory(BaseChatMessageHistory): 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 70da11af..381b2b18 100644 --- a/langchain/memory/entity.py +++ b/langchain/memory/entity.py @@ -91,7 +91,7 @@ class RedisEntityStore(BaseEntityStore): 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 41513c65..7774c339 100644 --- a/langchain/retrievers/document_compressors/cohere_rerank.py +++ b/langchain/retrievers/document_compressors/cohere_rerank.py @@ -41,7 +41,7 @@ class CohereRerank(BaseDocumentCompressor): 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 2f743ced..1393a909 100644 --- a/langchain/retrievers/weaviate_hybrid_search.py +++ b/langchain/retrievers/weaviate_hybrid_search.py @@ -23,7 +23,7 @@ class WeaviateHybridSearchRetriever(BaseRetriever): 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 06e1fc2a..19b86e60 100644 --- a/langchain/text_splitter.py +++ b/langchain/text_splitter.py @@ -154,7 +154,7 @@ class TextSplitter(BaseDocumentTransformer, ABC): 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 @@ class TokenTextSplitter(TextSplitter): 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 9a1beebf..292277bc 100644 --- a/langchain/utilities/awslambda.py +++ b/langchain/utilities/awslambda.py @@ -35,7 +35,7 @@ class LambdaWrapper(BaseModel): 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 585a5242..5d62c930 100644 --- a/langchain/utilities/google_places_api.py +++ b/langchain/utilities/google_places_api.py @@ -51,8 +51,8 @@ class GooglePlacesAPIWrapper(BaseModel): 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 dd94fa78..af6b38a8 100644 --- a/langchain/utilities/jira.py +++ b/langchain/utilities/jira.py @@ -156,7 +156,7 @@ class JiraAPIWrapper(BaseModel): 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 54737bdf..8d753fe1 100644 --- a/langchain/utilities/openweathermap.py +++ b/langchain/utilities/openweathermap.py @@ -38,7 +38,7 @@ class OpenWeatherMapAPIWrapper(BaseModel): 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)