Prompt Engineering提示工程——LLM的使用技巧(二)

804 阅读2分钟

“我正在参加「掘金·启航计划」”

前一篇中介绍了基本的PE,引出了CoT,今天让我们一探究竟。

链式思考提示(Chain-of-Thought Prompting)

简称CoT,通过中间推理步骤实现了复杂的推理能力。我们可以将其与少样本提示相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务。

image.png  

这篇论文这是足够大的语言模型才会出现的新兴能力。

 

不仅可以与少量样本结合,我们只需要简单的构建prompt,也能将CoT和零样本提示结合,产生良好的效果:

首先我们这样给出提示

image.png

错的很离谱,但是不要紧,我们只需要添加一句简单的“咒语”就能解决:

image.png

看吧,这就是prompt的威力,精妙的prompt能让LLM发挥出巨大的能力。

但是这就结束了吗?当然不,当我们能写出比较好的prompt之后,我们是不是可以要求LLM返回良好的格式供我们使用呢?当然可以,这就是我们下面要进行的主题。

规范输出

自然语言是对人类来说最好的沟通方式,但如果需要用程序和 LLM 对话,这就不一定了。对程序来说,最好能让 AI 用某种约定规范来对话。

一个理所当然的方式是直接告诉AI我们需要它返回什么格式的数据,下面我将让星火返回单词 look 的相关结果:

image.png

很不错的结果,我们可以很快的校验结果的格式和内容。

最近OpenAI更新了“function call”的能力,这样以后通过API 方式使用LLM的话就不用通过写过长的prompt来规范输出了。说到prompt过长,有一个很严肃的问题,那就是LLM的收费策略。

 

尽量使用英文写prompt

这个技巧是基于两个因素提出:

1.      大部分可用的数据集是英语:网络上的大部分内容,以及用来训练这些模型的大部分数据,都是英语。OpenAI 的 LLM虽然在理解和生成各种语言方面已经取得了显著的进步,但是中文训练内容的不足也会让AI生成的内容难以达到预期。

2.      成本:语言选择会影响成本。OpenAI 的 LLM 使用 token 计费,而单个汉字占用的 token 数量要比英文多得多。

所以,基于这两个因素,我们应该使用英文来写prompt。

不用担心英文能力,我们可以让LLM将中文翻译为英文再作为prompt即可,也有很好的工具帮助我们完成快捷的翻译动作。