跳转至

AI 模型池

源码:src/backend/db/models/ai_model.pyai_model_group.pyattribute.py 路由行为:architecture/model_pool.md 返回 总览 字段表格式:字段 | 中文名 | 类型 | 可空 | 作用

同一「逻辑池」下可挂多个物理模型,经中间表配置本池权重/优先级;共享 API 账号经绑定表多对多复用。遗留的模型私有 Key 表仍保留。详细调度与熔断见 model_pool.md

ER

erDiagram
  ai_model_groups ||--o{ ai_model_group_members : members
  ai_models ||--o{ ai_model_group_members : in_pools
  ai_models ||--o{ ai_model_api_keys : legacy_keys
  ai_models ||--o{ ai_model_account_bindings : binds
  ai_model_api_accounts ||--o{ ai_model_account_bindings : accounts
  ai_model_groups ||--o{ ai_models : legacy_group_id

ai_model_groups — 逻辑模型池

按业务场景聚合可互换的物理模型(如主图/详情图)。池级熔断阈值与恢复时间作用于池内每个物理模型。

字段 中文名 类型 可空 作用
id 池 ID UUID NO 主键
group_key 池业务键 String(100) NO 唯一;worker/路由用业务键,如 main_imagedetail_image
name 池名称 String(100) NO 中文展示名,如「主图生成池」
description 描述 Text YES 池用途说明
task_type 关联任务类型 String(50) YES 可选场景路由;对齐 tasks.task_type 等业务类型
is_active 是否启用 Boolean NO false 时不参与调度;默认 true
circuit_failure_threshold 熔断失败阈值 SmallInteger NO 池内单物理模型连续失败达到该次数触发熔断;默认 5
circuit_recovery_seconds 熔断恢复秒数 Integer NO 熔断后进入半开探测的等待秒数;默认 60
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间
deleted_at 删除时间 timestamptz YES 软删标记;非空表示已删除

ai_models — 物理模型

上游供应商侧的具体模型配置。group_id 为过渡期单池归属;正式多池成员关系以 ai_model_group_members 为准。

字段 中文名 类型 可空 作用
id 模型 ID UUID NO 主键
name 模型名称 String(100) NO 管理端/前端展示名
model_key 模型业务键 String(100) NO 唯一;代码与配置引用键
provider 供应商 String(50) NO 上游厂商标识(如火山、OpenAI 等)
api_base_url API 基址 String(500) YES 模型默认上游 Base URL;可被账号级覆盖
actual_model_name 上游模型名 String(100) YES 调用上游时使用的真实模型名
description 描述 Text YES 模型说明
model_mode 能力模式 String(32) NO 默认 text-to-image;常见值见 backend.core.ai_model.model_mode(如 image-to-imagetext-to-video 等)
model_group 旧字符串分组 String(100) YES 遗留分组字段;新逻辑优先用池与中间表
support_tasks 支持任务类型 JSONB YES 可承接的任务类型列表
default_ratios 默认比例 JSONB YES 默认宽高比选项列表
default_resolutions 默认分辨率 JSONB YES 默认分辨率选项列表
allowed_plan_keys 允许会员方案 JSONB YES 适配的 plan_key 列表;空/null=不限制
upstream_options 上游扩展选项 JSONB YES 传给上游的额外参数/开关
max_concurrency 最大并发 SmallInteger NO 该物理模型并发上限;默认 1
timeout_seconds 超时秒数 Integer NO 单次调用超时;默认 120
cost_per_task 单次扣点 SmallInteger NO 完成一任务消耗积分数;默认 1
sort_order 排序 SmallInteger NO 列表展示顺序;默认 0
is_default 是否默认模型 Boolean NO 未指定模型时的候选默认;默认 false
is_active 是否启用 Boolean NO false 时不参与调度;默认 true
group_id 所属池 ID UUID YES FK→ai_model_groups.id SET NULL;过渡兼容单池归属;池删除后模型可孤立保留
weight 池内权重 SmallInteger NO 加权随机权重(≥1);高权重更易被选中;默认 1(与中间表并存时以中间表本池值为准)
priority 池内优先级 SmallInteger NO 同池分层:高优先用满再用低优先,层内再按 weight;默认 0
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间
deleted_at 删除时间 timestamptz YES 软删标记;非空表示已删除

ai_model_group_members — 模型↔池

物理模型与逻辑池的多对多关联。同一模型可属多池,且在不同池可有不同 weight/priority。

复合主键 (model_id, group_id);另有 UniqueConstraintuq_model_group_member

字段 中文名 类型 可空 作用
model_id 模型 ID UUID NO 复合主键之一;FK→ai_models.id CASCADE
group_id 池 ID UUID NO 复合主键之一;FK→ai_model_groups.id CASCADE
weight 本池权重 SmallInteger NO 该模型在本池内的加权随机权重;默认 1
priority 本池优先级 SmallInteger NO 该模型在本池内的优先级分层;默认 0
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间

ai_model_api_keys — 模型私有 Key(遗留)

一个 Key 仅属于一个物理模型(1:N)。新读写优先走共享账号 + 绑定表;本表保留向下兼容。

字段 中文名 类型 可空 作用
id Key ID UUID NO 主键
model_id 所属模型 UUID NO FK→ai_models.id CASCADE
api_key API 密钥 String(500) NO 模型私有上游密钥
label 标签 String(100) YES 人类可读备注,如「主 Key」「备用」
status 状态 SmallInteger NO 0=禁用 1=正常;默认 1
priority 优先级 SmallInteger NO 同模型多 Key 时优先顺序;默认 0
daily_limit 日调用上限 SmallInteger YES 每日最大调用次数;空表示未配置上限
daily_used 日已用次数 SmallInteger NO 当日已调用次数;默认 0
last_used_at 最近使用时间 timestamptz YES 最近一次使用该 Key 的时刻
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间

ai_model_api_accounts — 共享 API 账号

独立上游账号,可被多个物理模型通过绑定表引用,用于突破单账号 RPS。

字段 中文名 类型 可空 作用
id 账号 ID UUID NO 主键
account_key 账号密钥 String(500) NO 应用层 Fernet 加密存储;UI 展示脱敏
label 标签 String(100) YES 人类可读标签,如「火山账号 A」
provider 供应商 String(50) NO 账号归属厂商;约束可绑定的物理模型类型
api_base_url API 基址 String(500) YES 账号专属 Base URL(如不同 region)
max_rps 最大 RPS SmallInteger NO 单账号并发/速率上限;默认 50
daily_limit 日调用上限 SmallInteger YES 单账号每日调用上限;0/NULL 表示不限
key_version 密钥版本 SmallInteger NO account_key 加密版本号,便于轮换;默认 1
is_active 是否启用 Boolean NO false 时不可被调度使用;默认 true
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间

ai_model_account_bindings — 模型↔账号

物理模型与共享账号的多对多关联。同模型多账号按 priority 优先使用,失败再降级。

复合主键 (model_id, account_id);另有 UniqueConstraintuq_model_account

字段 中文名 类型 可空 作用
model_id 模型 ID UUID NO 复合主键之一;FK→ai_models.id CASCADE
account_id 账号 ID UUID NO 复合主键之一;FK→ai_model_api_accounts.id CASCADE
priority 绑定优先级 SmallInteger NO 同模型内多账号优先级;高优先失败再降级;默认 0
created_at 创建时间 timestamptz NO 行创建时间(无 updated_at

model_generation_attributes — 模特生成属性选项

无外键。按 mode + category + attr_key 配置可选属性值,供模特生成表单使用。

字段 中文名 类型 可空 作用
id 属性选项 ID UUID NO 主键
mode 模式 String(20) NO simple / professional
category 分类 String(50) NO 属性大类(如外貌、姿态等业务分类)
attr_key 属性键 String(50) NO 属性机器键,用于组装参数
attr_name 属性名称 String(100) NO 属性中文展示名
option_value 选项值 String(200) NO 该行对应的可选取值
sort_order 排序 SmallInteger NO 同组内展示顺序;默认 0
is_active 是否启用 Boolean NO false 时不在表单展示;默认 true
created_at 创建时间 timestamptz NO 行创建时间
updated_at 更新时间 timestamptz NO 行最后修改时间