提示词版本控制
在 Langfuse 中,提示词的版本控制和部署通过 versions(版本)和 labels(标签)来管理。
版本与标签
每个提示词版本会自动分配一个 version ID。此外,你还可以分配 labels 来遵循你自己的版本方案。
标签可用于将提示词分配给环境(staging、production)、租户(tenant-1、tenant-2)或实验(prod-a、prod-b)。
使用 Langfuse UI 为提示词分配标签:
使用 Python SDK 在创建新提示词版本时分配标签:
langfuse.create_prompt(
name="movie-critic",
type="text",
prompt="As a {{criticlevel}} movie critic, do you like {{movie}}?",
labels=["production"], # add the label "production" to the prompt version
)
或者,你也可以使用 Python SDK 更新现有提示词版本的标签:
langfuse = Langfuse()
langfuse.update_prompt(
name="movie-critic",
version=1,
new_labels=["john", "doe"], # assign these labels to the prompt version
)
使用 JS/TS SDK 在创建新提示词版本时分配标签:
import { LangfuseClient } from "@langfuse/client";
const langfuse = new LangfuseClient();
await langfuse.prompt.create({
name: "movie-critic",
type: "text",
prompt: "As a {{criticlevel}} critic, do you like {{movie}}?",
labels: ["production"], // add the label "production" to the prompt version
});
或者,你也可以使用 JS/TS SDK 更新现有提示词版本的标签:
await langfuse.prompt.update({
name: "movie-critic",
version: 1,
newLabels: ["john", "doe"],
});
按标签或版本获取
获取提示词以在应用中使用时,你可以获取特定版本,也可以获取特定标签。 下面是按标签或版本获取提示词的代码示例。
要"部署"某个提示词版本,你需要为该版本分配 production 标签,或你创建的任何环境标签。
关于获取提示词的一些说明:
latest标签指向最近创建的版本。- 在不指定标签的情况下使用提示词时,Langfuse 会提供带有
production标签的版本。
from langfuse import get_client
# Initialize Langfuse client
langfuse = get_client()
# Get specific version
prompt = langfuse.get_prompt("movie-critic", version=1)
# Get specific label
prompt = langfuse.get_prompt("movie-critic", label="staging")
# Get latest prompt version. The 'latest' label is automatically maintained by Langfuse.
prompt = langfuse.get_prompt("movie-critic", label="latest")
import { LangfuseClient } from "@langfuse/client";
const langfuse = new LangfuseClient();
// Get specific version of a prompt (here version 1)
const prompt = await langfuse.prompt.get("movie-critic", {
version: 1,
});
// Get specific label
const prompt = await langfuse.prompt.get("movie-critic", {
label: "staging",
});
// Get latest prompt version. The 'latest' label is automatically maintained by Langfuse.
const prompt = await langfuse.prompt.get("movie-critic", {
label: "latest",
});
回滚
当提示词有 production 标签时,SDK 默认会提供该版本。你可以在 Langfuse UI 中把 production 标签设置回之前的版本,从而快速回滚到之前的版本。
提示词 Diff
提示词版本 diff 视图展示你随时间对提示词所做的修改。这帮助你理解提示词如何演进、做了哪些修改,从而调试问题或理解变更的影响。
受保护的提示词标签
受保护的提示词标签在 Pro 计划(团队附加项)和 Enterprise 计划中可用,自托管版本为企业版功能。
受保护的提示词标签让项目管理员和所有者(RBAC 文档)能够防止标签被修改或删除,确保对提示词部署有更好的控制。
一旦像 production 这样的标签被标记为受保护:
viewer和member角色无法修改或删除提示词上的该标签,从而防止更改production提示词版本。这同时也会阻止删除该提示词。admin和owner角色仍然可以修改或删除该标签,实际上可以更改production提示词版本。
管理员和所有者可以在项目设置中更新标签的保护状态。
相关资源
- 提示词的作用域是项目——如果你为不同环境使用独立的项目,参见如何在它们之间同步提示词
- 要在提升标签之前对比数据集上的提示词版本,请运行实验。