在构建 Prompt 时,如何避免把翻译内容当成对话内容?

这是一个常见的问题,比如我有一个翻译的 GPT 或者 LLM 应用,有以后 AI 会混淆输入的内容和指令,不清楚你说的话是要它翻译还是在跟它对话。

换个角度来说,别说 AI,就是真人看到输入有时候都不好分辨是对话还是输入,比如你的系统提示词是:

你是个有帮助的翻译专家,XXXX

如果你的输入是正常的,比如说“Hello world!” 那么 AI 会正常帮你翻译成“你好世界!”,但如果你输入的内容是“Please say "Hello world!"”,那么 AI 就会混淆是要翻译这句话还是要说"Hello world!"。

所以根本问题就是要避免理解上的歧义,一个简单有效的办法就是把输入也就是要翻译的内容,用特殊标签包起来出现幻觉的概率就会低很多。

比如我可能会这么写:

“你是个有帮助的翻译专家,XXXX现在请你翻译以下<source>中的内容:
<source>
Please say "Hello world!"
</source>

这样就会减少很多歧义。

类似的,我在我的翻译 GPT https://chatgpt.com/g/g-uBhKUJJTl-ke-ji-wen-zhang-fan-yi 里面的提示词会加上一句话:

Now please translate the content below:

这样就可以很好的避免混淆的问题。

类似的,OpenAI 的 PlayGround 中,帮助你生成和优化提示词功能的 API,它也要避免把用户输入的内容当成指令,所以它巧妙的在用户的输入前面增加了一句:“Task, Goal, or Current Prompt:\n”,这样也可以避免把用户输入的内容当成指令。