使用提示注册表与模板管理提示
学习目标
使用 Prompt Registry 和 Templates 有效地管理和复用 LLM 提示词。
您已学会在 SAP AI Launchpad 中开发和优化提示词,以产出结构化 JSON 输出,用于客户邮件分类等任务。然而,随着您的生成式 AI 解决方案不断增长,手动复制提示词或将提示词直接嵌入应用代码会变得低效且难以管理。您需要确保关键提示词在多个应用和开发团队之间保持一致、具备版本控制且可复用。
这正是 generative AI hub 中的 Prompt Registry 和 Prompt Templates 最能发挥价值之处。本课将说明它们如何帮助您管理提示词的生命周期。您将学习如何利用这些功能,为企业构建更稳健、可扩展且易于维护的生成式 AI 应用。
Prompt Registry
Prompt Registry 是 generative AI hub 内的一个中央服务,旨在管理提示词的整个生命周期。可以把它看作一个安全、受版本控制的库,用于存放您所有宝贵的提示词定义。Prompt Registry 让您能够跨各种应用和编排工作流存储、发现和集成提示词模板,而不必将提示词直接嵌入应用代码或依赖临时的文本文件。
对于开发了用于对客户邮件进行分类的复杂提示词的设施解决方案公司而言,Prompt Registry 带来了明显的好处:
确保一致性 :它确保每一个使用邮件分类提示词的应用和编排工作流都使用完全相同的、经批准的版本。这消除了差异,并在公司各系统中提供统一的 AI 行为与输出。
增强可复用性 :它使经过完善的邮件分类提示词能够高效地部署到各种内部应用中,例如客户服务仪表板和报表工具。这避免了重复的开发工作和手动复制,节省大量时间和资源。
稳健的版本控制 :它提供对提示词演进的全面跟踪,例如新增类别或优化指令的时间点。这样可以轻松回滚到先前版本、对新迭代进行无缝 A/B 测试,并保留所有变更的透明审计轨迹。
简化的管理 :内置集成简化了提示词模板的处理,使您的公司能够更轻松地大规模管理和更新提示词。
Prompt Registry 将提示词模板直接集成到 SAP AI Core 中,使其在整个生成式 AI 开发与运行时环境中可被发现和使用。
提示词模板(Prompt Templates)
提示词模板是 LLM 提示词的预定义结构,其中包含用于动态内容的占位符。这些模板让您能够为特定用例创建可复用的提示词,其中提示词的某些部分(例如实际的客户消息,或动态的选项列表)将在运行时稍后填入。将指令与动态数据分离,是优秀提示词工程的一项核心原则。
提示词模板定义的关键组成部分:
template: 这定义了提示词的核心结构,包括 system、user 和 assistant 角色及其内容。占位符(通常写作 {{?placeholderName}})标记了使用该模板时动态数据将被插入的位置。
defaults(可选): 您可以为占位符设置默认值。这对于提供常见选项(例如默认的类别列表)或在未提供动态输入时提供回退值很有用。
additional_fields(可选): 这是一个非结构化字段,允许您在提示词之外存储额外的元数据或配置对象。例如,您可以存储应与此模板一起使用的特定 LLM 参数(temperature、max_tokens),甚至自定义验证规则。
提示词模板示例:
下面是一个 JSON 结构的示例。该 JSON 为我们的邮件分类任务定义了一个模板,可存入 Prompt Registry。请注意 {{?categories_list}} 和 {{?customer_email}} 是如何作为占位符,用于在实际使用模板时提供的内容。
{
"name": "email-categorization-template",
"version": "0.0.1",
"scenario": "customer-support",
"spec": {
"template": [
{
"role": "system",
"content": "你是一家设施管理公司的专业客户服务分析师。你的任务是分析收到的客户消息,并提取特定属性以供自动化处理。
对于 'urgency',将消息归类为以下之一:`low`、`medium`、`high`。
对于 'sentiment',将消息归类为以下之一:`positive`、`neutral`、`negative`。
对于 'categories',从以下预定义列表中分配一个最匹配的支持标签列表:{{?categories_list}}。
你的完整响应必须是一个有效的 JSON 字符串,可直接由应用程序解析。它应仅包含键 'urgency'、'sentiment' 和 'categories'。不要包含任何其他文本、解释或格式(例如 markdown 代码块,如 ```json)。确保 JSON 结构之外没有换行符或不必要的空白。"
},
{
"role": "user",
"content": "分析以下客户消息:
---
{{?customer_email}}
---"
}
],
"defaults": {
"categories_list": "`facility_management_issues`、`cleaning_services_scheduling`、`general_inquiries`、`specialized_cleaning_services`、`routine_maintenance_requests`、`emergency_repair_services`、`sustainability_and_environmental_practices`、`training_and_support_requests`、`quality_and_safety_concerns`、`customer_feedback_and_complaints`"
},
"additional_fields": {
"modelParams": {
"temperature": 0.1,
"max_tokens": 300
},
"modelGroup": "chat"
}
}
}
Prompt Registry 接口
Prompt Registry 提供两个主要接口来管理您的提示词模板,分别服务于开发生命周期的不同阶段:
命令式 API(用于设计阶段的迭代与优化)
逻辑与价值: 当您正在积极设计和优化提示词时,此 API 最为理想。它提供完整的 CRUD(创建、读取、更新、删除)能力,使开发人员能够快速迭代提示词模板。当您尝试不同的措辞或指令时(例如设施解决方案场景中邮件分类提示词的迭代过程),您可以快速创建新版本、进行修改并保存。系统还会跟踪所有这些迭代,为您提供变更历史。这种快速反馈循环在初始开发和调优阶段极为宝贵。
关键操作: 您定义一个提示词模板(如上面的 JSON 示例),并将其发送到 Prompt Registry 进行创建或更新。您还可以指定其名称、版本以及所属场景。
声明式 API(用于运行时应用与 CI/CD 流水线)
逻辑与价值: 声明式 API 专为生产就绪的应用以及与 CI/CD(持续集成/持续交付)流水线的集成而设计。您无需通过直接 API 调用来创建或更新提示词,而是将提示词模板作为文件(例如 YAML 文件)直接放在 Git 仓库中管理。您的 Git 提交会自动将这些模板与 Prompt Registry 同步。这种方式将提示词视为“代码”,从而实现企业软件开发中标准的稳健版本控制、协作和自动化部署流程。它非常适合确保您的生产应用始终使用最新、经过测试且经批准的提示词。
关键操作: 您将一个定义提示词模板的 YAML 文件提交到 Git 仓库。配置为监视该仓库的 SAP AI Core 会自动更新 Prompt Registry。
访问和使用已存储的提示词模板
一旦您的提示词模板安全地存储在 Prompt Registry 中,您的应用和编排工作流就可以轻松取回并使用它们。
获取提示词模板: 您可以通过提示词模板的唯一 ID,或通过其名称、场景和版本的组合来取回它。
按 ID 取回的价值: 使用 ID 可确保您始终取回所存储的确切提示词模板版本。这对于不可变性很有价值——保证提示词模板在部署后不会发生变化。
按名称、场景和版本取回的价值: 此方法较为灵活,通常取回与指定名称、场景和版本匹配的提示词模板的最新迭代(head 版本)。当您希望应用始终使用最新版本时,这很有用。
获取提示词模板历史记录: 对于以命令式方式管理的提示词模板,Prompt Registry 会跟踪变更。您可以取回编辑历史,从而查看提示词随时间的演进情况。这种审计轨迹对于调试、理解行为变化以及合规性至关重要。
使用提示词模板(替换): 要使用提示词模板,您需要提供用于填充其占位符的动态数据。此过程称为替换(substitution)。 逻辑: 您将动态的 inputParams(例如设施解决方案公司场景中实际的 customer_email 文本)发送到特定端点,该端点随后通过填充所选模板中的所有占位符,生成完整、可直接使用的提示词。这个经过预处理的提示词随后可以发送给 LLM。
与编排的集成
对开发人员而言,一个关键优势是:存储在 Prompt Registry 中的提示词模板可以无缝集成到您的 Orchestration Service 配置中。这意味着您的编排工作流可以动态获取最新批准的提示词模板,从而在整个生成式 AI 解决方案环境中确保一致性、可复用性并便于更新。
有关这些配置的详细信息,请参阅 Prompt Registry.
了解 Prompt Registry API 如何让您在使用 generative AI hub 的模型时,创建、管理并取回供 SAP AI Core 使用的提示词模板。
了解如何使用编排服务引用提示词模板。
在 SAP AI Launchpad 中使用提示词模板
您可以在 SAP AI Launchpad 中创建、取回和使用提示词模板,以进行快速原型设计。
您可以使用 Save Template 按钮将提示词保存为模板。
您可以在 Prompt Management 界面中取回所有这些模板。您可以看到某个模板的所有版本,并可直接在 Prompt Editor 中使用其中任一模板。
本课小结
您现在已了解 Prompt Registry 和 Prompt Templates 在大规模管理生成式 AI 应用方面所扮演的重要角色。您理解了 Prompt Registry 如何作为版本控制与可发现性的中央枢纽,以及提示词模板如何为 LLM 交互提供可复用的蓝图。
通过同时利用用于设计阶段迭代的命令式 API 和用于稳健运行时管理的声明式 API,您可以确保提示词被一致地应用、易于更新,并无缝集成到您的应用和编排工作流中。这种结构化的提示词管理方法是构建企业内可维护、可靠且可扩展的生成式 AI 解决方案的关键,可将您的提示词工程工作从临时试验推进为成熟且受治理的流程。
练习
本练习将引导您通过使用 SAP AI Launchpad 在 generative AI hub 中以提示词模板对提示词进行集中化、标准化和版本化,从而有效地管理和扩展您的提示词工程解决方案。
场景
在设施管理场景中,您已成功使用 LLM 从客户邮件中提取信息。现在,您的任务是将该解决方案规模化。手动管理提示词以及将提示词直接嵌入代码可能导致不一致,并使更新变得困难。您的任务是利用 Prompt Registry 集中化、标准化并管理邮件分类提示词,确保在不同内部工具之间实现可复用性和版本控制。
在开始创建提示词模板之前,请考虑以下在 SAP 这样的企业环境中构建可靠且可扩展生成式 AI 解决方案的基本准则:
结构化您的指令(使用类 XML 标签): 在提示词内容中采用明确的结构,使用诸如
和 之类的标签。这种清晰性有助于 LLM 准确区分提示词的不同部分,减少误解并带来更一致的结果。这些标签实际上为 LLM 提供了可遵循的精确映射。 设计时定义模式(例如严格 JSON): 设计您的模板,始终将输出限制为应用程序易于处理的格式。对于企业集成而言,LLM 的输出是供其他系统使用的数据,而不仅仅是供人阅读的文本。例如,严格 JSON 可确保该输出能够被下游应用(如您的任务管理系统)自动解析和处理,无需人工干预或易出错的转换,这对自动化而言是根本性的。
定义角色以实现可预测的行为(System/User): 明确指定 System 人设,并使用 User 角色承载具体查询。这种关注点分离可确保模型在其既定角色内一致地行动,这对于专业且可靠的应用至关重要。
用示例引导(Few-Shot/One-Shot 学习): 包含一个清晰的示例,说明您将提供的输入以及您期望的确切结构化输出。这能显著提升 LLM 的表现以及对复杂格式的遵循程度,相当于为模型提供一份完美的答案范本,在确保格式合规的同时最大限度地减少错误。
内建稳健性与安全性(提示词加固): 您的模板将面对真实的、有时不可预测的输入。纳入提示词加固原则,例如明确的否定性约束(例如“不要包含 markdown 代码块”)、针对缺失数据的处理指令以及清晰的分隔符。这会让您的模板更具韧性,保护您的应用免受意外输出和提示词注入的影响,并提升整体可靠性。
实现可管理性与可扩展性(Prompt Registry): 请记住,将您的模板注册到 generative AI hub 的 Prompt Registry 中不仅仅是一个存储步骤。它启用了版本控制等重要的功能,使跟踪变更、回退到先前版本以及进行 A/B 测试都变得容易。它还支持跨多个应用的可复用性和集中治理,这对大型组织至关重要。
执行以下任务以落实这些准则。
任务 1:定义角色并获取结构化 JSON 输出
我们将创建一个提示词模板,在其中定义 System 和 user 角色及提示词,以获取结构化的 json 输出。
步骤
确保您已登录 generative AI hub。
展开 Generative AI Hub,然后在左侧窗格中选择 Prompt Editor。
为结构化 JSON 输出定义角色和要求。 将以下提示词用于 system 角色。
你是 Facility Solutions Company 的专业助手。你的任务是分析客户投诉邮件,并将关键信息提取为结构化 JSON 格式。请密切关注细节,并严格遵守输出模式。
你的完整响应必须是一个有效的 JSON 字符串,可直接由应用程序解析。它应仅包含键 'Complaint_ID'、'Complaint_Type'、'Urgency'、'Problem_Description'、'Affected_Location'、'Customer_Sentiment' 和 'Suggested_Initial_Action'。不要包含任何其他文本、解释或格式(例如 markdown 代码块,如 ```json)。确保 JSON 结构之外没有换行符或不必要的空白。
对于 'Complaint_Type',将消息归类为以下之一:`Plumbing`、`HVAC`、`Electrical`、`Noise`、`Cleaning`、`Pest Control`、`General Maintenance`、`Other`。
对于 'Urgency',将消息归类为以下之一:`High`、`Medium`、`Low`。
对于 'Customer_Sentiment',将消息归类为以下之一:`Very Negative`、`Negative`、`Neutral`、`Positive`。
复制该提示词,并将其粘贴到 System role in the Message Blocks 文本框中。 4. 选择 Add role,以添加 user 角色。 5. 将以下提示词用于 user 角色。
分析以下客户消息:
---
{{?user_email_placeholder}}
---
并按指定的 JSON 格式提供输出。
复制该提示词,并将其粘贴到 User role in the Message Blocks 文本框中。 6. 点击 Save Template 按钮。将显示 Save Template 对话框。 7. 选择适当的 Scenario Name。该模板将对访问该场景的所有用户可用。我们在此使用 orchestration 场景。 8. 添加一个合适的 Template Name。避免使用空白或任何其他特殊字符。请遵循类似 "message-analyzer" 的格式。仅就这些练习而言,请在名称后添加显示在右上角的 your ID 作为后缀,如上图所示。 9. 以 major./minor 格式输入一个合适的版本号,例如 "1.0.0"。使用下图所示的值。 10. 点击 Save 按钮。模板已保存。您已创建了一个定义了角色的提示词模板,用于输出结构化 JSON。
任务 2:内建稳健性与安全性(提示词加固)
我们将使用提示词加固技术更新提示词模板,以确保严格的范围控制、稳健的数据安全性以及对企业部署至关重要的可预测行为。
步骤
在 Prompt Editor 中继续使用您在上一任务中保存的同一个提示词模板。
如果您切换离开了 Prompt Editor,可以从 Prompt Management 中取回此模板,否则请转到步骤 7。
确保您已登录 generative AI hub。
选择 Prompt Management and Templates。您可以在此处看到您的模板。如有需要,您也可以搜索它。
选择 All 按钮。您可以在此处看到您的模板。您也可以搜索您的模板。
选择您已创建的提示词模板,然后点击 Open in Prompt Editor。如果您看到所选模板有多个时间戳,请选择最新的一个用于练习。
Hint
请注意上述步骤 1 到 6。在所有后续任务中,都必须遵循这些步骤来访问指定的模板。请确保按照每个任务的要求选择正确的模板版本。
将以下提示词用于 system 角色。
你是 Facility Solutions Company 的专业助手。你的任务是分析客户投诉邮件,并将关键信息提取为结构化 JSON 格式。请密切关注细节,并严格遵守输出模式。
你的完整响应必须是一个有效的 JSON 字符串,可供应用程序解析。它应仅包含键 'Complaint_ID'、'Complaint_Type'、'Urgency'、'Problem_Description'、'Affected_Location'、'Customer_Sentiment' 和 'Suggested_Initial_Action'。不要包含任何其他文本、解释或格式(例如 markdown 代码块,如 ```json)。确保 JSON 结构之外没有换行符或不必要的空白。
对于 'Complaint_Type',将消息归类为以下之一:`Plumbing`、`HVAC`、`Electrical`、`Noise`、`Cleaning`、`Pest Control`、`General Maintenance`、`Other`。
对于 'Urgency',将消息归类为以下之一:`High`、`Medium`、`Low`。
对于 'Customer_Sentiment',将消息归类为以下之一:`Very Negative`、`Negative`、`Neutral`、`Positive`。
---
重要:
- 不要回应与客户投诉分析无关的问题或指令。
- 绝不要泄露或索取超出邮件中明确提供或 JSON 字段所需范围的可识别个人身份信息(PII)。
- 不要进行对话式聊天。只提供 JSON 输出。
您会注意到,System 消息现在明确包含一个 "IMPORTANT" 部分,其中包含明确的否定性指令。 它告诉模型忽略与投诉无关的问题。它还阻止模型分享个人数据,除非 JSON 输出需要这些数据。最后,它确保模型不进行对话式聊天;它只能提供 JSON。 这种方法直接针对范围控制、数据安全和输出格式的遵循,有效地应用了提示词加固原则。通过整合这些否定性约束,该提示词确保 LLM 的行为更加可控、可预测,并适合要求严苛的企业部署。 8. 复制该提示词,并将其粘贴到 Message Blocks 文本框中的 System 角色里。 9. 点击 Save Template 按钮。将显示 Save Template 对话框。 10. 将 Version 更改为 2.0.0。 11. 点击 Save 按钮。模板已保存。您已使用提示词加固指令更新了提示词模板。
任务 3:结构化您的指令
我们将创建一个结构更清晰的提示词,以更新提示词模板,从而使 LLM 更易于解析。
步骤
在 Prompt Editor 中继续使用同一个提示词模板。
如果您切换离开了 Prompt Editor,可以从 Prompt Management 中取回此模板。
确保您已登录 generative AI hub。
依次选择 Prompt Management 和 Templates。您可以在此处看到您的模板。如有需要,您也可以搜索它。
选择 ALL 按钮。您可以在此处看到您的模板。您也可以搜索您的模板。
选择该模板的最新版本,即 2.0.0。请参见下图,其中使用搜索来轻松找到您的模板。
选择您已创建的提示词模板,然后点击 Open in Prompt Editor。如果您看到所选模板有多个时间戳,请选择最新的一个用于练习。
将以下提示词用于 User 角色。
<Instructions>
分析所提供的客户邮件,并将以下详细信息提取到一个 JSON 对象中。
确保所有字段都存在,并且按照 <OutputFormat> 中的规范正确设定类型。
简洁地概括 'Problem_Description'(最多 100 个词)。
如果无法从邮件中确定任何字段的值,请酌情使用 'Unknown' 或 'N/A'。
</Instructions>
<OutputFormat>
{
"Complaint_ID": "string (e.g., AUTO-GEN-001)",
"Complaint_Type": "enum (Plumbing, HVAC, Electrical, Noise, Cleaning, Pest Control, General Maintenance, Other)",
"Urgency": "enum (High, Medium, Low)",
"Problem_Description": "string (concise summary, max 100 words)",
"Affected_Location": "string (e.g., Apartment 301, Main Lobby)",
"Customer_Sentiment": "enum (Very Negative, Negative, Neutral, Positive)",
"Suggested_Initial_Action": "string (clear next step for agent)"
}
</OutputFormat>
<UserQuery>
{{?user_email_placeholder}}
</UserQuery>
您会注意到,通用指令、输出格式定义以及用户查询占位符现在都被明确包裹在类 XML 标签中。这为 LLM 提供了清晰的视觉提示和结构指引。 9. 复制该提示词,并将其粘贴到 Message Blocks 文本框中的 User 角色里。 10. 点击 Save Template 按钮。将显示 Save Template 对话框。 11. 将 Version 更改为 3.0.0。 12. 点击 Save 按钮。模板已保存。您已使用类 XML 标签为提示词模板更新了恰当的结构。
任务 4:使用您的提示词模板解决业务问题
我们将使用已保存的提示词模板生成应用程序可用的有效响应。
步骤
确保您已登录 generative AI hub。
依次选择 Prompt Management 和 Templates。您可以在此处看到您的模板。如有需要,您也可以搜索它。
选择 All 按钮。您可以在此处看到您的模板。您也可以搜索您的模板。
选择该模板的最新版本,即 3.0.0。确保您选择了自己的模板以及该模板内正确的时间戳。一个良好的做法是在使用前先阅读模板。
选择该提示词模板,然后点击 Open in Prompt Editor。您的提示词已可使用。
向下滚动以查看 Variable Definitions。您需要通过以下消息在该变量中提供客户消息:
主题:紧急:我们设施的持续维护问题
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],是 [Community Name] 的社区经理。我负责监督我们设施的运营和维护已有一段时间了,不得不说,最近与贵方维护服务的合作体验并不令人满意。
我们一直面临电气和管道系统反复出现的若干问题,尽管多次提出服务请求,但这些问题都没有得到妥善解决。缺乏及时有效的解决方案正在给我们的住户和员工带来严重不便,情况也变得越来越难以管理。
为了让您更清楚地了解情况,过去一个月里,技术人员已三次到访我们的设施。每次问题要么被临时修复,要么就一直没有解决。这导致我们社区成员极为不满,也影响了我们管理层的形象。
我特此联系,希望为这些持续存在的维护问题寻求一个更持久、更有效的解决方案。我们需要一次彻底检查以及一份解决这些问题根本原因的全面计划。确保我们社区中每个人都能拥有安全舒适的环境至关重要。
我相信您理解此事的紧迫性,并会相应地优先处理我们的请求。我们一直看重 Facility Solutions 所提供的服务质量,也希望这些问题能尽快得到解决。
感谢您对此事的关注。期待您的迅速回复。
此致敬礼,
[Sender]
复制该消息,并将其粘贴到 user_email_placeholder 变量旁的 Current Value 文本框中。
向上滚动并 Run 该提示词。将生成一个响应。您可以看到该响应已经过优化,可供您的软件应用进一步使用。 您可以看到该响应已经过优化,可供您的软件应用使用。
Note
您也可以为该变量提供默认值,这样在测试和优化输出时就无需每次都提供变量值。我们稍后将使用此功能。
您已使用提示词模板执行了一个提示词。
本课其余配图














本课其余配图














本课其余配图














本课其余配图













