模型中转站
模型中转站
计费
流式中有一个用量块
若担心上游不返回用量块可请求前按token计算预扣费
- 文字:输入可用分词器预估token,输出可按最大输出token,如果没有,可以预留一个默认值
- 视频:视频时长和分辨率
- 图片:图片比例和分辨率
动态计费
- 时间段
- 上下文长度
- 规格(视频,图片)
倍率
- 分组倍率
- 上游倍率
- 用户专属倍率
协议适配
解析客户端的请求,提取模型名称,消息内容,思考等级,输出长度,工具调用等参数,转换为目标协议请求结构
- 会存在部分参数差异,需要提前做好参数忽略或转换
- 流式传输时就缓冲,直到整个参数片段获取完整再进行转换
实现方法
- 点对点适配模型协议,只支持已经实现适配的协议,或在新协议适配的时候,利用旧协议实现多步模型转换
- 设计一个中间模型,实现实现中间模型就自动适配其他协议
- 设计一个 js 或 python 插件系统 每次更新就更新插件系统
名称映射
- 可以利用正则获取上游名称提前做自动做名称映射,或者是不同渠道个性化做名称映射
动态路由
- 会话粘黏 根据客户端传来的 session id,匹配上一次使用的上游,实现缓存能够命中
- 渠道可用性监控,动态调整 通过日志或主动探测,再通过模型,价格,延迟,成功率等不同维度的权重不同实现动态优先级
- 手写权重
- 优先级
分级冷却和熔断
可将错误分为账号级或全局级
- 错误消息
- 错误码
- 错误类型
- 429:部分上游会携带回避时间
- 上游断开:将订单标记为失败,切换上游
- 客户端断开链接:因为存在客户端主动断开的可能;需要规划平台或用户承担费用,或监控上游平台若上游账单视情况收费
- 超时:主动切换可能存在重复扣费,需要在平台增加更多成本,或用户体验做权衡
- 上游通过流式内部返回错误:截断流式输出,确认没问题再发给用户;或直接转发,通过缓存判断是否有流式内部错误,如果有的话进行该笔订单标记失败或直接退费
冷却机制实现
- 进行 上述错误 的不同进行不同时间的冷却
- 后台动态配置错误条件
-
条件
- 类型:渠道级 或 模型级 (这里需要一个默认优先级,应对同优先级)
- 优先级
- 渠道类型
- HTTP状态码
- 厂商错误标识和类别
code/type - 错误消息关键词
- 其他请求头
key:value
-
结果
- 冷却 x 秒 模型/渠道(可选递增,应对 429 等情况)(模型全被冷却就禁用渠道)
- 逃过到下一个候选
- 禁用渠道/模型
防止账号风控
- 代理池: 给不同账号不同的代理
- RPM:控制账号级别每分钟请求数
- 并发数
- 关键词过滤
模型特性
claude
- 请求中携带beta特性,可能会请求失败,需要丢弃bate特性
- thinking
其他
mock 系统:https://www.mock-server.com/ 429、500、慢响应、连接中断