mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-13 13:36:15 +00:00
Harrison/pipeline prompt (#5540)
idea is to make prompts more composable
This commit is contained in:
45
tests/unit_tests/prompts/test_pipeline_prompt.py
Normal file
45
tests/unit_tests/prompts/test_pipeline_prompt.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from langchain.prompts.chat import ChatPromptTemplate, MessagesPlaceholder
|
||||
from langchain.prompts.pipeline import PipelinePromptTemplate
|
||||
from langchain.prompts.prompt import PromptTemplate
|
||||
|
||||
|
||||
def test_get_input_variables() -> None:
|
||||
prompt_a = PromptTemplate.from_template("{foo}")
|
||||
prompt_b = PromptTemplate.from_template("{bar}")
|
||||
pipeline_prompt = PipelinePromptTemplate(
|
||||
final_prompt=prompt_b, pipeline_prompts=[("bar", prompt_a)]
|
||||
)
|
||||
assert pipeline_prompt.input_variables == ["foo"]
|
||||
|
||||
|
||||
def test_simple_pipeline() -> None:
|
||||
prompt_a = PromptTemplate.from_template("{foo}")
|
||||
prompt_b = PromptTemplate.from_template("{bar}")
|
||||
pipeline_prompt = PipelinePromptTemplate(
|
||||
final_prompt=prompt_b, pipeline_prompts=[("bar", prompt_a)]
|
||||
)
|
||||
output = pipeline_prompt.format(foo="jim")
|
||||
assert output == "jim"
|
||||
|
||||
|
||||
def test_multi_variable_pipeline() -> None:
|
||||
prompt_a = PromptTemplate.from_template("{foo}")
|
||||
prompt_b = PromptTemplate.from_template("okay {bar} {baz}")
|
||||
pipeline_prompt = PipelinePromptTemplate(
|
||||
final_prompt=prompt_b, pipeline_prompts=[("bar", prompt_a)]
|
||||
)
|
||||
output = pipeline_prompt.format(foo="jim", baz="deep")
|
||||
assert output == "okay jim deep"
|
||||
|
||||
|
||||
def test_partial_with_chat_prompts() -> None:
|
||||
prompt_a = ChatPromptTemplate(
|
||||
input_variables=["foo"], messages=[MessagesPlaceholder(variable_name="foo")]
|
||||
)
|
||||
prompt_b = ChatPromptTemplate.from_template("jim {bar}")
|
||||
pipeline_prompt = PipelinePromptTemplate(
|
||||
final_prompt=prompt_a, pipeline_prompts=[("foo", prompt_b)]
|
||||
)
|
||||
assert pipeline_prompt.input_variables == ["bar"]
|
||||
output = pipeline_prompt.format_prompt(bar="okay")
|
||||
assert output.to_messages()[0].content == "jim okay"
|
Reference in New Issue
Block a user