Lesson 23 / 31
Prompt Management and Versioning
Store prompts as versioned objects with labels, fetch them at runtime and link them to traces.
By Rahul Agarwal · 15 years in web development
Prompts as managed configuration
When prompts are hard-coded strings, every wording change needs a code deploy and nobody can tell which version produced a given answer. Prompt management treats prompts as versioned configuration. In Langfuse, each save of a prompt creates a new version, and labels such as production or staging point to specific versions; your app fetches the prompt by name (the production label by default), fills in variables, and moves to a new version when someone reassigns the label, with no code change. LangSmith offers a similar prompt hub with commits and tags. The SDKs cache fetched prompts so you do not add a network call to every request. The observability payoff comes from linking: when the generation records which prompt version it used, you can filter traces, costs and scores by version and compare them directly. Keep a fallback prompt in code in case the prompt service is unreachable at startup.
Prompt release cycle
A prompt is edited, saved as a new version, labelled for an environment, fetched by the app, and its traces are compared with the previous version.
Create, fetch and link a prompt (Langfuse)
Variables use double curly braces. Passing prompt= to the generation links the trace to that prompt version.
from langfuse import get_client
langfuse = get_client()
langfuse.create_prompt(
name="support-answer",
type="text",
prompt="You are a support agent for {{product}}. Answer briefly: {{question}}",
labels=["staging"],
)
prompt = langfuse.get_prompt("support-answer", label="staging")
text = prompt.compile(product="SkillByAI", question="Is the course free?")
with langfuse.start_as_current_generation(
name="answer", model="my-chat-model", input=text, prompt=prompt
) as gen:
gen.update(output="Yes, all courses are free.")
langfuse.flush()Who can change production?
Moving the production label changes live behaviour without a deploy. Treat it like a deploy: restrict who can do it, run the dataset experiment first, and note the change so a quality drop can be traced back to it.
Quick check: In Langfuse prompt management, what does moving the `production` label to version 7 do?
- Deletes versions 1 to 6
- Requires redeploying the application
- Makes apps that fetch the production label start using version 7, without a code change
- Renames the prompt
Answer
Makes apps that fetch the production label start using version 7, without a code change — Labels are pointers to versions. Apps fetching by label pick up the new version (after their cache refreshes) while old versions remain available for rollback.