以下代码片段演示了通过 ChatML 使用 GPT-3.5-Turbo 模型的最基本的方法。 如果这是你第一次以编程方式使用这些模型,建议先从 GPT-35-Turbo 和 GPT-4 快速入门开始。
标记指示消息的结束。 使用 ChatML 时,建议将 标记作为停止序列包含在内,以确保模型在到达消息末尾时停止生成文本。
考虑将 设置为略高于正常值,例如 300 或 500。 这可确保模型在到达消息末尾之前不会停止生成文本。
与以前的 GPT-3 和 GPT-3.5 模型不同, 模型以及 和 模型将继续更新。 创建这些模型的部署时,还需要指定模型版本。
可在我们的模型页上找到这些模型的模型停用日期。
OpenAI 使用特殊标记对 GPT-35-Turbo 进行训练,以标明提示的不同部分。 提示从用于启动模型的系统消息开始,然后是用户和助手之间的一系列消息。
基本 ChatML 提示的格式如下所示:
系统消息包含在 和 标记之间的提示的开头。 此消息提供模型的初始说明。 可以在系统消息中提供各种信息,包括:
可以为你的用例自定义系统消息,也可以仅包含基本系统消息。 系统消息是可选的,但建议至少包含一个基本消息,以获得最佳结果。
在系统消息之后,可以在用户和助手之间加入一系列消息。 每条消息都应以 标记开头,后跟角色( 或 ),以 标记结尾。
若要触发模型的回复,提示应以 标记结尾,指示轮到助手回复了。 还可以在提示中加入用户和助手之间的消息,作为进行少样本学习的方式。
以下部分展示了可用于 GPT-35-Turbo 和 GPT-4 模型的不同提示样式的示例。 这些示例只是为了抛砖引玉,你可以尝试使用不同的提示来为自己的用例自定义行为。
如果你希望 GPT-35-Turbo 和 GPT-4 模型的行为类似于 chat.openai.com,可以使用基本系统消息,例如“助手是 OpenAI 训练的大型语言模型”。
对于某些场景,你可能希望向模型提供其他说明,以定义模型能够执行的操作的边界。
你还可以在系统消息中加入相关数据或信息,为模型提供额外的对话上下文。 如果只需要包含少量信息,则可以将其硬编码到系统消息中。 如果你有模型应注意的大量数据,则可以使用嵌入或 Azure AI 搜索等产品在查询时检索最相关的信息。
还可以为模型提供少样本学习的示例。 由于新的提示格式,少样本学习的方法略有变化。 现在可以在提示中加入用户和助理之间的一系列消息,作为少样本学习示例。 这些例子可以用来为常见问题设定回答,以启动模型或教它特定的行为。
这只是通过 GPT-35-Turbo 使用少样本学习的其中一个示例。 可以尝试不同的方法,看看哪种方法最适合你的用例。
ChatML 旨在使多轮次对话更易于管理,但它也适用于非聊天场景。
例如,对于实体提取场景,可以使用以下提示:
请务必将缓解措施添加到你的应用程序中,以确保安全使用聊天标记语言。
建议阻止最终用户在其输入中加入特殊标记,例如 和 。 我们还建议加入其他验证,以确保发送到模型的提示格式正确,并遵循本文档中所述的聊天标记语言格式。
还可以在系统消息中提供说明,指导模型如何响应某些类型的用户输入。 例如,可以指示模型仅回复有关特定主题的消息。 还可以通过少样本学习示例来强化此行为。
的标记限制为 4096 个标记。 此限制包括来自提示和补全的标记数。 与 参数的值组合在一起的提示中的标记数必须保持在 4096 以下,否则将收到错误。
你有责任确保提示和补全操作在标记限制范围内。 这意味着,对于较长的对话,需要跟踪标记数,并仅向模型发送在标记限制以内的提示。
以下简易代码示例演示了如何跟踪会话中的单独消息。
控制在标记限制之下的最简单方法是在达到标记限制时删除对话中最早的消息。
可以选择始终包含尽可能多的标记,同时保持在限制范围内,也可以始终包含一定数量的先前消息(假设这些消息能保持在限制范围内)。 请务必记住,与较短的提示相比,较长的提示需要更长的时间生成回复并产生更高的成本。
可以使用 tiktoken Python 库估计字符串中的标记数,如下所示。