prompt工程策略(三:使用 LLM 防护围栏创建系统提示)

原文:我是如何赢得GPT-4提示工程大赛冠军的
原文的原文: How I Won Singapore’s GPT-4 Prompt Engineering Competition


!!本内容仅适用于具有 System Prompt(系统提示)功能的 LLM。具有这一功能的最著名 LLM 是 ChatGPT。

1. 与 System Prompts 有关的术语

对于 ChatGPT,有大量资源使用 System PromptsSystem MessagesCustom Instructions 这三个术语,而且很多时候它们的意思似乎差不多。简单总结一下:

  • System Prompts 和 System Messages 是通过 ChatGPT 的 Chat Completions API 以程序化方式使用该 LLM 时使用的术语。
  • Custom Instructions 是通过 https://chat.openai.com/ 的用户界面使用 ChatGPT 时的术语。
    在这里插入图片描述
    不过整体而言,这三个术语指代的是同一对象。

2. System Prompts

System Prompts 是指附加的额外 prompt,其作用指示 LLM 理应的行为方式。之所以说这是额外附加的,是因为它位于「普通」prompt(也被称为用户 prompt)之外。

在一组聊天中,每一次你都要提供一个新的 prompt,System Prompts 的作用就像是一个 LLM 会自动应用的过滤器。这意味着,在一组聊天中,LLM 每次响应都要考虑 System Prompts

3 . 使用 System Prompts

使用 System Prompts 提供你希望 LLM 在整个聊天过程中全程记住的指令

4. System Prompts 应包含的内容

System Prompts 中的指令通常包含以下类别:

  • 任务定义,这样 LLM 在聊天过程中能一直记得要做什么
  • 输出格式,这样 LLM 能一直记得自己应该如何响应
  • 防护围栏,这样 LLM 能一直记得自己不应该如何响应。防护围栏(Guardrails)是 LLM 治理方面一个新兴领域,是指为 LLM 配置的可运行操作的边界。

举个例子,System Prompt 可能是这样的:

You will answer questions using this text: [insert text].
You will respond with a JSON object in this format: {“Question”: “Answer”}.
If the text does not contain sufficient information to answer the question, do not make up information and give the answer as “NA”.
You are only allowed to answer questions related to [insert scope]. Never answer any questions related to demographic information such as age, gender, and religion.

翻译:

你将使用以下文本回答问题:[insert text]。
你将使用以下格式的JSON对象进行响应:{“Question”:“Answer”}。
如果文本中没有包含足够的信息来回答问题,请不要编造信息,并给出“NA”的答案。
你只能回答与[insert scope]相关的问题。永远不要回答任何与人口统计信息有关的问题,如年龄、性别和宗教。

其中每部分的类别如下:
在这里插入图片描述

5. 「普通」prompt(用户 prompt) 包含的内容

System Prompt 会大致描述任务概况。在上面的 System Prompt 示例中,任务被定义为仅使用特定的文本进行问答,并指示 LLM 以 {“Question”: “Answer”} 的格式进行响应。

You will answer questions using this text: [insert text].
You will respond with a JSON object in this format: {“Question”: “Answer”}.

在这个案例中,聊天中的每个用户 prompt 都只是你希望得到文本解答的问题。举个例子,用户 prompt 可能是这样「What is the text about?」。而 LLM 的响应会是这样:{“What is the text about?”: “The text is about…”}。

但我们可以进一步泛化这个示例任务。在实践中,你更可能会有多个希望得到解答的问题,而不只是一个。在这个案例中,我们可以将上述 System Prompt 的第一行从

You will answer questions using this text: [insert text].

改为

You will answer questions using the provided text.

现在,每个用户 prompt 中都既包含执行问答所基于的文本,也包含所要回答的问题。

<text>
[insert text]
</text>

<question>
[insert question]
</question>

这里,我们依然使用 XML 标签作为分隔符,以一种结构化的方式为 LLM 提供这两段所需信息。此处 XML 标签中使用的名词是 textquestion对应于 System Prompt 中使用的名词,这样一来 LLM 就能理解这些标签与 System Prompt 指令有何关联。

System Prompt 应能给出整体任务指令,而每个用户 prompt 应提供你希望执行任务时使用的确切细节。比如在这个案例中,这个确切的细节是text 和question。

补充: 让 LLM 防护围栏变得动态化

  • 固定防护围栏:通过 System Prompt 中的几句话添加的。
  • 动态防护围栏:英伟达团队开发的 NeMo Guardrails 能让用户配置与 LLM 之间的期望对话流,从而在聊天的不同位置设置不同的防护围栏,实现随聊天不断演进的动态防护围栏。
  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LLMprompt是通过模板定义的,该模板包含用于描述和表示任务输入和输出的占位符。通过prompt,我们可以控制LLM在不同任务上的应用。一个常见的prompt使用问答形式的提示链,其中包括一个question()提示符用于将输入转换为问题,以及一个answer()提示符用于回答生成的问题。不同的提示链可以导致对输入的不同预测。因此,prompt的设计对于LLM的性能至关重要。 ASK ME ANYTHING PROMPTING (AMA)方法提出了一种简单而有效的方法来设计高质量的prompt。该方法通过产生多个有效的但不完美的prompt,然后将它们聚合起来,最终生成高质量的prompt。 这种方法可以减少开源LLM的参数数量,并取得比GPT3-175B更好的Few-Shot性能。 由于prompt的微小变化可能导致LLM性能的较大变化,因此prompt设计的重要性不容忽视。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [最新 | Ask Me Anything 一种提示(Prompt)语言模型的简单策略(斯坦福大学 & 含源码)](https://blog.csdn.net/yinizhilianlove/article/details/127215208)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值