mlflow.types

The mlflow.types 模块定义了数据类型和工具,供其他 mlflow 组件使用,以描述独立于其他框架或语言的接口。

class mlflow.types.ColSpec(type: DataType | Array | Object | str, name: str | None = None, optional: bool | None = None, required: bool | None = None)[源代码]

基类:object

数据集中单个列的名称和类型规范。

classmethod from_json_dict(**kwargs)[源代码]

从加载的json字典中反序列化。该字典应包含 type 以及可选的 namerequired 键。

property name: str | None

列名,如果列未命名则为 None。

property optional: bool

此列是否为可选。

警告

已弃用。optional 已被 required 取代。

备注

实验性:此属性可能会在未来的版本中无警告地更改或移除。

property required: bool

此列是否为必填项。

备注

实验性:此属性可能会在未来的版本中无警告地更改或移除。

property type: DataType | Array | Object

列数据类型。

class mlflow.types.DataType(value)[源代码]

基类:Enum

MLflow 数据类型。

binary = 7

原始字节序列。

boolean = 1

逻辑数据 (True, False) 。

datetime = 8

64b 日期时间数据。

double = 5

64位浮点数。

float = 4

32位浮点数。

integer = 2

32位有符号整数。

long = 3

64位有符号整数。

string = 6

文本数据。

to_numpy() dtype[源代码]

获取等效的 numpy 数据类型。

to_pandas() dtype[源代码]

获取等效的 pandas 数据类型。

to_python()[源代码]

获取等效的 Python 数据类型。

class mlflow.types.ParamSchema(params: List[ParamSpec])[源代码]

基类:object

备注

实验性:此类在未来的版本中可能会在没有警告的情况下更改或被移除。

适用于模型的参数规范。ParamSchema 表示为一个 ParamSpec 列表。

classmethod from_json(json_str: str)[源代码]

从 JSON 字符串反序列化。

property params: List[ParamSpec]

将 ParamSchema 表示为 ParamSpec 的列表。

to_dict() List[Dict[str, Any]][源代码]

序列化为一个可JSON化的字典。

to_json() str[源代码]

序列化为 JSON 字符串。

class mlflow.types.ParamSpec(name: str, dtype: DataType | str, default: DataType | List[DataType] | None, shape: Tuple[int, ...] | None = None)[源代码]

基类:object

备注

实验性:此类在未来的版本中可能会在没有警告的情况下更改或被移除。

用于表示模型参数的规范。

class ParamSpecTypedDict[源代码]

基类:TypedDict

property default: DataType | List[DataType] | None

参数的默认值。

property dtype: DataType

参数数据类型。

classmethod enforce_param_datatype(name, value, dtype: DataType)[源代码]

强制值匹配数据类型。

以下类型转换是被允许的:

  1. int -> long, float, double

  2. long -> float, double

  3. float -> double

  4. any -> datetime (尝试转换)

任何其他类型不匹配都会引发错误。

参数:
  • name – 参数名称

  • value – 参数值

  • dtype – 预期数据类型

classmethod from_json_dict(**kwargs)[源代码]

从加载的 json 字典中反序列化。该字典应包含 nametypedefault 键。

property name: str

参数的名称。

property shape: tuple | None

参数形状。如果形状为 None,则参数是一个标量。

classmethod validate_type_and_shape(spec: str, value: DataType | List[DataType] | None, value_type: DataType, shape: Tuple[int, ...] | None)[源代码]

验证值是否具有预期的类型和形状。

class mlflow.types.Schema(inputs: List[ColSpec | TensorSpec])[源代码]

基类:object

数据集的规范。

Schema 表示为一个 ColSpecTensorSpec 的列表。不允许 ColSpecTensorSpec 的组合。

由模式表示的数据集可以被命名,每个输入都有唯一的非空名称。在 ColSpec 的情况下,数据集的列可以不命名,而是通过它们在列表中的索引定义隐式的整数索引。不允许混合使用命名和未命名的数据输入。

as_spark_schema()[源代码]

转换为 Spark 模式。如果此模式是单个未命名的列,则直接转换为相应的 Spark 数据类型,否则将其作为结构体返回(缺失的列名用整数序列填充)。TensorSpec 不支持此操作。

