diff --git a/tests/test_prompts_template.py b/tests/test_prompts_template.py new file mode 100644 index 000000000..b45b0989f --- /dev/null +++ b/tests/test_prompts_template.py @@ -0,0 +1,197 @@ +from fastapi.testclient import TestClient +from langflow.settings import settings + + +def test_prompts_settings(client: TestClient): + response = client.get("/all") + assert response.status_code == 200 + json_response = response.json() + prompts = json_response["prompts"] + assert set(prompts.keys()) == set(settings.prompts) + + +def test_prompt_template(client: TestClient): + response = client.get("/all") + assert response.status_code == 200 + json_response = response.json() + prompts = json_response["prompts"] + + prompt = prompts["PromptTemplate"] + template = prompt["template"] + assert template["input_variables"] == { + "required": True, + "placeholder": "", + "show": False, + "multiline": False, + "password": False, + "name": "input_variables", + "type": "str", + "list": True, + } + assert template["output_parser"] == { + "required": False, + "placeholder": "", + "show": False, + "multiline": False, + "password": False, + "name": "output_parser", + "type": "BaseOutputParser", + "list": False, + } + assert template["partial_variables"] == { + "required": False, + "placeholder": "", + "show": False, + "multiline": False, + "password": False, + "name": "partial_variables", + "type": "code", + "list": False, + } + assert template["template"] == { + "required": True, + "placeholder": "", + "show": True, + "multiline": True, + "password": False, + "name": "template", + "type": "prompt", + "list": False, + } + assert template["template_format"] == { + "required": False, + "placeholder": "", + "show": False, + "multiline": False, + "value": "f-string", + "password": False, + "name": "template_format", + "type": "str", + "list": False, + } + assert template["validate_template"] == { + "required": False, + "placeholder": "", + "show": False, + "multiline": False, + "value": True, + "password": False, + "name": "validate_template", + "type": "bool", + "list": False, + } + + +def test_few_shot_prompt_template(client: TestClient): + response = client.get("/all") + assert response.status_code == 200 + json_response = response.json() + prompts = json_response["prompts"] + + prompt = prompts["FewShotPromptTemplate"] + template = prompt["template"] + # Test other fields in the template similar to PromptTemplate + assert template["examples"] == { + "required": False, + "placeholder": "", + "show": True, + "multiline": True, + "password": False, + "name": "examples", + "type": "prompt", + "list": True, + } + assert template["example_selector"] == { + "required": False, + "placeholder": "", + "show": False, + "multiline": False, + "password": False, + "name": "example_selector", + "type": "BaseExampleSelector", + "list": False, + } + assert template["example_prompt"] == { + "required": True, + "placeholder": "", + "show": True, + "multiline": False, + "password": False, + "name": "example_prompt", + "type": "PromptTemplate", + "list": False, + } + assert template["suffix"] == { + "required": True, + "placeholder": "", + "show": True, + "multiline": True, + "password": False, + "name": "suffix", + "type": "prompt", + "list": False, + } + assert template["example_separator"] == { + "required": False, + "placeholder": "", + "show": False, + "multiline": False, + "value": "\n\n", + "password": False, + "name": "example_separator", + "type": "str", + "list": False, + } + assert template["prefix"] == { + "required": False, + "placeholder": "", + "show": True, + "multiline": True, + "value": "", + "password": False, + "name": "prefix", + "type": "prompt", + "list": False, + } + + +def test_zero_shot_prompt(client: TestClient): + response = client.get("/all") + assert response.status_code == 200 + json_response = response.json() + prompts = json_response["prompts"] + prompt = prompts["ZeroShotPrompt"] + template = prompt["template"] + assert template["prefix"] == { + "required": False, + "placeholder": "", + "show": True, + "multiline": True, + "value": "Answer the following questions as best you can. You have access to the following tools:", + "password": False, + "name": "prefix", + "type": "str", + "list": False, + } + assert template["suffix"] == { + "required": True, + "placeholder": "", + "show": True, + "multiline": True, + "value": "Begin!\n\nQuestion: {input}\nThought:{agent_scratchpad}", + "password": False, + "name": "suffix", + "type": "str", + "list": False, + } + assert template["format_instructions"] == { + "required": False, + "placeholder": "", + "show": False, + "multiline": False, + "value": "Use the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one of [{tool_names}]\nAction Input: the input to the action\nObservation: the result of the action\n... (this Thought/Action/Action Input/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question", + "password": False, + "name": "format_instructions", + "type": "str", + "list": False, + }