5.3 KiB
5.3 KiB
pipeline-llm — 产线平台模型治理模块
产线平台的模型层:供应商/账号/模型治理 + 组织容错策略 + 限额限流 + 双维度记账。
所有表 llm_ 前缀,建在宿主应用库(pipeline)。
模块定位
解决五类问题:
- 供给侧治理:供应商协议+全球端点目录、账号(钱包)、模型注册、适配模板
- 容量治理:供应商限流 → 多账号轮转;多供应商 → 主备模型容错
- 需求侧治理:组织级模型容错策略、组织限额限流、个人限额限流
- 计费:双维度记账(成本侧记账号、消费侧记组织/个人),模型挂定价
pricing_program.ppid - 端点选择:端点目录配在供应商下(全球配置一次),账号选用端点,客户按区域偏好(prefer/must)
数据表(8 张)
| 表 | 说明 |
|---|---|
llm_vendor |
供应商(端点目录 JSON;2026-09-05 起不存协议字段,请求形态归模型挂的适配模板) |
llm_account |
供应商账号(钱包:余额/充值/选端点,api_key AES 加密;模型可绑定账号 account_id 收窄候选池) |
llm_model |
模型注册(能力分类/挂定价 ppid/sync_mode/query_profile_ids,name 唯一;2026-09 起不存单价,定价走 ppid) |
llm_api_profile |
适配模板(协议×能力形态去重;data/response 模板全 Jinja2,含媒体转换函数) |
llm_org_policy |
组织容错策略(主备模型 + 辅助模型 utility_model_id + 端点偏好) |
llm_org_quota |
组织限额限流(池余额 + QPM) |
llm_user_quota |
个人限额限流(额度上限 + QPM) |
llm_usage |
用量流水(双维度记账事实表;usages 字段存非 token 计价因子 JSON) |
调用门禁链
① 个人限流 → ② 组织限流 → ③ 个人额度 → ④ 组织池(预授权)
→ ⑤ 组织策略选模型(主→备) → ⑥ 账号×端点候选池(偏好过滤+余额加权+冷却避让)
→ ⑦ 调用 → ⑧ 结算(实际用量,多退少补,双维度记账)
任何一级不过:快速失败 + 明确中文原因(不挂起、不静默)。
集成方式(复用不改建)
模块只提供治理引擎与配置管理;实际 LLM 转发仍由宿主已有的
pipeline_service.llm_bridge / llm_proxy 承担,在两处挂钩子:
llm_bridge._get_model_config:治理启用时前置解析(主备容错+端点选择)llm_proxy.proxy_chat_completion:调用前后接门禁与结算(运行环境 token 路径)
机构未配置治理(无策略、无新模型)→ 返回 __LEGACY__,调用方回退旧 llm 表,向后兼容。
宿主接入清单
app/pipeline_app.pyinit() 加load_llm()(try/except ImportError 兜底)build.sh:clone 枚举 + pip install 枚举 + CRUD 生成枚举 + wwwroot 符号链接枚举scripts/create_tables.py:IDE 幂等建表枚举加pipeline-llm(或执行本模块mysql.ddl.sql)scripts/import_init.py:INIT_MODULES 加本模块init/data.json(appcodes 字典)conf/rp.json:/pipeline-llm/**注册到logined;运行scripts/load_path.pywwwroot/index.ui主菜单加「模型治理」项(URL/pipeline-llm)restart-pipeline.sh重启(.py 变更必须重启;api_key有缓存,改 key 也须重启)
关键约定
- api_key 用 AES 单层加密(
appPublic.aes.aes_encode_b64,password_key 做密钥)。 ⚠️ 不用 RC4:password()/unpassword()盐不对称,加密后永久不可解。 - 限流用 Redis 分钟窗口原子计数(db4,与会话 db3 隔离);Redis 故障时限流放行(fail-open), 余额仍由 DB 条件 UPDATE 守住。
- 429 → (账号,端点)对冷却 60s;账号级冷却用
*通配键。 - 记账分流(2026-09-04 起):模型表不存单价,成本/售价统一走 ppid 定价引擎;
调用时流水记
usages(非 token 计价因子:视频时长/分辨率等),异步出账循环 (accounting.py,独立进程)经产品层出三方账(客户付/商户营收/供应商成本)。 本机构模型流水na;owner 模型跨机构调用流水pending待出账。 - 媒体转换铁律(2026-09-05):生成类模型适配模板 data 用
b64media2url(request, xxx_file)(上传转公网 URL)、response 用downloadfile2url(request, url)(生成物落地本地,上游 URL 仅 24 小时); 同类能力对外契约统一(i2v:image_file 进 → video 出)。 - 异步模型执行器:sync_mode=async 时走提交→按 query_profile_ids 轮询→
取结果;等待预算默认 600 秒,
_timeout可覆盖(上限 900)。
API 文档端点(2026-09-05)
/pipeline-llm/api/v1/docs/(RBAC 授权 any,公开文档照 sage /bricks/docs 先例):
index.ui按_lang参数分发 ApiDoc 组件(zh/en/ja/ko 四语言,带白名单回落 zh)api_{zh,en,ja,ko}.md四语言文档(chat/completions + models 端点、异步模型参数、 媒体转换约定、token 认证、计费说明)- 依赖宿主 conf/config.json 的 processors 注册
[".md","md"](MarkdownProcessor)
文档
docs/design-spec.md— 完整设计规范(架构/表/机制/功能点/分期)docs/test-cases.md— 测试用例(30 例,部署后全部执行)
开发日志
见 docs/work-log-2026-09-01.md。