摘要

一句话总结 本文提出了一种利用 Few-shot 提示词和 XML 标签让 GPT 分页输出的解决方案,有效解决了 GPT 在处理长文本翻译时因“偷懒”而仅输出摘要的问题。

关键要点

  • 问题背景:在输入几千至上万字的长内容(未超上下文窗口限制)时,GPT 常出现“偷懒”现象,无法完整输出而是生成摘要,多见于长文翻译和长代码生成。
  • 旧方案缺陷:手动拆分长内容会导致不同会话间风格不一致;“假装残疾人”的提示词偏方效果不稳定。
  • 核心解决方案:通过提示词让 AI 分页输出,遇到超长内容时每次只输出一页。
  • 翻译场景效果:在翻译任务中表现优异,能完整输出内容而不做总结,且保持在同一上下文中确保了翻译风格的一致性。
  • 操作方式:用户无需手动切分原文,只需在分页中断时多次手动输入“continue”即可继续生成。
  • 提示词技巧:采用 Few-shot(少样本提示),针对短内容和长内容分别提供示例,长内容需包含已翻译完和未翻译完的示例状态。
  • 输出格式:使用 XML 标签(如 <page page="1" more="true">)来清晰标识当前页码以及是否还有后续内容。

风险与不足

  • 代码生成场景效果不佳:在输出长代码时,GPT 容易混淆独立模块与部分代码的边界,导致分页混乱和单页出现大量重复代码,该场景的解决方案仍在研究中。

正文

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

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

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

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

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

Image 1

前几天突然有了个灵感《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,可以清楚看到第几页,以及是否结束。

Image 2

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

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

相关文档

关联主题