模型中转站

模型中转站

计费

流式中有一个用量块

若担心上游不返回用量块可请求前按token计算预扣费

  • 文字:输入可用分词器预估token,输出可按最大输出token,如果没有,可以预留一个默认值
  • 视频:视频时长和分辨率
  • 图片:图片比例和分辨率

动态计费

  • 时间段
  • 上下文长度
  • 规格(视频,图片)

倍率

  • 分组倍率
  • 上游倍率
  • 用户专属倍率

协议适配

解析客户端的请求,提取模型名称,消息内容,思考等级,输出长度,工具调用等参数,转换为目标协议请求结构

  • 会存在部分参数差异,需要提前做好参数忽略或转换
  • 流式传输时就缓冲,直到整个参数片段获取完整再进行转换

实现方法

  • 点对点适配模型协议,只支持已经实现适配的协议,或在新协议适配的时候,利用旧协议实现多步模型转换
  • 设计一个中间模型,实现实现中间模型就自动适配其他协议
  • 设计一个 js 或 python 插件系统 每次更新就更新插件系统

名称映射

  • 可以利用正则获取上游名称提前做自动做名称映射,或者是不同渠道个性化做名称映射

动态路由

  • 会话粘黏 根据客户端传来的 session id,匹配上一次使用的上游,实现缓存能够命中
  • 渠道可用性监控,动态调整 通过日志或主动探测,再通过模型,价格,延迟,成功率等不同维度的权重不同实现动态优先级
  • 手写权重
  • 优先级

分级冷却和熔断

可将错误分为账号级或全局级

  • 错误消息
  • 错误码
  • 错误类型
  • 429:部分上游会携带回避时间
  • 上游断开:将订单标记为失败,切换上游
  • 客户端断开链接:因为存在客户端主动断开的可能;需要规划平台或用户承担费用,或监控上游平台若上游账单视情况收费
  • 超时:主动切换可能存在重复扣费,需要在平台增加更多成本,或用户体验做权衡
  • 上游通过流式内部返回错误:截断流式输出,确认没问题再发给用户;或直接转发,通过缓存判断是否有流式内部错误,如果有的话进行该笔订单标记失败或直接退费

冷却机制实现

  1. 进行 上述错误 的不同进行不同时间的冷却
  2. 后台动态配置错误条件
  • 条件

    • 类型:渠道级 或 模型级 (这里需要一个默认优先级,应对同优先级)
    • 优先级
    • 渠道类型
    • HTTP状态码
    • 厂商错误标识和类别code/type
    • 错误消息关键词
    • 其他请求头 key:value
  • 结果

    • 冷却 x 秒 模型/渠道(可选递增,应对 429 等情况)(模型全被冷却就禁用渠道)
    • 逃过到下一个候选
    • 禁用渠道/模型

防止账号风控

  • 代理池: 给不同账号不同的代理
  • RPM:控制账号级别每分钟请求数
  • 并发数
  • 关键词过滤

模型特性

claude

  • 请求中携带beta特性,可能会请求失败,需要丢弃bate特性
  • thinking

其他

mock 系统:https://www.mock-server.com/ 429、500、慢响应、连接中断