大语言模型的提示词本质上是一种软约束(soft contrain)。
我们经常会发现,尽管我们对大模型提出了要求,这种要求往往是通过提示词实现的,但大模型仍然会输出超出我们要求的内容。
因此,这种要求不是硬性的,永远都会有极小的可能性会出现问题。例如 CRNN,也一定会出现识别的字符串超出原本字符串长度的情况。
进而,工程师在设计基于 LLMs 的应用时,应该将这部分考虑进去。毕竟,如果int a = 10; print(a);
的输出一般就是10
。
工程师为了能够让预训练的大模型能够更好的与人进行沟通(chat),往往在训练后会对大模型进行微调(fine tune)。
这种微调,某种程度上就是使用一些已有的 prompt 和回答,对模型进行训练。
因此,prompt engineering 的意义就是,使得 prompt 能够和微调的数据集进行匹配,从而使得模型能够获得更好的性能。