1.2 给 GPT 提供素材的技巧

上一章中我们提到 GPT 很多时候都会编造内容,而这也是 GPT 特性决定的,这个缺点目前也没办法立刻解决。相信聪明的读者一定已经想到了,不如我们先给它提供相关的素材再提问,这样不就能降低 GPT 胡说的概率了。

这种先提供素材再进行提问的方式,确实是「N 个防止 GPT 胡说办法」中最基础有效的方法,基于 GPT 的 New Bing 也是用这种方法来优化生成内容。不过在提供素材方面,我们还可以通过几个小技巧来进一步提高 GPT 生成内容准确度。

素材不要拘泥于自己的母语

第一篇文章中,我曾经提到 GPT 对普通人最大的好处就是打破语言的隔阂,因为 GPT 懂的语言真的非常多。所以在给 GPT 提供素材时,尽量不要拘泥于自己的母语,要尽可能地输入其他语言的信息和数据,比如英语搜索结果、德语论文等。

在 New Bing 提供非母语素材这一步会很简单,你可以在 Prompt 后面加上 使用英文信息来源/使用德语论文作为参考 等关键词。这时 New Bing 就会用你指定的语言去搜索相关的结果,接着在用中文回答。这样 GPT 就可以根据问题和更加贴近来源的信息,来重新组织出新的母语回答。

指定 NewBing 的搜索语言

New Bing 和 GPT 4 的「Search with Bing」或「WebCopilot」在需要网络素材辅助的情况下,准确性会更具优势。它们的联网能力让 Prompt 中也可以直接带上网页链接,使用 Edge 浏览器的用户更是可以以打开的网页作为内容参考,来向 GPT 提出问题。

Edge 中给 New Bing 参考

节省 token 的诀窍

我们曾在第一章说明中提到 GPT 是有上限,这个上限就体现在 GPT API 可以接受的 token 上,超过 token 限额以后 GPT 虽然也能接收,但是这时 GPT 就会根据一定的算法丢弃信息了;而 ChatGPT 本身输入框还有个字数限制,超过这个限制 ChatGPT 也是会直接报错的。

两相结合起来,当我们我需要手动提供大量参考内容时,很容易超过单条 Prompt 的长度限制;目前,ChatGPT-3.5 模式是 4096 token/条,GPT4-8k 模式是 8000 token/条。通过 API 使用 GPT 时,虽然没有 ChatGPT 那样的输入框限制,但是输入大量的内容依然会让你的使用资费大幅增长。

关于我们输入的内容如何切分 Token 以及限制/价格,可以参考 OpenAI 官方的说明页面,里面还有一个 Token 计算器可以让我们输入自己的内容,直观看到 Token 数量和字符是如何切分为 Token 的。

直观呈现 Token 使用情况

使用 API 的第三方应用程序,通常还允许用户调整输入的上下文长度来降低使用的成本,但很多时候为了让 GPT 能更好地理解我们的意图,我们并不能直接缩减上下文的条数。这时我们就可以通过对素材进行简单地压缩,来降低 API 的使用成本。

压缩方法也很简单,我们这里以网页或论文为例,首先复制网页或论文的大标题、中标题等标题或者目录,然后构造 Prompt:

然后 GPT 就会按照相关程度排列你给出的目录列表,这时你就可以根据 GPT 帮你排列出的目录,去正文里复制素材了。

ChatGPT 给出的相关目录排序

复制正文以后,我还建议通过使用在线文本压缩工具将素材里面的多余字符去除,进一步节省 token 的数量。

要是觉得麻烦,我们还可以使用第三方已经接入 GPT 的工具,来降低使用成本,比如 ChatPDF 等。这类工具会使用各自优化的方法将长文档输入 GPT,比如:先搜索与用户提问最相似的段落再分析,或者将文档先转化为向量数据库1里面的数据再进行分析。

如果你的英语水平不错,那么也可以通过使用英语提问,很大程度上节省 Token。按照目前 GPT 模型,英文占用 Token 约为中文的 25%-50%。不过不要为了节省 Token,而使用翻译软件将问题翻译为英文,很多时候如果用英文词不达意,不如直接用中文,毕竟我们还是以效果优先(虽然英文提问的效果确实好于中文)。

适时重新提及 Prompt

随着对话长度的增加,GPT 处理关联内容的算力要求会越来越高。所以通常服务商会设定对话达到一定长度之后,比如有更重要的信息且新的信息超过了模型的 Token 限制,就让 GPT 「忘记」之前的内容,来让 GPT 尽可能地关注于最新的指令和信息。

所以当你发现 GPT 有脱离素材开始「放飞自我」的情况时,就记得用「加强语气」来重新提醒 GPT 引入参考素材。我比较习惯使用{{}}来告诉 GPT 这部分是需要重点关注的内容,大家可以根据个人喜好换用其他的符号。

帮助 GPT 更好地理解素材

如果你的需求对 GPT 生产内容的准确度要求更高,并且素材来源多样,可以按照上面的方法提取压缩素材文本后,将不同的素材统一为相同的格式,这样有助于帮助 GPT 更好地理解你输入的素材。

格式可以随着你的需求而发生变动,比如将所有的素材都统一为:

当然这部分也可以交给 GPT 去做,新建一个专门用于转换格式的对话,来让 GPT 准确地讲你提供的任何素材文本,转换为你指定的格式,受限于篇幅本文就不做展开了,后续的文章中我们会详细讲解。

统一素材格式法的效果

可以看到,当我们将所有的素材转换成统一的格式后,GPT 的回答不仅会更加贴近原素材,回答也更加简洁和准确。当然,整理一定会有额外的工作量,整理只适合那些 GPT 收到素材后工作量比整理大的情况。

最后,建议大家有条件尽量使用最新的模型,比如 GPT4、New Bing 或是刚刚推出的 Claude 2,新一代的模型各个方面的能力都会比上一代模型有一个实质性的飞跃。比如 GPT4 基本所有的能力都要优于 GPT3.5,一个好的模型比起任何优化方法都要有效

总结

在这一章中我们认识了限制 GPT 创造性最好的办法就是,为 GPT 提供素材。而在下一章中我们将会学习另一个在 GPT 中也同样好用的办法——角色扮演。

  • 1一种可以储存向量数据的数据库,通常可以展示字与字、词与词之间的关联性。

最后更新于