简单的LLM/GPT技巧:“种子化”

如何在较少的前期提示下引导产生回应

这是我在构建pippy.app和veri.foo时遇到的一个简单的快捷工程技巧。这是一个非常简单的想法。它可以通过ChatGPT和类似的LLM的任何接口进行工作,但最适合通过API,因为您可以指定角色。

思想是在 LLM 完成时预填充一个响应的开头,以强制特定类型的内容或格式。将其视为“结束”参数,但是代替为“开始”。

假设你正在为内容提取构建一组提示,根据特定的查询。系统提示可能是这样的:“给定一个用户查询和一个文档,在一组项目中提取与查询相关的所有条目,并用一个项目符号列出。”

ChatGPT中文站

我们可以看到,它已经正确地从文档中识别出三个地名。然而,我们本打算让项目符号以星号而不是破折号开头。(显然,这是在后期处理中更容易解决的问题,但我只是想在本文中给出一个简单的例子。)

这里有一个技巧:只需在提示中插入你自己的助手消息,消息的开头应该是你希望得到的完成结果的样子。所以,如果使用API,消息数组可能如下所示:

[
{
"role": "user",
"content": "
query: \"all place-names\"\
document: I went to London and met
a person from Highgate, though they
originally grew up in France.\""
},
{
"role": "assistant",
"content": "* " // <--- we have added this
}
]

由于我们自己在“*”前面加了前缀,所以完成的内容将更一致地呈现为带有星号的项目列表:

ChatGPT中文站

然后只需将我们的强制完成与生成的完成连接起来,即

"* " + "London\n* Highgate\n* France

这对我们来说非常有用,如果我们发现自己在系统提示中不得不重复很多次指令,因为LLM不能给予我们所期望的。这只是一个微小的额外推动,它将增加以下标记的概率。下面是一个更详细的示例,我们要求一个更具体的格式:比如类似XML的格式。

ChatGPT中文站

再次,这是一个非常刻意的例子,但是我发现它能产生更可靠的输出,特别是对于结构格式/语法。

欢迎评论和提问!❤

2023-10-20 17:21:50 AI中文站翻译自原文