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)

常见坑

  1. Prompt 硬编码: 改 Prompt 要改代码
  2. 不做版本控制: 无法回滚
  3. 不做效果追踪: 不知道哪个版本更好
  4. 变量注入不安全: 用户输入直接拼接到 Prompt 中

参考资料

创建于 2026/6/30 更新于 2026/7/15