如何使用大型语言模型
大型语言模型如何工作
大型语言模型是进行文本到文本映射的函数。给定一段文本输入,大型语言模型会预测接下来应该出现的文本。
大型语言模型的魔力在于,通过在海量文本上进行训练以最小化此预测错误,模型最终会学习到对这些预测有用的概念。例如,它们会学习:
- 如何拼写
- 语法如何工作
- 如何释义
- 如何回答问题
- 如何进行对话
- 如何用多种语言写作
- 如何编写代码
- 等等
它们通过“阅读”大量现有文本,学习单词如何在上下文中与其他单词一起出现,并利用所学知识来预测用户请求响应中最有可能出现的下一个单词,以及之后的每个后续单词。
GPT-3 和 GPT-4 支持许多软件产品,包括生产力应用、教育应用、游戏等。
如何控制大型语言模型
在大型语言模型的所有输入中,到目前为止,影响最大的是文本提示。
可以通过以下几种方式提示大型语言模型生成输出:
- 指令:告诉模型你想要什么
- 补全:诱导模型补全你想要的开头部分
- 场景:给模型一个需要演绎的情境
- 演示:向模型展示你想要的内容,通过以下方式之一:
- 在提示中提供几个示例
- 在微调训练数据集中提供数百或数千个示例
下面将展示每种方式的示例。
指令提示
在提示的顶部(或底部,或两者都写)写下你的指令,模型会尽力遵循指令然后停止。指令可以很详细,所以不要害怕写一个段落来详细说明你想要的输出,只需注意模型可以处理多少token。
指令提示示例:
从下面的引文中提取作者的名字。
“一些人类理论认为,智慧物种在能够扩展到外太空之前就灭绝了。如果他们是正确的,那么夜空的寂静就是墓地的寂静。”
— 特德·姜,《呼吸之间》
输出:
特德·姜
补全提示示例
补全式提示利用了大型语言模型试图编写它们认为最有可能出现的文本的特性。为了引导模型,尝试开始一个模式或句子,它将被你想要看到的输出所补全。与直接指令相比,这种引导大型语言模型的方式可能需要更多的细心和实验。此外,模型不一定会知道何时停止,因此你通常需要停止序列或进行后处理来截断生成的超出所需输出的文本。
补全提示示例:
“一些人类理论认为,智慧物种在能够扩展到外太空之前就灭绝了。如果他们是正确的,那么夜空的寂静就是墓地的寂静。”
— 特德·姜,《呼吸之间》
这句引文的作者是
输出:
特德·姜
场景提示示例
为模型提供一个场景来遵循或一个角色来扮演,对于复杂的查询或寻求富有想象力的回应可能很有帮助。在使用假设性提示时,你设置一个情境、问题或故事,然后要求模型像该场景中的角色或该主题的专家一样回应。
场景提示示例:
你的角色是提取给定文本中作者的名字
“一些人类理论认为,智慧物种在能够扩展到外太空之前就灭绝了。如果他们是正确的,那么夜空的寂静就是墓地的寂静。”
— 特德·姜,《呼吸之间》
输出:
特德·姜
演示提示示例(少样本学习)
与补全式提示类似,演示可以向模型展示你想要它做什么。这种方法有时被称为少样本学习,因为模型可以从提示中提供的几个示例中学习。
演示提示示例:
引文:
“当理性思维被迫一次又一次地面对不可能时,它别无选择,只能适应。”
— N.K. 杰米辛,《第五个季节》
作者:N.K. 杰米辛
引文:
“一些人类理论认为,智慧物种在能够扩展到外太空之前就灭绝了。如果他们是正确的,那么夜空的寂静就是墓地的寂静。”
— 特德·姜,《呼吸之间》
作者:
输出:
特德·姜
微调提示示例
只要有足够的训练示例,你就可以微调一个自定义模型。在这种情况下,指令变得不必要,因为模型可以从提供的训练数据中学习任务。但是,包含分隔符序列(例如 ->
或 ###
或任何不常出现在你的输入中的字符串)来告诉模型提示何时结束以及输出应该何时开始可能会很有帮助。没有分隔符序列,模型可能会继续阐述输入文本,而不是开始你想要看到的答案。
微调提示示例(适用于已在类似提示-补全对上进行自定义训练的模型):
“一些人类理论认为,智慧物种在能够扩展到外太空之前就灭绝了。如果他们是正确的,那么夜空的寂静就是墓地的寂静。”
— 特德·姜,《呼吸之间》
###
输出:
特德·姜
代码能力
大型语言模型不仅在文本方面表现出色,在代码方面也同样出色。OpenAI 的 GPT-4 模型就是一个很好的例子。
GPT-4 支持众多创新产品,包括:
- GitHub Copilot(在 Visual Studio 和其他 IDE 中自动完成代码)
- Replit(可以补全、解释、编辑和生成代码)
- Cursor(在为与 AI 配对编程而设计的编辑器中更快地构建软件)
GPT-4 比之前的模型(如 gpt-3.5-turbo-instruct
)更先进。但是,要充分利用 GPT-4 进行编码任务,仍然需要提供清晰具体的指令。因此,设计良好的提示可能需要更多细心。
更多提示建议
有关更多提示示例,请访问OpenAI 示例。
总的来说,输入提示是改进模型输出的最佳杠杆。你可以尝试一些技巧,例如:
- 更具体 例如,如果你希望输出是逗号分隔的列表,请要求它返回逗号分隔的列表。如果你希望它在不知道答案时说“我不知道”,请告诉它“如果你不知道答案,请说‘我不知道’”。你的指令越具体,模型就越能更好地响应。
- 提供上下文 帮助模型理解你请求的全局背景。这可以是背景信息、你想要的示例/演示,或解释你的任务目的。
- 要求模型像专家一样回答 明确要求模型生成高质量的输出,或像专家撰写的那样输出,可以促使模型给出它认为专家会写的更高质量的答案。诸如“详细解释”或“分步描述”之类的短语可能有效。
- 提示模型写下解释其推理的步骤系列 如果理解答案背后的“原因”很重要,请提示模型包含其推理过程。这可以通过在每个答案前简单添加一行“让我们一步一步思考”来实现。