From 8e386613ace5b65af8ec655a8281ad2350c9139a Mon Sep 17 00:00:00 2001 From: engkheng <60956360+outday29@users.noreply.github.com> Date: Wed, 19 Apr 2023 12:23:03 +0800 Subject: [PATCH] Import jinja2 only when used (#3123) Addressing #3113 --- langchain/prompts/base.py | 2 +- langchain/prompts/prompt.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/langchain/prompts/base.py b/langchain/prompts/base.py index 2038f301..c0c747ae 100644 --- a/langchain/prompts/base.py +++ b/langchain/prompts/base.py @@ -18,7 +18,7 @@ def jinja2_formatter(template: str, **kwargs: Any) -> str: try: from jinja2 import Template except ImportError: - raise ValueError( + raise ImportError( "jinja2 not installed, which is needed to use the jinja2_formatter. " "Please install it with `pip install jinja2`." ) diff --git a/langchain/prompts/prompt.py b/langchain/prompts/prompt.py index 18a18514..af6ff29e 100644 --- a/langchain/prompts/prompt.py +++ b/langchain/prompts/prompt.py @@ -5,7 +5,6 @@ from pathlib import Path from string import Formatter from typing import Any, Dict, List, Set, Union -from jinja2 import Environment, meta from pydantic import Extra, root_validator from langchain.prompts.base import ( @@ -16,6 +15,13 @@ from langchain.prompts.base import ( def _get_jinja2_variables_from_template(template: str) -> Set[str]: + try: + from jinja2 import Environment, meta + except ImportError: + raise ImportError( + "jinja2 not installed, which is needed to use the jinja2_formatter. " + "Please install it with `pip install jinja2`." + ) env = Environment() ast = env.parse(template) variables = meta.find_undeclared_variables(ast)