classmethod from_json(json_str: str)[源代码]

从 JSON 字符串反序列化。

has_input_names() bool[源代码]

如果此模式声明了名称,则返回 true,否则返回 false。

input_dict() Dict[str, ColSpec | TensorSpec][源代码]

如果此模式声明了名称,则将列名映射到输入。

input_names() List[str | int][源代码]

如果模式没有名称,获取数据名称列表或索引范围。

input_types() List[DataType | dtype | Array | Object][源代码]

获取模式中每个列的类型。

input_types_dict() Dict[str, DataType | dtype | Array | Object][源代码]

如果此模式声明了名称,则将列名映射到类型。

property inputs: List[ColSpec | TensorSpec]

定义此模式的dataset的表示。

is_tensor_spec() bool[源代码]

当且仅当此模式使用 TensorSpec 指定时返回 true

numpy_types() List[dtype][源代码]

获取数据类型为 numpy 类型的便捷快捷方式。

optional_input_names() List[str | int][源代码]

备注

实验性功能:此功能可能在未来的版本中无警告地更改或移除。

如果模式没有名称,获取可选数据名称的列表或索引范围。

pandas_types() List[dtype][源代码]

获取数据类型的便捷快捷方式,以 pandas 类型表示。TensorSpec 不支持此功能。

required_input_names() List[str | int][源代码]

如果模式没有名称,获取所需数据名称的列表或索引范围。

to_dict() List[Dict[str, Any]][源代码]

序列化为一个可JSON化的字典。

to_json() str[源代码]

序列化为 JSON 字符串。

class mlflow.types.TensorSpec(type: dtype, shape: tuple | list, name: str | None = None)[源代码]

基类:object

用于表示以张量形式存储的数据集的规范。

classmethod from_json_dict(**kwargs)[源代码]

从加载的json字典中反序列化。该字典应包含 typetensor-spec 键。

property name: str | None

张量名称,如果张量未命名则为 None。

property required: bool

这个张量是否必需。

备注

实验性:此属性可能会在未来的版本中无警告地更改或移除。

property shape: tuple

张量形状

property type: dtype

每个不同的 numpy 内置类型都有一个唯一的字符代码。详情请参见 https://numpy.org/devdocs/reference/generated/numpy.dtype.html#numpy.dtype

class mlflow.types.llm.ChatChoice(index: int, message: ChatMessage, finish_reason: str = 'stop', logprobs: ChatChoiceLogProbs | None = None)[源代码]

模型生成的一次聊天响应。参考:https://platform.openai.com/docs/api-reference/chat/object

参数:
  • index (int) – 响应列表中的响应索引。

  • message (ChatMessage) – 生成的消息。

  • finish_reason (str) – 生成停止的原因。可选,默认为 "stop"

  • logprobs (ChatChoiceLogProbs) – 选择的对数概率信息。

class mlflow.types.llm.ChatChoiceLogProbs(content: List[TokenLogProb] | None = None)[源代码]

选择的对数概率信息。

参数:

content – 带有对数概率信息的消息内容令牌列表。

class mlflow.types.llm.ChatMessage(role: str, content: str | None = None, refusal: str | None = None, name: str | None = None, tool_calls: List[ToolCall] | None = None, tool_call_id: str | None = None)[源代码]

聊天请求或响应中的消息。

参数:
  • role (str) – 发送消息的实体的角色(例如 "用户""系统""助手""工具")。

  • content (str) – 消息的内容。可选 如果提供了拒绝或工具调用,则可以为 None

  • refusal (str) – 拒绝消息内容。可选 如果提供了拒绝响应,则提供此内容。

  • name (str) – 发送消息的实体的名称。可选

  • tool_calls (List[ToolCall]) – 模型执行的工具调用列表。可选

  • tool_call_id (str) – 此消息所响应的工具调用的ID。可选

class mlflow.types.llm.ChatParams(temperature: float = 1.0, max_tokens: int | None = None, stop: List[str] | None = None, n: int = 1, stream: bool = False, top_p: float | None = None, top_k: int | None = None, frequency_penalty: float | None = None, presence_penalty: float | None = None, metadata: Dict[str, str] | None = None, tools: List[ToolDefinition] | None = None)[源代码]

