promptkbBETA
← Field guidePRACTICAL FIELD NOTE

Separate instructions from inputs

Make reusable prompts easier to edit, inspect, and debug.

A reusable prompt has a stable task and changing context. Keeping those separate makes it easier to understand why a result changed.

Give the task a clear contract

Describe the task, the evidence the model may use, the output format, and what to do when information is missing. Avoid adding a long persona that has no measurable effect on the task.

Summarize the source for {{audience}}.
Use only the source. Mark missing information as unknown.
Return three findings, each with a supporting quote.

SOURCE:
{{source}}

Use variables for changing information

The workbench recognizes names such as {{source}}, {{audience}}, and {{report_date}}. Names must start with an ASCII letter and contain only letters, numbers, or underscores. Names are case-sensitive. Spaces just inside the braces are allowed.

A repeated variable uses the same value everywhere. Blank values remain visible as placeholders in the output. Variable values are inserted once: if the source itself contains {{another_name}}, that text is not expanded. Prompts and inputs are rendered as text, not HTML.

Label the source, but don't confuse labeling with isolation

Clear boundaries and “treat this as data” instructions can help the model understand intent. They are not a security guarantee. Malicious text can still influence a model. Do not give an AI tool access to secrets or destructive actions merely because the prompt tells it to ignore malicious instructions.

Specify uncertainty

Tell the model what to do if a value is unknown or two statements conflict. For extraction, that may mean JSON null plus a warning. For a decision memo, it may mean a provisional recommendation and a question that could change it.

Keep context proportionate

Include the material needed to do the task, not every document available. Verify any model's context limits in its documentation. This workbench shows a word count, not a token count; different models tokenize text differently.

Try it in the workbench →