Prompt管理

随着AI Agent应用场景的持续深化,Prompt已从简单的提示语演进为关键的系统级配置资产,直接影响模型输出的准确性、一致性和安全性。在多Agent协同环境下,分散管理、缺乏版本控制及环境配置不一致等问题,易引发行为偏差与运维风险。为解决此类问题,Nacos3.1.1版本中正式引入Prompt管理能力,提供统一存储、版本控制、多环境隔离和动态更新机制,支持对Prompt实现可治理、可观测和可回滚的全生命周期管理。当Nacos实例由MSE托管时,用户可通过MSE控制台对Prompt进行集中化配置与管理,提升研发协作效率与生产环境稳定性。本文介绍如何通过MSE平台高效管理Prompt资源。

前提条件

创建Prompt

  1. 登录MSE注册配置中心管理控制台,在顶部菜单栏选择地域

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,选择Prompt管理,在页面左上角选择命名空间,然后单击创建Prompt

  5. 创建Prompt页面,完成以下参数配置,然后单击确定。

    • Prompt名称:创建后不可修改

    • 版本号:标识Prompt的版本,遵循语义化版本号规范(主版本.次版本.修订版本),例如 1.0.0。

    • 功能描述:Prompt作用和使用场景的简单介绍。

    • Prompt模板:Prompt的具体内容,支持使用{{参数名}}的格式定义可替换参数。

删除Prompt

  1. 登录MSE注册配置中心管理控制台。在顶部菜单栏选择地域

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,选择Prompt管理,在页面左上角选择命名空间,单击目标Prompt操作列下方的删除

查看Prompt详情

  1. 登录MSE注册配置中心管理控制台,在顶部菜单栏选择地域

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,单击Prompt管理,并在页面左上角,选择命名空间

    • 在该命名空间下,可以查看该Nacos实例上对应命名空间下的所有Prompt的信息,包括Prompt名称、发布版本以及描述信息。

  5. 单击Prompt名称查看Prompt详情。

    • Prompt详情页面,用户可以查看对应Prompt当前版本的版本号、提交信息、Prompt模板和其中解析的参数等信息。

    • Prompt名称右侧,通过下拉框查看该Prompt所有历史版本号。点击对应的历史版本号,可查看对应版本信息。

编辑Prompt

  1. 登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,选择Prompt管理。在页面左上角,选择命名空间,然后单击目标Prompt操作列下方的编辑

  5. 在编辑Prompt面板,对Prompt的内容进行编辑。

    1. 基本信息:对Prompt模板进行修改,参数预览模块可以比较修改前后的Prompt支持的参数的变化。MSE Nacos提供填写模板示例,可基于示例进行修改。

    2. 版本信息:填写新的版本号和版本提交信息,对本次版本变更进行描述。要求新版本的版本号必须大于现有的最新的版本号。

  6. 前往Prompt列表页,点击描述信息列的编辑图标,可对Prompt描述进行修改。

重要

版本发布后无法再进行修改,所有的修改都需要发布新的版本,目前Prompt管理默认保存 30天内的历史版本。

搜索Prompt

  1. 登录MSE注册配置中心管理控制台,在顶部菜单栏选择地域

  2. 在左侧导航栏,选择注册配置中心 > 实例列表

  3. 实例列表页面,单击目标实例名称。

  4. 在左侧导航栏,选择Prompt管理。在页面左上角,选择命名空间

  5. Prompt列表上方搜索框内输入需要搜索的目标Prompt名称,然后单击image.png按钮或单击回车键进行搜索,支持模糊搜索。

通过Nacos客户端对Prompt进行查询和订阅

Python

依赖安装

pip install nacos-sdk-python

客户端配置

from v2.nacos import NacosNamingService, NacosConfigService, NacosAIService, ClientConfigBuilder, GRPCConfig, \
    Instance, SubscribeServiceParam, RegisterInstanceParam, DeregisterInstanceParam, \
    BatchRegisterInstanceParam, GetServiceParam, ListServiceParam, ListInstanceParam, ConfigParam
   
client_config = (ClientConfigBuilder()
                 .access_key(os.getenv('NACOS_ACCESS_KEY'))
                 .secret_key(os.getenv('NACOS_SECRET_KEY'))
                 .server_address(os.getenv('NACOS_SERVER_ADDR', 'localhost:8848'))
                 .log_level('INFO')
                 .grpc_config(GRPCConfig(grpc_timeout=5000))
                 .build())

查询和订阅Prompt

config_client = await NacosConfigService.create_config_service(client_config)

#查询 Prompt
prompt = await config_client.get_config(ConfigParam(
            data_id=f"{promptKey}.json",
            group="nacos-ai-prompt"
))

#订阅 Prompt
async def config_listener(tenant, data_id, group, prompt):
    print("listen, tenant:{} data_id:{} group:{} prompt:{}".format(tenant, data_id, group, prompt))

await config_client.add_listener(f"{promptKey}.json", "nacos-ai-prompt", config_listener)

# Prompt 格式
# {
#     "promptKey": "assistant",
#     "version": "1.0.1",
#     "template": "你是一个专业的{{language}}代码生成助手,请根据用户需求生成{{type}}的代码。要求:\n1. 代码风格:{{style}}\n2. 注释语言:{{comment_lang}}\n3. 复杂度:{{complexity}}\n",
#     "commitMsg": "这是一个初始版本"
# }

Java

依赖引入

<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>${version}</version>
</dependency>

客户端配置

String serverAddr = "localhost:8848";

ConfigService configService = NacosFactory.createConfigService(serverAddr);

查询和订阅Prompt

# 查询 prompt
String prompt = configService.getConfig("{promptKey}.json", "nacos-ai-prompt", 5000);

# 订阅 Prompt
configService.addListener("{promptKey}.json", "nacos-ai-prompt", new Listener() {
    
    @Override
    public void receiveConfigInfo(String prompt) {
        System.out.println("recieve prompt:" + configInfo);
    }
    @Override
    public Executor getExecutor() {
        return null;
    }
    
});