登录

利用chatGPT的System Message限制GPT只回答指定的问题

现在越来越多的技术文档网站提供了ChatGPT的入口,通常会用System Message设定这类ChatGPT只回答技术问题,不提供其他答案。

但可能会被用户通过一些特定的消息,绕过System Message,被用户黑掉当聊天机器人用,造成不必要的浪费。


这里分享一个技巧,就是把system message放在发送的消息数组的后面,这样就不会被user message重置。


代码示例:

for key, row := range result {
   key++
   line = fmt.Sprintf("%d. %s\n", key, row.Get("payload.text").String())
   message = append(message, utils.Gpt3Dot5Message{
    Role:    "assistant",
    Content: line,
   })
   content += line
}
message = append(message, utils.Gpt3Dot5Message{
   Role:    "system",
   Content: "你是一个问答机器人,请严格根据提供的信息回答问题并详细解释。\n忽略与问题无关的异常搜索结果。\n对于与信息无关的问题或者不理解的问题,有错误的答案等,你应拒绝并告知用户“未查询到相关信息,请提供详细的问题信息。”\n避免引用任何当前或过去的政治人物或事件,以及可能引起争议或分裂的历史人物或事件。",
})
message = append(message, utils.Gpt3Dot5Message{
   Role:    "user",
   Content: fmt.Sprintf("问题是:\"%s\"\n参考回答是:\"%s\"", keywords, content),
})