用于聊天推理的常见参数

参数:
  • temperature (float) – 用于在推理过程中控制随机性和创造性的参数。可选,默认为 1.0

  • max_tokens (int) – 要生成的最大新标记数。可选,默认为 ``None``(无限制)

  • stop (List[str]) – 停止生成的标记列表。可选,默认为 None

  • n (int) – 要生成的响应数量。可选,默认为 1

  • stream (bool) – 是否在生成响应时流式返回。可选,默认为 False

  • top_p (float) – 一个可选参数,用于通过温度控制采样,模型考虑具有 top_p 概率质量的标记的结果。例如,0.1 表示仅考虑构成最高 10% 概率质量的标记。

  • top_k (int) – 一个可选参数,用于将词汇表大小减少到前 k 个标记(按其概率降序排列)。

  • frequency_penalty – (float): 一个可选的正或负值参数,正值会根据新词在文本中已有的频率对其进行惩罚,从而降低模型逐字重复相同行的可能性。

  • presence_penalty – (float): 一个可选的正负值参数,正值根据新词是否出现在当前文本中来惩罚新词,增加模型谈论新话题的可能性。

  • metadata (Dict[str, str]) – 一个可选参数,用于向模型提供任意额外的上下文。键和值都必须是字符串(即不支持嵌套字典)。

  • tools (List[ToolDefinition]) – 模型可以调用的工具的可选列表。

class mlflow.types.llm.ChatRequest(temperature: float = 1.0, max_tokens: int | None = None, stop: ~typing.List[str] | None = None, n: int = 1, stream: bool = False, top_p: float | None = None, top_k: int | None = None, frequency_penalty: float | None = None, presence_penalty: float | None = None, metadata: ~typing.Dict[str, str] | None = None, tools: ~typing.List[~mlflow.types.llm.ToolDefinition] | None = None, messages: ~typing.List[~mlflow.types.llm.ChatMessage] = <factory>)[源代码]

聊天端点期望的请求对象格式。

参数:
  • messages (List[ChatMessage]) – 一个 ChatMessage 列表,将传递给模型。可选,默认为空列表 ([])

  • temperature (float) – 用于在推理过程中控制随机性和创造性的参数。可选,默认为 1.0

  • max_tokens (int) – 要生成的最大新标记数。可选,默认为 ``None``(无限制)

  • stop (List[str]) – 停止生成的标记列表。可选,默认为 None

  • n (int) – 要生成的响应数量。可选,默认为 1

  • stream (bool) – 是否在生成响应时流式返回。可选,默认为 False

class mlflow.types.llm.ChatResponse(choices: ~typing.List[~mlflow.types.llm.ChatChoice], usage: ~mlflow.types.llm.TokenUsageStats | None = None, id: str | None = None, model: str | None = None, object: str = 'chat.completion', created: int = <factory>, metadata: ~typing.Dict[str, str] | None = None)[源代码]

聊天端点返回的完整响应对象。

参数:
  • choices (List[ChatChoice]) – 包含生成的响应的 ChatChoice 对象列表

  • usage (TokenUsageStats) – 一个描述请求所用令牌的对象。可选,默认为 None

  • id (str) – 响应的ID。可选,默认为 None

  • model (str) – 所使用的模型名称。可选,默认为 None

  • object (str) – 对象类型。默认为 ‘chat.completion’

  • created (int) – 响应创建的时间。可选,默认为当前时间。

  • metadata (Dict[str, str]) – 一个可以包含任意附加上下文的字段。可选,默认为 None

class mlflow.types.llm.FunctionToolCallArguments(name: str, arguments: str)[源代码]

模型调用函数工具时的参数。

参数:
  • arguments (str) – 应传递给工具的参数的 JSON 字符串。

  • name (str) – 被调用的工具的名称。

class mlflow.types.llm.FunctionToolDefinition(name: str, description: str | None = None, parameters: ToolParamsSchema | None = None, strict: bool = False)[源代码]

函数工具的定义(目前唯一支持的工具类型)。

参数:
  • name (str) – 工具的名称。

  • description (str) – 该工具的功能描述及其使用方法。可选,默认为 None

  • parameters – 参数名称与其定义的映射。如果未提供,则定义一个无参数的函数。可选,默认为 None

  • strict (bool) – 一个表示模型是否应严格遵循所提供模式的标志。

