# Unified Model ID ## Purpose 定义统一模型 ID 的格式、解析、格式化和校验规则,确保跨协议的模型标识一致性。 ## Requirements ### Requirement: 解析统一模型 ID 系统 SHALL 提供 `ParseUnifiedModelID` 函数,将 `provider_id/model_name` 格式的字符串解析为独立的 providerID 和 modelName。 #### Scenario: 标准格式解析 - **WHEN** 传入 `"openai/gpt-4"` - **THEN** SHALL 返回 providerID=`"openai"`, modelName=`"gpt-4"` #### Scenario: model_name 含斜杠的解析 - **WHEN** 传入 `"azure/accounts/org-123/models/gpt-4"` - **THEN** SHALL 在第一个 `/` 处分割,返回 providerID=`"azure"`, modelName=`"accounts/org-123/models/gpt-4"` #### Scenario: 缺少分隔符 - **WHEN** 传入不含 `/` 的字符串(如 `"gpt-4"`) - **THEN** SHALL 返回错误 #### Scenario: 空字符串 - **WHEN** 传入空字符串 - **THEN** SHALL 返回错误 #### Scenario: 只有分隔符 - **WHEN** 传入 `"/model"` 或 `"provider/"` 或 `"/"` - **THEN** SHALL 返回错误 #### Scenario: providerID 不符合字符集 - **WHEN** 传入 `"open-ai/gpt-4"` 或 `"open.ai/gpt-4"` 或 `"供应商/gpt-4"`(providerID 含非 `[a-zA-Z0-9_]` 字符) - **THEN** SHALL 返回错误 ### Requirement: 格式化统一模型 ID 系统 SHALL 提供 `FormatUnifiedModelID` 函数,将 providerID 和 modelName 组合格式化为统一模型 ID。 #### Scenario: 格式化 - **WHEN** 传入 providerID=`"openai"`, modelName=`"gpt-4"` - **THEN** SHALL 返回 `"openai/gpt-4"` ### Requirement: 校验供应商 ID 系统 SHALL 提供 `ValidateProviderID` 函数,校验 providerID 仅包含字母、数字、下划线。 #### Scenario: 合法 ID - **WHEN** 传入 `"openai"`, `"deep_seek"`, `"provider01"`, `"OpenAI"` - **THEN** SHALL 校验通过 #### Scenario: 含非法字符 - **WHEN** 传入含 `-`、`.`、`/`、空格、中文等非 `[a-zA-Z0-9_]` 字符的 ID - **THEN** SHALL 返回错误 #### Scenario: 空字符串或过长 - **WHEN** 传入空字符串 - **THEN** SHALL 返回错误 - **WHEN** 传入超过 64 个字符的 ID - **THEN** SHALL 返回错误 ### Requirement: 校验统一模型 ID 系统 SHALL 提供 `IsValidUnifiedModelID` 函数,判断字符串是否为合法的统一模型 ID 格式。 #### Scenario: 合法 ID - **WHEN** 传入 `"openai/gpt-4"` - **THEN** SHALL 返回 `true` #### Scenario: 非法 ID - **WHEN** 传入不含 `/` 的字符串、空字符串、providerID 不符合 `[a-zA-Z0-9_]+` 的字符串 - **THEN** SHALL 返回 `false`