如何在输入内容很长的情况下,让 GPT 不“偷懒”?

最近比较好的解决了一个困扰我很久的 Prompt 难题:如何在输入内容很长的情况下,让 GPT 不偷懒?

注明一下,本文说的长内容是指相对比较长,比如几千上万字的输入,但是输入输出又没有超过上下文窗口限制的情况。

经常用 GPT 的朋友可能有这样的经历,就是在输入的内容很长的情况下,它会“偷懒”,也就是不输出完整内容,变成摘要。尤其体现在翻译长文、生成较长代码的情况下。

以前我的方案都是手动或者半手动的将长内容拆分成短内容,再合并,这样好处是不担心超长,但是坏处是如果拆分后在不同会话会导致风格不一致。

以前有个“偏方”,就是在提示词里面说“我是残疾人没有手指头”,那么善良的 AI 会尽力生成完整内容。但并不总是有效。

前几天突然有了个灵感《GPT 无法翻译超长内容的提示词优化尝试》 https://baoyu.io/blog/gpt/gpt-translation-long-content-optimization ,那就是让 AI 分页输出,遇到超长的内容每次只输出一页。

这些天用翻译 GPT ( https://chatgpt.com/g/g-uBhKUJJTl-ke-ji-wen-zhang-fan-yi )实验下来用在翻译上效果非常好,再不会总结,而是每次都完整的输出要翻译的内容,只是分成了好多页,需要多次手动输入 continue。但是不需要自己去切分,而且所有内容都在同一个上下文中,结果很一致。

提示词的技巧就是few-shot,针对短内容和长内容分别给出示例,长内容给出翻译完和没翻译完的示例。输出使用了 XML 标签,加了个 <page page="1" more="true"> tag,可以清楚看到第几页,以及是否结束。

但是输出代码上效果还不太如意,主要是文章分页相对容易,代码分页 GPT 又犯迷糊了,它不知道是该输出一个独立的模块还是模块的一部分代码,如果是独立模块内容同样很长,一分页就乱掉了,每页都有大量重复代码。代码的分页输出还在研究中。

完整提示词我更新在上一篇文章中了:https://baoyu.io/blog/gpt/gpt-translation-long-content-optimization