本文档涵盖了Llama模型变体中使用的提示格式约定、特殊标记和结构化输入格式。提示格式定义了文本、图像和工具调用如何被组织成模型输入,以及模型如何生成结构化输出。
有关底层分词机制的信息,请参阅分词和量化。有关工具调用实用程序和验证的详细信息,请参阅工具实用程序。有关模型特定功能和特性的信息,请参阅模型版本。
Llama模型使用一组特殊标记来构建对话、处理多模态输入和管理工具交互。这些标记在提示格式中充当分隔符和控制信号。
| 标记 | 目的 | 使用上下文 |
|---|---|---|
| `< | begin_of_text | >` |
| `< | end_of_text | >` |
| `< | header_start | >` |
| `< | header_end | >` |
| `< | eot | >` |
| 标记 | 目的 | 使用上下文 |
|---|---|---|
| `< | image_start | >` |
| `< | image_end | >` |
| `< | patch | >` |
| `< | tile_x_separator | >` |
| `< | tile_y_separator | >` |
| `< | image | >` |
来源:models/llama4/prompt_format.md5-16
基本对话格式遵循由头部限定的结构,其中每条消息都包含在角色头部中并以轮次结束标记终止。
基本对话格式流程
系统支持三种不同的角色,每种角色都有其特定用途
来源:models/llama4/prompt_format.md20-23 models/llama4/prompt_format.md32-45
简单的文本对话遵循标准的头部限定格式。每个轮次都包含一个角色头部、消息内容和轮次结束标记。
<|begin_of_text|><|header_start|>system<|header_end|>
You are a helpful assistant<|eot|><|header_start|>user<|header_end|>
Answer who are you in the form of jeopardy?<|eot|><|header_start|>assistant<|header_end|>
模型生成
"What is a helpful assistant?"<|eot|>
来源:models/llama4/prompt_format.md32-45
图像提示使用补丁标记和瓦片分隔符嵌入视觉数据。格式因图像大小和模型的平铺策略而异。
图像处理格式决策树
对于小于瓦片大小的图像,格式包括一个缩小的版本,后跟补丁标记
<|image_start|><|image|><|patch|><|patch|>...<|patch|><|image_end|>
对于需要平铺的图像,分隔符将补丁组织成网格结构
<|image_start|><|patch|>...<|tile_x_separator|><|patch|>...<|tile_y_separator|><|image|><|patch|>...<|image_end|>
`<|image|>`标记将常规尺寸的图像信息与适合单个瓦片的缩小版本分开。
每张图像都包裹在各自的`<|image_start|>`和`<|image_end|>`标记中
<|image_start|>...first_image...<|image_end|><|image_start|>...second_image...<|image_end|>
来源:models/llama4/prompt_format.md51-126
工具调用使模型能够在生成过程中调用外部函数。系统支持多种定义和调用工具的格式。
工具调用格式选项
函数在系统消息中以JSON格式定义
模型生成类似Python语法的函数调用
[get_weather(city="San Francisco"), get_weather(city="Seattle")]<|eot|>
类似于系统消息格式,但函数定义出现在用户消息中与查询一起。
自定义指令格式允许使用替代语法
<function=trending_songs>{"n": 10}</function><|eot|>
来源:models/llama4/prompt_format.md128-304
提示格式化系统与多个核心组件集成
提示格式集成架构
核心数据类型中的`Role`枚举和`RawMessage`类为消息结构提供了基础,而分词系统则处理从格式化提示到模型输入标记的转换。