一、chaining prompts应用解析及输出文本的设定
由于输入和输出都是字符串形式的自然语言,为了方便输入和输出信息与系统设定使用的JSON格式之间进行转换,接下来定义从输入字符串转为JSON list的方法:
定义从JSON list转为输出字符串的方法,根据产品和类别输出从系统设定中查到的信息:
接下来设定当用户基于具体产品信息进行查询时,系统应该以什么样的方式回复结果给用户,在编写prompt中的文本时,需要注意不要有多余的信息,因为LLM对文本比较敏感,如果你在文本设定时说了多余的话,那这些多余的话会让LLM感到“困惑”,从而影响到LLM给用户的回复信息,以下是一个设定的样例,说明一是需要给出精确的答案,二是注意回复的语调:
二、检查LLM输出的内容是否可能包含有害的内容
当用户与LLM进行交互时,有可能LLM会输出一些有害的内容,所以需要进行检查,下面给出一个LLM给用户的回复示例,通过调用API来检查这段回复是否包含有害的内容:
调用API之后返回结果如下,内容可以归纳为以下3点:
-首先针对有害分类进行识别,结果都为false
-对每个有害分类给出打分结果
-给出综合评定:"flagged": false
{
"categories": {
"hate": false,
"hate/threatening": false,
"self-harm": false,
"sexual": false,
"sexual/minors": false,
"violence": false,
"violence/graphic": false
},
"category_scores": {
"hate": 4.2486073e-07,
"hate/threatening": 5.676476e-10,
"self-harm": 2.9144967e-10,
"sexual": 2.2432391e-06,
"sexual/minors": 1.2526144e-08,
"violence": 5.949349e-06,
"violence/graphic": 4.4063694e-07
},
"flagged": false
}
三、如何使用prompt检查LLM输出是否符合系统设定
以下是LLM针对用户提问回复给用户的信息,总体看来就是一些有关产品参数的信息,没有看到有多余的信息:
The SmartX ProPhone has a 6.1-inch display, 128GB storage, 12MP dual camera, and 5G. The FotoSnap DSLR Camera has a 24.2MP sensor, 1080p video, 3-inch LCD, and interchangeable lenses. We have a variety of TVs, including the CineView 4K TV with a 55-inch display, 4K resolution, HDR, and smart TV features. We also have the SoundMax Home Theater system with 5.1 channel, 1000W output, wireless subwoofer, and Bluetooth. Do you have any specific questions about these products or any other products we offer?
接下来针对上面的输出内容使用下面设定的prompt来检查LLM给出的回复是否是基于系统设定的产品内容来给出的:
输出结果是“Y”,但是如果使用下面这个例子中的LLM的输出进行检测,那么结果显然是不符合期望的: