本文档涵盖了Llama模型系统中所使用的基本数据结构和类型定义。这些类型充当不同组件之间的接口契约,处理消息表示、工具调用、内容格式化和生成结果。
有关模型架构和Transformer实现的信息,请参阅模型架构。有关对这些数据类型进行操作的分词和量化过程,请参阅分词与量化。
核心数据类型被组织成几个类别,处理系统的不同方面
核心数据类型类别
| 类别 | 主要类型 | 目的 |
|---|---|---|
| 消息类型 | RawMessage、RawContent | 表示会话消息和内容 |
| 工具类型 | ToolCall、ToolDefinition | 处理函数调用和工具集成 |
| 生成类型 | GenerationResult、StopReason | 管理文本生成输出和元数据 |
| 角色类型 | Role、ToolPromptFormat | 定义会话角色和格式 |
Role 枚举定义了对话中的四种可能角色
system: 系统级指令和上下文user: 人类用户输入assistant: 模型生成的响应tool: 工具执行结果内容通过灵活的类型层次结构流转,支持文本和多模态数据
内容类型定义
RawTextItem: 包含用于字符串内容的 text 字段 models/datatypes.py136-138RawMediaItem: 包含用于base64序列化的二进制媒体的 data 字段 models/datatypes.py116-134RawContent: 允许字符串、单个项目或项目列表的联合类型 models/datatypes.py143RawMessage 作为主要的消息容器
消息结构支持输入消息(用户/系统)和输出消息(助手),并可选地支持工具调用功能。
系统通过 BuiltinTool 枚举提供预定义工具
这些代表了模型内置的核心功能,用于网页搜索、数学计算、图像生成和代码执行。
ToolCall 表示单个函数调用
`arguments` 字段支持字典和字符串两种格式,系统正在向仅字符串表示转换,以提高客户端解析的灵活性。
工具定义提供函数调用的元数据
ToolPromptFormat 枚举定义了工具调用的不同序列化格式
| 格式 | 描述 | 示例结构 |
|---|---|---|
json | JSON函数格式 | {"type": "function", "function": {...}} |
function_tag | 类似XML的标签 | <function=name>(params)</function> |
python_list | Python列表语法 | ["func(param1, param2)"] |
GenerationResult 捕获包含全面元数据的单个令牌生成
此结构支持批量生成,并提供每令牌元数据,包括对数概率和批量处理状态。
生成控制通过枚举进行管理
StopReason: 指示生成终止的原因 models/datatypes.py87-90QuantizationMode: 指定模型量化策略 models/datatypes.py176-179来源:models/datatypes.py87-90 models/datatypes.py176-179
这些数据类型构成了从用户输入到模型输出的处理管道
关键集成点
RawMessage 与 RawContent 处理多模态用户输入ToolCall 和 ToolDefinition 管理函数调用GenerationResult 流提供令牌级输出RawMessage 带有助手角色和工具调用类型系统使用 Pydantic 进行验证和序列化,字段验证器确保正确的枚举处理和数据格式一致性。