为常见查询开发基础提示
学习目标
在 SAP AI Launchpad 中使用 generative AI hub 构建基础提示词。
一旦您已访问 generative AI hub 并部署了编排服务,就可以使用 generative AI hub 来解决具体业务问题了。这种交互的一项关键技能是开发提示词(developing prompts),即为 LLM 创建清晰有效的指令。
本课将引导您完成一个迭代过程:在 SAP AI Launchpad 中开发一个基础提示词,以应对某项业务挑战。我们将重点利用 system 和 user 角色来提供清晰的指令与上下文,最终产出结构化、机器可读的输出。到本课结束时,您将能够构建并优化提示词,使其产生精确、可操作的结果,并可直接集成到您的企业应用中。
确定业务场景
设施管理
本次学习之旅的关注对象是一家设施解决方案公司(Facility Solutions Company),它是一家为住宅和商业物业提供全面设施管理、维护和清洁服务的领先供应商。其使命是确保环境保持安全、高效并维护得无可挑剔。其目标市场包括高端住宅小区、公寓、独栋住宅、办公楼、零售空间、工业设施和教育机构。
业务问题:
该设施解决方案公司每天收到数千封来自客户的电子邮件,内容涉及请求、投诉和其他咨询。他们维护内部应用来处理这些客户沟通,需要高效的处理与优先级排序,以确保及时且准确的回复。
然而,目前对这些邮件进行分类是一个人工流程:将数据从邮件转移到内部应用,然后人工对每项任务进行分类并排定优先级。这一过程耗时、易出错,并在客户服务中造成瓶颈。
该公司现在正转向 SAP 的 generative AI hub,以实现这一关键流程的自动化与精简。在整个学习之旅中,我们将为这一问题提供分步解决方案。
在 SAP AI Launchpad 中开发提示词
开发用于解决业务问题的提示词是一个迭代的构思过程。您从一个基本想法开始,进行测试,观察 LLM 的响应,然后不断优化您的指令,直到输出满足您的具体业务需求。
现代提示词工程的最佳实践是使用不同的对话角色:system 和 user。这些角色让 LLM 清楚它所接收的每段文本的性质:
system 角色 用于为 LLM 设定总体规则、人设和约束。它定义 LLM 是谁、应如何表现,以及在整个交互过程中必须遵循哪些通用准则。
user 角色 提供该特定轮次的具体查询或输入。您在此处放置 LLM 需要处理的动态内容。
让我们开始开发一个提示词,用于从收到的客户邮件中提取紧急程度和情感倾向。您可以从任何模型开始,例如 Gemini 模型,或可通过 generative AI hub 访问的开源 LLM(如 Mistral AI)。开源 LLM 具有降低成本、透明性和可定制等优势,使其成为开发阶段的绝佳选择。
步骤 1:开发用于提取紧急程度和情感倾向的基础提示词
我们首先让 LLM 简单地提取紧急程度和情感倾向。在此阶段,我们不施加严格的格式或取值约束。
提示词结构:
[
{
"role": "system",
"content": "你是一个乐于助人的助手。你的任务是分析客户消息。从所提供的消息中提取紧急程度和情感倾向。"
},
{
"role": "user"
"content": " 分析以下消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
当您在 SAP AI Launchpad 中执行此提示词时,可能会收到一段冗长、对话式的回复。例如:“该消息的紧急程度为高。所传达的情感倾向为负面,因为客户因 HVAC 系统故障而正经历严重不适。”
虽然 LLM 正确地识别了紧急程度和情感倾向,但这种冗长的输出对于需要自动处理这些值的应用来说并不直接可用。我们需要优化提示词,以产出更结构化的数据。
步骤 2:为紧急程度和情感倾向分配预定义取值
之前的响应过于冗长。我们的目标是分配具体的紧急程度和情感倾向取值,以便用作内部应用的输入。此步骤约束 LLM 只能使用预定义的标签。
提示词结构:
[
{
"role": "system",
"content": "你是一名专业的客户服务分析师。你的任务是分析客户消息并提取紧急程度和情感倾向。对于 'urgency',将消息归类为以下之一:`low`、`medium`、`high`。对于 'sentiment',将消息归类为以下之一:`positive`、`neutral`、`negative`。"
},
{
"role": "user",
"content": "分析以下消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
现在,LLM 的响应将受到更多约束,可能是“紧急程度:高,情感倾向:负面”。这更好了,但仍然需要从自然语言字符串中进行解析。
步骤 3:为紧急程度和情感倾向生成 JSON 输出
为使输出机器可读并能被您的内部应用直接消费,我们将指示 LLM 以 JSON 格式提供其响应。JSON 为高效的数据交换提供了一种简单、与语言无关且轻量的解决方案,被广泛应用于 API 和 Web 服务中。
提示词结构:
[
{
"role": "system",
"content": "你是一名专业的客户服务分析师。你的任务是分析客户消息并提取特定属性。对于 'urgency',将消息归类为以下之一:`low`、`medium`、`high`。对于 'sentiment',将消息归类为以下之一:`positive`、`neutral`、`negative`。
你的响应必须是一个有效的 JSON 字符串,且仅包含键 'urgency' 和 'sentiment'。"
},
{
"role": "user",
"content": "分析以下消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
该提示词将产生类似如下的 JSON 输出:{"urgency": "high", "sentiment": "neutral"}。这是一个显著的改进!
步骤 4:确保正确的 JSON 格式
即便给出了 JSON 相关指令,LLM 有时仍可能包含多余字符,例如 markdown 代码块(json ...)或额外空白,这会破坏自动化解析。此步骤添加明确的指令,以确保产出干净、可解析的 JSON 字符串。
提示词结构:
[
{
"role": "system",
"content": "你是一名专业的客户服务分析师。你的任务是分析客户消息并提取特定属性。对于 'urgency',将消息归类为以下之一:`low`、`medium`、`high`。对于 'sentiment',将消息归类为以下之一:`positive`、`neutral`、`negative`。
你的完整响应必须是一个有效的 JSON 字符串,可直接由应用程序解析。它应仅包含键 'urgency' 和 'sentiment'。不要包含任何其他文本、解释或格式(例如 markdown 代码块,如 ```json)。确保 JSON 结构之外没有换行符或不必要的空白。"
},
{
"role": "user",
"content": "分析以下消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
如截图所示,该提示词给出明确的指令,要求提供干净的 JSON 格式,不包含任何引号或多余空白,从而使其对软件消费而言足够稳健。
步骤 5:基于业务职能的简单分类
除了紧急程度和情感倾向之外,我们还需要为业务需求对消息进行分类。起初,我们让 LLM 直接分配相关类别,而不提供预定义列表。
提示词结构:
[
{
"role": "system",
"content": "你是一名专业的客户服务分析师。你的任务是分析客户消息,并为该消息分配一个匹配的支持类别列表。"
},
{
"role": "user",
"content": "分析以下消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
现在,LLM 将分配类别。然而,这些类别可能是自由形式的,可能会与其他取值(如紧急程度)重叠,并且与预定义的内部类别不一致。
步骤 6:从预定义列表中为类别分配取值
为确保一致性并与公司内部处理流程保持一致,我们需要 LLM 从特定的预定义列表中选择类别。使输出与业务需求对齐,是有效解决业务问题的关键一步。
提示词结构:
[
{
"role": "system",
"content": "你是一名专业的客户服务分析师。你的任务是分析客户消息,并从以下预定义列表中分配一个最匹配的支持类别标签列表:
`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`。"
},
{
"role": "user",
"content": "分析以下消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
如截图所示,在第 6 版中,LLM 现在将严格从所提供的列表中选择类别,这些类别已针对业务处理进行了精简。
步骤 7:为类别取值生成 JSON 输出
与步骤 3 类似,我们需要以 JSON 输出形式获得类别取值,以便进行程序化处理。我们还将重申干净 JSON 格式的重要性。
提示词结构:
[
{
"role": "system",
"content": "你是一名专业的客户服务分析师。你的任务是分析客户消息并提取特定属性。对于 'categories',从以下预定义列表中分配一个最匹配的支持标签列表:
`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`。
你的完整响应必须是一个有效的 JSON 字符串,可直接由应用程序解析。它应仅包含键 'categories'。不要包含任何其他文本、解释或格式(例如 markdown 代码块)。确保 JSON 结构之外没有换行符或不必要的空白。"
},
{
"role": "user",
"content": "分析以下消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
如截图所示,LLM 将在一个干净的 JSON 输出中提供类别,可直接供软件消费。
步骤 8:合并所有步骤,形成统一的提示词
我们采用分步方法,最终得到了紧急程度、情感倾向和类别的正确取值,并以 JSON 格式呈现。现在,我们将所有这些指令整合为一个单一且稳健的提示词。这个合并后的提示词将作为我们自动化邮件分类系统的最终版本。
提示词结构:
[
{
"role": "system",
"content": "你是一家设施管理公司的专业客户服务分析师。你的任务是分析收到的客户消息,并提取特定属性以供自动化处理。
对于 'urgency',将消息归类为以下之一:`low`、`medium`、`high`。
对于 'sentiment',将消息归类为以下之一:`positive`、`neutral`、`negative`。
对于 'categories',从以下预定义列表中分配一个最匹配的支持标签列表:
`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`。
你的完整响应必须是一个有效的 JSON 字符串,可直接由应用程序解析。它应仅包含键 'urgency'、'sentiment' 和 'categories'。不要包含任何其他文本、解释或格式(例如 markdown 代码块,如 ```json)。确保 JSON 结构之外没有换行符或不必要的空白。"
},
{
"role": "user",
"content": "分析以下客户消息:
---
主题:急需 HVAC 系统维修
尊敬的支持团队:
希望您一切顺利。我叫 [Sender],来自 [Residential Complex Name],我已在那里居住多年。我一直非常赞赏贵团队在维护我们设施时所付出的细致关怀与关注。
然而,我目前正面临公寓内 HVAC 系统的一个紧迫问题。过去几天里,该系统一直出现故障,导致温度不稳定,有时甚至完全停机。鉴于当前的天气状况,这已变得相当难以忍受,并严重影响了我的日常生活。
我曾尝试通过重置系统和检查恒温器设置来排查该问题,但这些努力都没有带来任何改善。情况似乎已超出我的控制范围,需要专业人员介入。
恳请立即派遣维修团队来处理这一紧急问题。此事的紧迫性怎么强调都不为过,因为它不仅影响我的舒适度,也影响我有效开展日常活动的能力。
感谢您对此事的及时关注。期待您的迅速回复与解决。
此致敬礼,
[Sender]
---
"
}
]
如截图所示,这个统一的提示词以干净的 JSON 形式交付输出,例如:
{"urgency": "high", "sentiment": "negative", "categories": ["emergency_repair_services", "routine_maintenance_requests", "facility_management_issues"]}
现在,该输出能够以可被软件立即处理的格式,一致地为客户消息分配紧急程度、情感倾向和类别,从而满足业务需求。您已成功开发出一个朝着问题解决方案迈进的提示词。
本课小结
您已成功完成了在 SAP AI Launchpad 的 generative AI hub 中为常见查询开发基础提示词的迭代过程。您已看到,使用 system 和 user 角色定义清晰的指令、提供具体的分类选项,以及明确要求结构化的 JSON 输出,对于创建机器可读、可操作的结果至关重要。这项提示词工程的基础技能使您能够将非结构化的业务沟通转化为有价值、可处理的数据,从而在您的企业应用中实现自动化并提升效率。
本课其余配图




