模型中转站

模型中转站

计费

流式中有一个用量块

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

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

动态计费

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

倍率

  • 分组倍率
  • 上游倍率

协议适配

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

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

实现方法

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

名称映射

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

动态路由

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

分级冷却和熔断

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

  • 错误消息 可达错误:命中 n 次,触发冷却 不可达错误:命中就触发冷却,触发 n 次冷却就禁用渠道 若渠道因上述规则冷却,立即切换下一个可选渠道,否则按照重试次数在同一个渠道重发重试,设置最大重试渠道数量控制最大重试次数
  • 错误码 根据错误码不同实现不同时间冷却;每重试一次递增重试时间;若当前选择的渠道在冷却中,并且重试时间在设定待定冷却时间之内,并且未达到最大重试次数,则待定冷却完成之后再重试,否则切换下一个可选渠道

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

防止账号风控

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

模型特性

claude

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