2.4.2 上下文
上下文指的是传递给模型的相关信息或细节,以便它更好地理解任务或话题并做出适当的响应。这些上下文可以包括之前的对话、背景信息、具体的用户请求,或任何为模型提供参照框架以生成更相关和准确响应的数据。提供上下文可以实现与模型更加连贯和有意义的交互。
引导模型输出我们期望的结果的一种流行技术是将示例性的提示-补全对作为上下文信息提供给模型。根据提供的示例数量,分为单样本(one-shot)推理和少样本(few-shot)推理。模型从这些示例中学习并相应调整其响应的能力称为“上下文学习”。在本章接下来的部分中,我们将深入了解如何通过少样本推理来实现上下文学习。
示例2-1~示例2-3给出了之前示例的重构版本,使用了更完整的提示结构,其中包括一条指令、上下文中的3个提示-补全对,以及输入数据和输出指示符。
示例2-1 指令
User: Answer the question using the format shown in the context.
示例2-2 上下文
Who won the baseball World Series in 2022? The Houston Astros won the World Series in 2022. They defeated the Philadelphia Phillies. Who won the baseball World Series in 2021? The Atlanta Braves won the World Series in 2021. They defeated the Houston Astros. Who won the baseball World Series in 2020? The Los Angeles Dodgers won the World Series in 2020. They defeated the Tampa Bay Rays.
示例2-3 输入数据和输出指示符
Who won the baseball World Series in 2016? Assistant:
完成情况如下:
The Chicago Cubs won the World Series in 2016. They defeated the Cleveland Indians.
可以看到,模型根据上下文中的示例进行学习并生成期望格式的补全。具体来说,Assistant:给出了一个简洁的回答,不包括额外的细节,例如棒球比赛的最终比分或者系列赛的比赛场数等,而不像之前的示例那样。
理想的提示结构可能会因任务的不同以及模型的上下文窗口大小而有所不同。上下文窗口指的是模型在生成补全时可以接受的token数量。每个模型都有固定大小的上下文窗口——从FLAN-T5的512个token到Anthropic的Claude的100 000个token。作为参考,Falcon的上下文窗口大小为2048,Llama 2的上下文窗口大小为4096。上下文窗口大小通常由底层神经网络架构的算法限制所决定。此外,在实践中,你可能会看到模型没有充分利用长序列。这通常被称为“遗忘”(forgetting)。重要的是要对更长的序列进行测试,而不是假定模型会像处理1000个token的输入那样处理100 000个token。
有些模型使用单一数值记录——最大token数量。这个数字代表输入token和生成的输出token的总和。
最佳的提示结构取决于生成式模型的训练和微调方式。因此,阅读文档,特别是特定生成式模型的模型信息卡,以获得对训练和微调过程中使用的提示结构的直观理解,这一点非常重要。优化提示和提示结构是提示工程的全部内容!
接下来,我们将学习如何进一步丰富提示中的上下文,以激发生成式AI模型所具有的涌现能力和令人印象深刻的特性,这种特性称为上下文学习。