“我正在参加「掘金·启航计划」”
前一篇中介绍了基本的PE,引出了CoT,今天让我们一探究竟。
链式思考提示(Chain-of-Thought Prompting)
简称CoT,通过中间推理步骤实现了复杂的推理能力。我们可以将其与少样本提示相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务。
这篇论文这是足够大的语言模型才会出现的新兴能力。
不仅可以与少量样本结合,我们只需要简单的构建prompt,也能将CoT和零样本提示结合,产生良好的效果:
首先我们这样给出提示
错的很离谱,但是不要紧,我们只需要添加一句简单的“咒语”就能解决:
看吧,这就是prompt的威力,精妙的prompt能让LLM发挥出巨大的能力。
但是这就结束了吗?当然不,当我们能写出比较好的prompt之后,我们是不是可以要求LLM返回良好的格式供我们使用呢?当然可以,这就是我们下面要进行的主题。
规范输出
自然语言是对人类来说最好的沟通方式,但如果需要用程序和 LLM 对话,这就不一定了。对程序来说,最好能让 AI 用某种约定规范来对话。
一个理所当然的方式是直接告诉AI我们需要它返回什么格式的数据,下面我将让星火返回单词 look 的相关结果:
很不错的结果,我们可以很快的校验结果的格式和内容。
最近OpenAI更新了“function call”的能力,这样以后通过API 方式使用LLM的话就不用通过写过长的prompt来规范输出了。说到prompt过长,有一个很严肃的问题,那就是LLM的收费策略。
尽量使用英文写prompt
这个技巧是基于两个因素提出:
1. 大部分可用的数据集是英语:网络上的大部分内容,以及用来训练这些模型的大部分数据,都是英语。OpenAI 的 LLM虽然在理解和生成各种语言方面已经取得了显著的进步,但是中文训练内容的不足也会让AI生成的内容难以达到预期。
2. 成本:语言选择会影响成本。OpenAI 的 LLM 使用 token 计费,而单个汉字占用的 token 数量要比英文多得多。
所以,基于这两个因素,我们应该使用英文来写prompt。
不用担心英文能力,我们可以让LLM将中文翻译为英文再作为prompt即可,也有很好的工具帮助我们完成快捷的翻译动作。