随着AI Agent应用场景的持续深化,Prompt已从简单的提示语演进为关键的系统级配置资产,直接影响模型输出的准确性、一致性和安全性。在多Agent协同环境下,分散管理、缺乏版本控制及环境配置不一致等问题,易引发行为偏差与运维风险。为解决此类问题,Nacos在3.1.1版本中正式引入Prompt管理能力,提供统一存储、版本控制、多环境隔离和动态更新机制,支持对Prompt实现可治理、可观测和可回滚的全生命周期管理。当Nacos实例由MSE托管时,用户可通过MSE控制台对Prompt进行集中化配置与管理,提升研发协作效率与生产环境稳定性。本文介绍如何通过MSE平台高效管理Prompt资源。
前提条件
已开通MSE服务。
已创建实例并且升级Nacos引擎版本至
3.1.1.0及以上版本。已创建命名空间。
创建Prompt
登录MSE注册配置中心管理控制台,在顶部菜单栏选择地域。
在左侧导航栏,选择注册配置中心 > 实例列表。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择Prompt管理,在页面左上角选择命名空间,然后单击创建Prompt。
在创建Prompt页面,完成以下参数配置,然后单击确定。
Prompt名称:创建后不可修改。
版本号:标识Prompt的版本,遵循语义化版本号规范(主版本.次版本.修订版本),例如 1.0.0。
功能描述:对Prompt作用和使用场景的简单介绍。
Prompt模板:Prompt的具体内容,支持使用
{{参数名}}的格式定义可替换参数。
删除Prompt
登录MSE注册配置中心管理控制台。在顶部菜单栏选择地域。
在左侧导航栏,选择注册配置中心 > 实例列表。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择Prompt管理,在页面左上角选择命名空间,单击目标Prompt操作列下方的删除。
查看Prompt详情
登录MSE注册配置中心管理控制台,在顶部菜单栏选择地域。
在左侧导航栏,选择注册配置中心 > 实例列表。
在实例列表页面,单击目标实例名称。
在左侧导航栏,单击Prompt管理,并在页面左上角,选择命名空间。
在该命名空间下,可以查看该Nacos实例上对应命名空间下的所有Prompt的信息,包括Prompt名称、发布版本以及描述信息。
单击Prompt名称查看Prompt详情。
在Prompt详情页面,用户可以查看对应Prompt当前版本的版本号、提交信息、Prompt模板和其中解析的参数等信息。
在Prompt名称右侧,通过下拉框查看该Prompt所有历史版本号。点击对应的历史版本号,可查看对应版本信息。
编辑Prompt
登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择注册配置中心 > 实例列表。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择Prompt管理。在页面左上角,选择命名空间,然后单击目标Prompt操作列下方的编辑。
在编辑Prompt面板,对Prompt的内容进行编辑。
基本信息:对Prompt模板进行修改,参数预览模块可以比较修改前后的Prompt支持的参数的变化。MSE Nacos提供填写模板示例,可基于示例进行修改。
版本信息:填写新的版本号和版本提交信息,对本次版本变更进行描述。要求新版本的版本号必须大于现有的最新的版本号。
前往Prompt列表页,点击描述信息列的编辑图标,可对Prompt描述进行修改。
版本发布后无法再进行修改,所有的修改都需要发布新的版本,目前Prompt管理默认保存 30天内的历史版本。
搜索Prompt
登录MSE注册配置中心管理控制台,在顶部菜单栏选择地域。
在左侧导航栏,选择注册配置中心 > 实例列表。
在实例列表页面,单击目标实例名称。
在左侧导航栏,选择Prompt管理。在页面左上角,选择命名空间。
在Prompt列表上方搜索框内输入需要搜索的目标Prompt名称,然后单击
按钮或单击回车键进行搜索,支持模糊搜索。
通过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;
}
});