From 71cd6523a422737eede92c013ae0622377efcf7b Mon Sep 17 00:00:00 2001 From: Harrison Chase Date: Sat, 12 Nov 2022 06:55:08 -0800 Subject: [PATCH] cr --- langchain/chains/llm_math/prompt.py | 1 + langchain/chains/react/prompt.py | 1 + langchain/chains/self_ask_with_search/prompt.py | 1 + langchain/prompts/data.py | 3 ++- langchain/prompts/dynamic.py | 3 ++- tests/unit_tests/test_prompt.py | 4 ++-- 6 files changed, 9 insertions(+), 4 deletions(-) diff --git a/langchain/chains/llm_math/prompt.py b/langchain/chains/llm_math/prompt.py index 1cab5948..a704006b 100644 --- a/langchain/chains/llm_math/prompt.py +++ b/langchain/chains/llm_math/prompt.py @@ -35,6 +35,7 @@ class LLMMathExample(BaseExample): question: str answer: str + @property def formatted(self) -> str: return f"Question: {self.question}\n\n{self.answer}" diff --git a/langchain/chains/react/prompt.py b/langchain/chains/react/prompt.py index 6f8b39fd..6447440b 100644 --- a/langchain/chains/react/prompt.py +++ b/langchain/chains/react/prompt.py @@ -12,6 +12,7 @@ class ReActExample(BaseExample): question: str answer: str + @property def formatted(self) -> str: return f"Question: {self.question}\n{self.answer}" diff --git a/langchain/chains/self_ask_with_search/prompt.py b/langchain/chains/self_ask_with_search/prompt.py index 1301c32c..60529c1c 100644 --- a/langchain/chains/self_ask_with_search/prompt.py +++ b/langchain/chains/self_ask_with_search/prompt.py @@ -12,6 +12,7 @@ class SelfAskWithSearchExample(BaseExample): question: str answer: str + @property def formatted(self) -> str: return f"Question: {self.question}\n{self.answer}" diff --git a/langchain/prompts/data.py b/langchain/prompts/data.py index 50348c09..518e206c 100644 --- a/langchain/prompts/data.py +++ b/langchain/prompts/data.py @@ -6,8 +6,8 @@ from pydantic import BaseModel class BaseExample(BaseModel, ABC): """Base class for examples.""" - @abstractmethod @property + @abstractmethod def formatted(self) -> str: """Returns a formatted example as a string.""" @@ -16,6 +16,7 @@ class SimpleExample(BaseExample): text: str + @property def formatted(self) -> str: return self.text diff --git a/langchain/prompts/dynamic.py b/langchain/prompts/dynamic.py index c58c86e2..ad51669b 100644 --- a/langchain/prompts/dynamic.py +++ b/langchain/prompts/dynamic.py @@ -116,7 +116,8 @@ class DynamicPrompt(BaseModel, BasePrompt): ) return values - @root_validator() + # Needs to be pre=True to convert to the right type. + @root_validator(pre=True) def convert_examples(cls, values: Dict) -> Dict: values["examples"] = convert_to_examples(values["examples"]) return values diff --git a/tests/unit_tests/test_prompt.py b/tests/unit_tests/test_prompt.py index 45040793..04f2071f 100644 --- a/tests/unit_tests/test_prompt.py +++ b/tests/unit_tests/test_prompt.py @@ -51,8 +51,8 @@ Question: {question} Answer:""" input_variables = ["question"] example_separator = "\n\n" - prefix = """Test Prompt:\n\n""" - suffix = """\n\nQuestion: {question}\nAnswer:""" + prefix = """Test Prompt:""" + suffix = """Question: {question}\nAnswer:""" examples = [ """Question: who are you?\nAnswer: foo""", """Question: what are you?\nAnswer: bar""",