docs/versioned_docs/version-1.8.0/Components/components-prompts.mdx
import PartialCurlyBraces from '@site/docs/_partial-escape-curly-braces.mdx';
Use the Prompt Template core component to create a prompt that supplies instructions and context to an LLM or agent, separate from other input like chat messages and file uploads.
Prompts are structured input that use natural language, fixed values, and dynamic variables to provide baseline context for the LLM. For example:
You are a helpful assistant or You are an expert in microbiology.The Prompt Template component can also output variable instructions to other components later in the flow.
| Name | Display Name | Description |
|---|---|---|
| template | Template | Input parameter. Create a prompt template with dynamic variables in curly braces, such as {VARIABLE_NAME}. <PartialCurlyBraces /> |
| use_double_brackets | Use Double Brackets | When enabled, use Mustache syntax {{variable}} instead of f-string syntax {variable}. For more information, see Use Mustache templating in prompt templates. |
Variables in a Prompt Template component dynamically add fields to the Prompt Template component so that your flow can receive definitions for those values from other components, Langflow global variables, or fixed input.
For example, with the Message History component, you can use a {memory} variable to pass chat history to the prompt.
However, the Agent component includes built-in chat memory that is enabled by default.
For more information, see Memory management options.
The following steps demonstrate how to add variables to a Prompt Template component:
Create a flow based on the Basic prompting template.
This template already has a Prompt Template component, but the template only contains natural language instructions: Answer the user as if you were a GenAI expert, enthusiastic about helping them get started building something fresh.
This prompt defines a role for the LLM's chat interactions, but it doesn't include variables that help you create prompts that adapt dynamically to changing contexts, such as different users and environments.
Click the Prompt Template component, and then add some variables to the Template field.
Variables are declared by wrapping the variable name in curly braces, like {variable_name}.
For example, the following template creates context and user_question variables:
Given the context:
{context}
Answer the question:
{user_question}
Click Check & Save to save the template.
After adding the variables to the template, new fields are added to the Prompt Template component for each variable.
Provide input for the variable fields:
You can add as many variables as you like in your template.
For example, you could add variables for {references} and {instructions}, and then feed that information in from other components, such as Text Input, URL, or Read File components.
F-string escaping can become confusing when you mix escaped braces with variables in the same template. For example:
Generate a response in this JSON format:
{{"name": "{name}", "age": {age}, "city": "{city}"}}
The user's name is {name}, age is {age}, and they live in {city}.
The characters {{ and }} are escaped literal braces for the JSON structure, but {name} is a variable.
This can make prompts error-prone and difficult to parse.
Use Mustache in your prompt templates to make the differences clearer.
To enable Mustache templating, do the following:
In the Prompt Template component, enable Use Double Brackets.
In your prompt template, change the variables from {variable} to {{variable}}.
Mustache uses { } for literal braces and {{variable}} for variables.
Generate a response in this JSON format:
{"name": "{{name}}", "age": {{age}}, "city": "{{city}}"}
The user's name is {{name}}, age is {{age}}, and they live in {{city}}.
Click Check & Save. The component lints the template code and returns Prompt is ready if there are no errors. Your prompt is now ready to use in a flow.
Langflow supports variable replacement with double brackets, but does not support the full Mustache engine. The prompt component validation rejects syntax for other Mustache features such as loops and conditionals.