Prompt Management
Prompt Management 是系统化管理 Prompt 模板的工程实践,包括版本控制、A/B 测试、动态组装和效果追踪。它不是"写 Prompt",而是"管理 Prompt"。
#type / concept
#status / evergreen
#tech / ai
#tech / architecture
[!info] related notes
Prompt Management
一句话定义
Prompt Management 是系统化管理 Prompt 模板的工程实践。Prompt 不应该硬编码在代码里,而应该像配置一样可以版本化、可以回滚、可以 A/B 测试。
它解决什么问题
Prompt 散落在代码各处时:
- 改一个 Prompt 要改代码、发版
- 无法追踪哪个版本的 Prompt 效果更好
- 无法 A/B 测试不同 Prompt
- 无法复用 Prompt 片段
核心原理
Prompt 管理架构
Prompt Registry (存储)
│
▼
Prompt Loader (加载 + 版本选择)
│
▼
Prompt Template (模板 + 变量替换)
│
▼
Context Assembly (和上下文组装)
│
▼
LLM 调用
Python 实现
class PromptRegistry:
def __init__(self, store: PromptStore):
self.store = store
def get(self, name: str, version: str = "latest") -> PromptTemplate:
raw = self.store.load(name, version)
return PromptTemplate(name=name, template=raw["template"], variables=raw["variables"])
def list_versions(self, name: str) -> list[str]:
return self.store.list_versions(name)
def publish(self, name: str, template: str, variables: list[str]):
self.store.save(name, {
"template": template,
"variables": variables,
"published_at": datetime.now(),
})
class PromptTemplate:
def __init__(self, name: str, template: str, variables: list[str]):
self.name = name
self.template = template
self.variables = variables
def render(self, **kwargs) -> str:
# 验证必填变量
missing = [v for v in self.variables if v not in kwargs]
if missing:
raise ValueError(f"Missing variables: {missing}")
return self.template.format(**kwargs)
Prompt 版本化
# 注册 Prompt
registry.publish("chat_system_prompt", """
你是一个专业的健康助手。
用户信息: {user_profile}
当前状态: {consultation_state}
请基于以上信息回答用户问题。
""", variables=["user_profile", "consultation_state"])
# 使用 Prompt
prompt = registry.get("chat_system_prompt", version="v2")
system_message = prompt.render(user_profile=profile, consultation_state=state)
常见坑
- Prompt 硬编码: 改 Prompt 要改代码
- 不做版本控制: 无法回滚
- 不做效果追踪: 不知道哪个版本更好
- 变量注入不安全: 用户输入直接拼接到 Prompt 中