to_tool_definition()[源代码]

用于将此包装在 ToolDefiniton 中的便捷函数

class mlflow.types.llm.ParamProperty(type: Literal['string', 'number', 'integer', 'object', 'array', 'boolean', 'null'], description: str | None = None, enum: List[str] | None = None, items: ParamType | None = None)[源代码]

函数定义中的一个参数。

参数:
  • type (str) – 参数的类型。可能的值为“string”、“number”、“integer”、“object”、“array”、“boolean”或“null”,符合JSON Schema规范。

  • description (str) – 参数的描述。可选,默认为 None

  • enum (List[str]) – 用于限制参数的可能值。可选,默认为 None

  • items (ParamProperty) – 如果参数是 array 类型,此字段可用于指定其项的类型。可选,默认为 None

class mlflow.types.llm.ParamType(type: Literal['string', 'number', 'integer', 'object', 'array', 'boolean', 'null'])[源代码]
class mlflow.types.llm.TokenLogProb(token: str, logprob: float, top_logprobs: List[TopTokenLogProb], bytes: List[int] | None = None)[源代码]

包含日志概率信息的消息内容令牌。

参数:
  • token – 令牌。

  • logprob – 如果这个标记在概率最高的20个标记之内,则记录其对数概率。否则,使用值 -9999.0 来表示该标记非常不可能。

  • bytes – 一个表示令牌的 UTF-8 字节表示的整数列表。在字符由多个令牌表示且必须组合其字节表示以生成正确的文本表示的情况下非常有用。如果令牌没有字节表示,则可以为空。

  • top_logprobs – 在此标记位置,最可能的标记列表及其对数概率。在极少数情况下,返回的 top_logprobs 数量可能少于请求的数量。

class mlflow.types.llm.TokenUsageStats(prompt_tokens: int | None = None, completion_tokens: int | None = None, total_tokens: int | None = None)[源代码]

关于推理过程中使用的令牌数量的统计信息。

参数:
  • prompt_tokens (int) – 提示中的token数量。可选,默认为 None

  • completion_tokens (int) – 生成的完成中的令牌数量。可选,默认为 None

  • total_tokens (int) – 使用的令牌总数。可选,默认为 None

class mlflow.types.llm.ToolCall(function: ~mlflow.types.llm.FunctionToolCallArguments, id: str = <factory>, type: ~typing.Literal['function'] = 'function')[源代码]

模型发出的工具调用。

参数:
  • function (FunctionToolCallArguments) – 函数工具调用的参数。

  • id (str) – 工具调用的ID。默认为一个随机UUID。

  • type (str) – 对象的类型。目前仅支持“函数”。

class mlflow.types.llm.ToolDefinition(function: FunctionToolDefinition, type: Literal['function'] = 'function')[源代码]

可由模型调用的工具的定义。

参数:
  • function (FunctionToolDefinition) – 函数工具的定义。

  • type (str) – 工具的类型。目前仅支持“function”。

class mlflow.types.llm.ToolParamsSchema(properties: Dict[str, ParamProperty], type: Literal['object'] = 'object', required: List[str] | None = None, additionalProperties: bool | None = None)[源代码]

一个工具参数定义。

参数:
  • properties (Dict[str, ParamProperty]) – 参数名称与其定义的映射。

  • type (str) – 参数的类型。目前仅支持“对象”。

  • required (List[str]) – 所需参数名称的列表。可选,默认为 None

  • additionalProperties (bool) – 对象中是否允许额外的属性。可选,默认为 None

class mlflow.types.llm.TopTokenLogProb(token: str, logprob: float, bytes: List[int] | None = None)[源代码]

Token 及其对数概率。

参数:
  • token – 令牌。

  • logprob – 如果这个标记在概率最高的20个标记之内,则记录其对数概率。否则,使用值 -9999.0 来表示该标记非常不可能。

  • bytes – 一个表示令牌的 UTF-8 字节表示的整数列表。在字符由多个令牌表示且必须组合其字节表示以生成正确的文本表示的情况下非常有用。如果令牌没有字节表示,则可以为空。