mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-13 14:50:00 +00:00
Apply change
This commit is contained in:
parent
5ecbb5f277
commit
84f8b99cf5
@ -137,11 +137,8 @@ class PromptTemplate(StringPromptTemplate):
|
||||
"""Override the + operator to allow for combining prompt templates."""
|
||||
# Allow for easy combining
|
||||
if isinstance(other, PromptTemplate):
|
||||
if self.template_format != "f-string":
|
||||
msg = "Adding prompt templates only supported for f-strings."
|
||||
raise ValueError(msg)
|
||||
if other.template_format != "f-string":
|
||||
msg = "Adding prompt templates only supported for f-strings."
|
||||
if self.template_format != other.template_format:
|
||||
msg = "Cannot add two templates of different formats"
|
||||
raise ValueError(msg)
|
||||
input_variables = list(
|
||||
set(self.input_variables) | set(other.input_variables)
|
||||
@ -159,11 +156,11 @@ class PromptTemplate(StringPromptTemplate):
|
||||
template=template,
|
||||
input_variables=input_variables,
|
||||
partial_variables=partial_variables,
|
||||
template_format="f-string",
|
||||
template_format=self.template_format,
|
||||
validate_template=validate_template,
|
||||
)
|
||||
if isinstance(other, str):
|
||||
prompt = PromptTemplate.from_template(other)
|
||||
prompt = PromptTemplate.from_template(other, template_format=self.template_format)
|
||||
return self + prompt
|
||||
msg = f"Unsupported operand type for +: {type(other)}"
|
||||
raise NotImplementedError(msg)
|
||||
|
@ -681,3 +681,30 @@ def test_prompt_with_template_variable_name_jinja2() -> None:
|
||||
template = "This is a {{template}} test."
|
||||
prompt = PromptTemplate.from_template(template, template_format="jinja2")
|
||||
assert prompt.invoke({"template": "bar"}).to_string() == "This is a bar test."
|
||||
|
||||
|
||||
def test_prompt_template_add_with_with_another_format():
|
||||
with pytest.raises(match=r"Cannot add two templates"):
|
||||
PromptTemplate.from_template("This is a {template}") + PromptTemplate.from_template("So {{this}} is", template_format="mustache")
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"template_format, prompt1, prompt2",
|
||||
[
|
||||
("f-string", "This is a {variable}", ". This is {another_variable}"),
|
||||
pytest.param("jinja2", "This is a {{variable}}", ". This is {{another_variable}}", marks=[pytest.mark.requires("jinja2")]),
|
||||
("mustache", "This is a {{variable}}", ". This is {{another_variable}}"),
|
||||
]
|
||||
)
|
||||
def test_prompt_template_add(template_format: str, prompt1: str, prompt2: str) -> None:
|
||||
first_prompt = PromptTemplate.from_template(prompt1, template_format=template_format)
|
||||
second_prompt = PromptTemplate.from_template(prompt2, template_format=template_format)
|
||||
|
||||
concated_prompt = first_prompt + second_prompt
|
||||
prompt_of_concated = PromptTemplate.from_template(prompt1 + prompt2, template_format=template_format)
|
||||
|
||||
assert concated_prompt.input_variables == prompt_of_concated.input_variables
|
||||
assert (
|
||||
concated_prompt.format(variable="template", another_variable="other_template") ==
|
||||
prompt_of_concated.format(variable="template", another_variable="other_template")
|
||||
)
|
Loading…
Reference in New Issue
Block a user