Prompt templates
{column} placeholders.Placeholders
prompt: "Translate to English: {sentence}"Each {name} is replaced with that row's value from an input or context column. Column names can contain spaces: {Source sentence} works. An empty cell becomes an empty string.
The template must use at least one placeholder, or every row would get the same prompt. A placeholder that is not an input or context column is an error, reported before any request is sent. The expected column is never available, so the answer cannot leak into the prompt.
Literal braces
Write {{ and }} for literal braces, for example when asking for JSON:
prompt: |-
Extract the entities from the text as JSON, like {{"person": [...], "place": [...]}}.
Text: {text}System prompts
Give the prompt as an object to add a system message. Placeholders work in both parts.
prompt:
system: You are a careful annotator for sentiment analysis research.
user: |-
Classify the sentiment of this {language} text as "positive" or "negative".
Answer with one word.
Text: {text}Multi-line prompts in YAML
Use |- for a block that keeps line breaks and drops the final newline. Indent every line of the block by the same amount.
Tips for scoreable answers
- Ask for the answer format you will score, such as "Answer with one word" for classification or "Answer with the number only" for arithmetic.
- For classification, give the
accuracyorf1metric alabelslist, so a chatty answer like "The sentiment is positive." still counts aspositive. - Check a few outputs in
results.xlsxbefore trusting a score. Formatting problems show up in the Outputs sheet straight away.
From Python
from paperlab_space import PromptTemplate
template = PromptTemplate("Translate to English: {sentence}", system="Be literal.")
print(template.variables) # ['sentence']
print(template.render({"sentence": "สวัสดี"})) # chat messagesA plain string works wherever a template is expected, such as RunConfig(prompt="...").