作者:Andrew Macri, Garrett Spong
当多次询问同一问题时,大型语言模型 (LLM) 可能会给出不一致的答案。 例如,如果你请求帮助编写 Elasticsearch 查询,有时生成的查询可能会被 API 调用包装,即使我们没有请求它。 当将生成式人工智能集成到需要特定格式响应(例如查询)的分析师工作流程时,这种有时微妙、有时戏剧性的变化会增加复杂性。 在短期内,LLM 提供商可能会提供供应商特定技术的拼凑而成,以提高响应的可重复性。
幸运的是,除了这些新兴的特定于供应商的技术之外,还有一种通用模式可以在对话开始时构建提示以将其引向正确的方向。 我们将制作一个即时三明治,以提高与您首选的法学硕士聊天的质量和一致性。 我们将探索即时三明治的各个部分,并说明其在 Elastic AI Assistant 中的实际应用。
Elastic AI Assistant 集成了 Elastic Security 检测警报、事件、规则和数据质量检查,作为生成 AI 聊天的上下文。 该助手可以帮助快速制作三明治,并通过值的字段级假名(pseudonymization)化来降低隐私风险。
为生成式人工智能制作即时三明治
用提示三明治开始新的对话适用于为最受欢迎的 LLM 撰写提示,并为高质量和一致的回复定下基调,因为它:
- 引导助理的对话和角色
- 提供背景信息
- 提出问题或提出请求
考虑以下快速三明治的示例:
You are an expert in Elastic Security. I have an alert for a user named alice. How should I investigate it?
该提示可以解构为三个垂直堆叠的部分,类似于三明治:
_________________________________________________
/ \
| You are an expert in Elastic Security. | (1)
\ _______________________________________________/
+------------------------------------------------+
| I have an alert for a user named alice. | (2)
+------------------------------------------------+
/ \
| How should I investigate it? | (3)
\_______________________________________________/
提示三明治的每一层都有一个名称和特定用途:
- System prompt
- Context
- User prompt
每层的独特用途概述如下:
目的 | 例子 | |
System prompt | Steers the conversation and role of the assistant | You are an expert in Elastic Security. |
Context | Data or metadata, which may be structured or freeform | I have an alert for a user named alice. |
User prompt | Asks a question or makes a request | How should I investigate it? |
在构建和调整提示的可重复性时,这种三层格式提供了有关构建提示以及首先修改哪些部分的指导。
System promt - 系统提示
系统提示是三明治的顶层,使用角色提示等通用技术来构建对话和助理的角色。
一个系统提示可以与许多不同的上下文和用户提示组合。
在构建新提示或调整现有提示以获得更一致的响应时,通常最好从现有系统提示开始并向用户提示添加特定指令。 如果在需要时保留详细信息,则系统提示的可重用性更高。
考虑修改或创建新系统提示的原因包括:
- 在众多用户提示中重复相同的指令
- 请求包含或排除答案类别
- 需要向不同的受众(例如安全分析师或高管)解释结果
Context - 上下文
上下文是三明治的中间层,通常是数据或元数据。 在向第三方 LLMs 提供提示中的背景信息时,牢记数据隐私至关重要。 大多数流行的 LLMs 接受结构化格式(如逗号分隔值)或非结构化文本的上下文数据或元数据。
上下文数据可能包含可能识别个人身份的信息。 为了降低隐私风险,特定值在作为聊天上下文发送之前可能会被替换。 例如,当 user.name 作为上下文发送到 LLM 时,jem(user.name 字段的值)可能会替换为新生成的唯一 ID,如 3a4a99d0-60a5-4ab9-99dd-b6786da5b8b2。 当收到来自 LLM 的响应时,唯一 ID 将替换为原始值。 该技术是假名化的一个例子,因为如果没有附加信息,数据主体的重新识别是不切实际的。
稍后我们将讨论 Elastic AI Assistant 的数据匿名化功能如何提供可定制的字段级选项,用于包含、排除和生成某些类型的结构化上下文(例如警报)的伪匿名值。
User promt - 用户提示
用户提示是三明治的底层。 我们在这里提出诸如 “How should I investigate it?”之类的问题。 或提出请求,例如总结此警报。
优化重复性提示时,请考虑请求特定格式的输出。 例如,你可以将 format your output in markdown syntax 添加到用户提示中。
通常,你将创建比系统提示多得多的用户提示。 在完善提示以确保一致性时,用户提示应该是你的起点。
在 Elastic AI Assistant 中构建可重复的提示
现在你已经了解了如何识别提示三明治中的各层,接下来让我们研究一下该技术的实际应用,以在 Elastic AI Assistant 中构建可重复的提示。
在整个 Elastic Security 中单击 “Chat” 按钮会将数据(例如下面屏幕截图中的示例警报)作为聊天的上下文:
提示三明治的三层 - (1) System prompt、(2) Context 和 (3) User promt - 在下面的屏幕截图中进行了标记。
在将任何数据发送到 LLM 之前,你可以使用 Elastic AI Assistant 的内联 editing promt(编辑提示)预览(如上所示)来:
- 添加新的、编辑或删除 system prompts
- 添加附加 context、删除 context,并针对某些类型的数据,配置字段级匿名化
- 预览或编辑通过 Quick prompts 功能选择的用户提示
可以通过下面屏幕截图中显示的设置选择创建自定义系统提示和用户提示:
上面的 “Settings” 视图还配置数据匿名化的默认值。
数据匿名化(假名化)
Elastic AI 助手可以选择为某些类型的上下文数据(例如警报)提供匿名化,以便你可以:
- 允许或拒绝将特定字段作为上下文发送给 LLM
- 打开或关闭特定字段的匿名化
- 按字段或批量设置上述默认值
只有下面 Alert (from summary) 示例警报(来自摘要)上下文中 Allowed (允许) 的字段才会发送到 LLM:
在上面的例子中,三个字段的值在发送到LLM时都会被匿名化。 你可以接受配置的默认值或与预览交互以切换特定字段。
查看实际发送的内容
单击 “Showed anonymized” 开关即可显示聊天中发送至 LLM 和从 LLM 接收的匿名数据,如下面的动画 gif 所示:
Review what was actually sent
上图:“Show anonymized” 开关显示从 LLM 发送和接收的匿名数据。
结论
将生成式人工智能纳入工作流程时,制作即时三明治可以提高响应的一致性。 调整提示时,使用提示三明治的三层:System prompt、Context 和User prompt 作为更改内容以及何时更改的指导。
将数据作为上下文发送给 LLM 时,请记住隐私的重要性。 Elastic AI Assistant 的匿名功能仅允许将特定字段发送到 LLM 并对特定值应用字段级假名化,从而降低隐私风险。
开始免费试用 Elastic Cloud,免费试用 Elastic AI Assistant。 有关更多信息,包括如何将其与你选择的模型集成,请阅读我们的文档。
如果你是开发人员,请查看 Elasticsearch Relevance Engine™ (ESRE)、矢量搜索以及 Elastic 对 LangChain 的第一个贡献。
本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 当前不可用的任何特性或功能可能无法按时交付或根本无法交付。
在这篇博文中,我们可能使用了第三方生成式人工智能工具,这些工具由其各自所有者拥有和运营。 Elastic 对第三方工具没有任何控制权,我们对其内容、操作或使用不承担任何责任,也不对你使用此类工具可能产生的任何损失或损害负责。 使用人工智能工具处理个人、敏感或机密信息时请务必谨慎。 你提交的任何数据都可能用于人工智能培训或其他目的。 无法保证你提供的信息将得到安全或保密。 在使用之前,你应该熟悉任何生成式人工智能工具的隐私惯例和使用条款。
Elastic、Elasticsearch 和相关标志是 Elasticsearch N.V. 的商标、徽标或注册商标。 在美国和其他国家。 所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。
原文:Crafting Prompt Sandwiches for Generative AI | Elastic Blog