拓冰建站拓冰建站
首页 / 资讯中心 / 正文

如何用 MLflow Prompt Registry 的 alias 管理提示词在开发、预发与生产环境间的版本切换

如何用 MLflow Prompt Registry 的 alias 管理提示词在开发、预发与生产环境间的版本切换【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow如果你的 LLM 应用把提示词版本写死在代码里每次换提示词都要改代码、重新发布回滚也一样麻烦。MLflow Prompt Registry 提供 alias别名机制来解决这个问题为提示词的某个版本绑定一个如staging、production的名称应用代码只引用 alias 而不引用具体版本号切换环境版本、A/B 测试或回滚时只需把 alias 指向另一个版本即可无需改动应用代码。完成本文后你会用 Python API 注册出两个提示词版本为开发、预发、生产三个环境创建 alias在应用中按 alias 加载提示词并通过切换 alias 完成版本发布与回滚。前提是你已经在使用 MLflowPrompt Registry 功能随 MLflow 服务端提供UI 操作需要先在终端运行mlflow server启动 MLflow UI。前置条件先有两个版本的提示词alias 是指向某个具体版本的名称所以要先有可切换的版本。提示词版本在 MLflow 中是不可变的创建后模板不能修改任何改动都通过创建新版本完成这保证了各环境行为可复现。用mlflow.genai.register_prompt注册第一个版本模板中的变量使用{{variable}}双花括号格式import mlflow initial_template \ Summarize content you are provided with in {{ num_sentences }} sentences. Sentences: {{ sentences }} prompt mlflow.genai.register_prompt( namesummarization-prompt, templateinitial_template, commit_messageInitial commit, tags{ author: authorexample.com, task: summarization, }, ) print(fCreated prompt {prompt.name} (version {prompt.version}))需要改进提示词时用同一个name再次调用register_promptMLflow 会自动递增版本号new_template \ You are an expert summarizer. Condense the following content into exactly {{ num_sentences }} clear and informative sentences that capture the key points. Sentences: {{ sentences }} updated_prompt mlflow.genai.register_prompt( namesummarization-prompt, templatenew_template, commit_messageImprovement, )此时summarization-prompt已有版本 1 和版本 2。也可以在 MLflow UI 的Prompts标签页完成同样的操作点击Create Prompt创建、点击Create prompt Version基于现有文本创建新版本有多个版本后在 prompt 详情页的Compare标签页可以并排对比两个版本的差异。为每个环境创建 alias创建 alias 有 UI 和 Python 两种方式。UI 方式在 MLflow UI 中打开目标 prompt 的某个版本页面。点击Aliases区域旁的Add按钮。选择一个已有 alias或输入新的 alias 名称例如staging、production。点击Save aliases生效。Python 方式用mlflow.genai.set_prompt_alias把 alias 绑定到具体版本# 开发环境直接跟踪最新版本见下文 latest这里绑定预发和生产 mlflow.genai.set_prompt_alias(summarization-prompt, aliasstaging, version1) mlflow.genai.set_prompt_alias(summarization-prompt, aliasproduction, version1)创建后可以在 UI 的 prompt 列表页查看已附着的 alias列表页点击铅笔图标可以直接编辑或删除某个 alias。在应用代码中按 alias 加载提示词应用侧通过mlflow.genai.load_prompt加载URI 格式为prompts:/prompt_namealias# 预发环境 staging_prompt mlflow.genai.load_prompt(prompts:/summarization-promptstaging) # 生产环境 production_prompt mlflow.genai.load_prompt(prompts:/summarization-promptproduction)同一个 URI 还支持版本号prompts:/summarization-prompt/2和特殊形式prompts:/prompt_namelatestlatest是保留 aliasMLflow 自动解析到当前最新版本适合开发环境动态跟踪最新提示词只传 prompt 名mlflow.genai.load_prompt(summarization-prompt)等价于加载最新版本。加载到的Prompt对象用.format()填入变量后即可发给模型import openai target_text ... # 待总结内容 response openai.OpenAI().chat.completions.create( messages[ { role: user, content: production_prompt.format(num_sentences1, sentencestarget_text), } ], modelgpt-4o-mini, )如果你的应用代码运行在mlflow.trace装饰的函数或mlflow.start_run()上下文中MLflow 会自动记录这次加载关联的 prompt 版本在 UI 的 trace/run 中可见方便排查“生产行为变化是否来自提示词更新”。切换版本与回滚发布新版本到某个环境就是让对应 alias 指向新版本。例如版本 2 在预发验证通过后把它提升到生产# 预发先切到新版本 2 mlflow.genai.set_prompt_alias(summutarization-prompt.replace(m, , 1), aliasstaging, version2)抱歉上面示例有笔误正确写法如下# 预发先切到新版本 2 mlflow.genai.set_prompt_alias(summarization-prompt, aliasstaging, version2) # 预发验证通过后生产跟进 mlflow.genai.set_prompt_alias(summarization-prompt, aliasproduction, version2)回滚同样简单——把 alias 指回旧版本# 生产出现问题的话把 production 指回版本 1 mlflow.genai.set_prompt_alias(summarization-prompt, aliasproduction, version1)因为版本不可变alias 指回版本 1 的行为与当初上线时完全一致。这也是文档推荐的 alias 典型用途构建 LLM 应用和 AI agent 的部署流水线用beta、staging、production等阶段名引用各环境使用的版本并支持 A/B 测试与回滚。切换 alias 后的验证与缓存行为切换后验证最直接的方式是重新按 alias 加载并检查模板内容p mlflow.genai.load_prompt(prompts:/summarization-promptstaging) print(p.version) # 应打印 alias 当前指向的版本号 print(p.template) # 检查模板文本是否为预期版本需要注意客户端缓存对切换生效时间的影响文档给出了明确规则按版本号加载的提示词如prompts:/summarization-prompt/1默认缓存 TTL 为无限因为版本不可变按 alias 加载的提示词如prompts:/summarization-promptproduction默认缓存60 秒以便应用能在切换后拾取新版本客户端本地的set_prompt_alias、delete_prompt_alias等操作会自动使本地缓存失效。如果切换后需要立即或自定义时效生效可用cache_ttl_seconds参数按请求控制# 绕过缓存每次都从 registry 拉取 prompt mlflow.genai.load_prompt(prompts:/summarization-promptproduction, cache_ttl_seconds0) # 自定义 TTL缓存 5 分钟 prompt mlflow.genai.load_prompt(prompts:/summarization-prompt/1, cache_ttl_seconds300)也可以用环境变量全局调整默认值# alias 类提示词缓存 TTL 设为 5 分钟 export MLFLOW_ALIAS_PROMPT_CACHE_TTL_SECONDS300 # 版本号类提示词缓存 TTL 设为 1 小时默认为无限 export MLFLOW_VERSION_PROMPT_CACHE_TTL_SECONDS3600 # 全局禁用缓存 export MLFLOW_ALIAS_PROMPT_CACHE_TTL_SECONDS0 export MLFLOW_VERSION_PROMPT_CACHE_TTL_SECONDS0清理删除不需要的 aliasalias 是环境间的引用关系退役某个环境如下线 staging时应把引用移除避免代码误加载。两种方式mlflow.genai.delete_prompt_alias(summarization-prompt, aliasstaging)或在 UI prompt 列表页点击 alias 旁的铅笔图标直接删除。相关文档alias 与版本管理设计说明manage-prompt-lifecycles-with-aliases.mdxPrompt Registry 总览含 Prompt 对象属性、缓存机制、FAQindex.mdx应用中加载提示词与模型/trace/run 的自动关联use-prompts-in-apps.mdx创建与编辑提示词含 UI 截图步骤create-and-edit-prompts.mdx【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门