Prompt from file proof of concept using plain text (#127)

This is a simple proof of concept of using external files as templates. 
I'm still feeling my way around the codebase.
As a user, I want to use files as prompts, so it will be easier to
manage and test prompts.
The future direction is to use a template engine, most likely Mako.
harrison/ape
Edmar Ferreira 2 years ago committed by GitHub
parent d87e73ddb1
commit 8a5ec894e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -97,3 +97,18 @@ class Prompt(BaseModel, BasePrompt):
example_str = example_separator.join(examples)
template = prefix + example_str + suffix
return cls(input_variables=input_variables, template=template)
@classmethod
def from_file(cls, template_file: str, input_variables: List[str]) -> "Prompt":
"""Load a prompt from a file.
Args:
template_file: The path to the file containing the prompt template.
input_variables: A list of variable names the final prompt template
will expect.
Returns:
The prompt loaded from the file.
"""
with open(template_file, "r") as f:
template = f.read()
return cls(input_variables=input_variables, template=template)

@ -0,0 +1,2 @@
Question: {question}
Answer:

@ -77,3 +77,11 @@ def test_prompt_invalid_template_format() -> None:
Prompt(
input_variables=input_variables, template=template, template_format="bar"
)
def test_prompt_from_file() -> None:
"""Test prompt can be successfully constructed from a file."""
template_file = "tests/unit_tests/data/prompt_file.txt"
input_variables = ["question"]
prompt = Prompt.from_file(template_file, input_variables)
assert prompt.template == "Question: {question}\nAnswer:"

Loading…
Cancel
Save