现在越来越多的技术文档网站提供了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), })