菜单

核心数据类型

相关源文件

本文档涵盖了Llama模型系统中所使用的基本数据结构和类型定义。这些类型充当不同组件之间的接口契约,处理消息表示、工具调用、内容格式化和生成结果。

有关模型架构和Transformer实现的信息,请参阅模型架构。有关对这些数据类型进行操作的分词和量化过程,请参阅分词与量化

类型系统概述

核心数据类型被组织成几个类别,处理系统的不同方面

核心数据类型类别

类别主要类型目的
消息类型RawMessageRawContent表示会话消息和内容
工具类型ToolCallToolDefinition处理函数调用和工具集成
生成类型GenerationResultStopReason管理文本生成输出和元数据
角色类型RoleToolPromptFormat定义会话角色和格式

来源:models/datatypes.py1-180

消息和内容类型

角色枚举

Role 枚举定义了对话中的四种可能角色

  • system: 系统级指令和上下文
  • user: 人类用户输入
  • assistant: 模型生成的响应
  • tool: 工具执行结果

来源:models/datatypes.py21-25

内容表示

内容通过灵活的类型层次结构流转,支持文本和多模态数据

内容类型定义

消息结构

RawMessage 作为主要的消息容器

消息结构支持输入消息(用户/系统)和输出消息(助手),并可选地支持工具调用功能。

来源:models/datatypes.py146-156

工具调用类型

内置工具

系统通过 BuiltinTool 枚举提供预定义工具

这些代表了模型内置的核心功能,用于网页搜索、数学计算、图像生成和代码执行。

来源:models/datatypes.py28-32

工具调用结构

ToolCall 表示单个函数调用

`arguments` 字段支持字典和字符串两种格式,系统正在向仅字符串表示转换,以提高客户端解析的灵活性。

来源:models/datatypes.py39-59

工具定义框架

工具定义提供函数调用的元数据

来源:models/datatypes.py93-113

工具提示格式

ToolPromptFormat 枚举定义了工具调用的不同序列化格式

格式描述示例结构
jsonJSON函数格式{"type": "function", "function": {...}}
function_tag类似XML的标签<function=name>(params)</function>
python_listPython列表语法["func(param1, param2)"]

来源:models/datatypes.py62-84

生成与处理类型

生成结果

GenerationResult 捕获包含全面元数据的单个令牌生成

此结构支持批量生成,并提供每令牌元数据,包括对数概率和批量处理状态。

来源:models/datatypes.py158-174

停止原因与量化

生成控制通过枚举进行管理

来源:models/datatypes.py87-90 models/datatypes.py176-179

类型流与集成

这些数据类型构成了从用户输入到模型输出的处理管道

关键集成点

  1. 输入处理: RawMessageRawContent 处理多模态用户输入
  2. 工具处理: ToolCallToolDefinition 管理函数调用
  3. 生成: GenerationResult 流提供令牌级输出
  4. 输出组装: 最终的 RawMessage 带有助手角色和工具调用

类型系统使用 Pydantic 进行验证和序列化,字段验证器确保正确的枚举处理和数据格式一致性。

来源:models/datatypes.py1-180