大模型网关

业务面对的是平台模型名和统一接口,而不是某一个供应商账号。协议适配、渠道选路、账号调度与异常切换由平台完成。

问题普通中转Ai Lubricant 大模型网关
协议转换丢字段全部归一成内部格式再转出,thinking 签名、缓存标记被丢弃同协议直接原样转发(直通),只有跨协议才做字段映射
故障账号反复试轮询/权重随机,故障账号被反复命中多因子评分 + 冻结 + 熔断,评分全零直接回退或 429
限流与重试自己写客户端自己处理 429 和退避双层限流(Key 级 + 账号级)+ 失败分类重试 + 模型组回退
usage 口径不一直接透传上游自报 total,各家字段名不同出口层统一归一:total = prompt + completion 重算,不采信上游
特定出口/地区 IP另购代理服务四种代理模式,含用自己节点当出口的 node 模式

统一入口

统一入口
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/entry.png
入口协议处理
/v1/chat/completionsOpenAI Chat标准链路
/v1/responsesOpenAI Responses同协议直通 / 跨协议转换
/v1/messagesAnthropic Messages同协议直通 / 跨协议转换
/v1/images/generations · /v1/videos/generations · /v1/audio/speech媒体按输出模态路由

每类都注册带 /v1 前缀和不带前缀两个路径。调用方式见 API 接入指南。

功能:同协议直通,不丢字段

同协议直通,不丢字段
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/passthrough.png
客户端请求上游渠道协议平台行为
Anthropic MessagesAnthropic原样直通,保留 thinking 签名与 cache_control
Anthropic MessagesOpenAI转为 OpenAI 请求,响应再转回 Anthropic 语义
OpenAI ResponsesResponses原样直通,保留 reasoning 与加密推理内容
OpenAI ChatAnthropic / Responses按目标协议构造,响应与流式帧转回 OpenAI 形态
为什么这点值钱推理签名、缓存标记这类字段一旦在中转层被丢弃,上游的缓存命中和思考连续性就失效——账单和效果同时变差。

功能:客户端模板

客户端模板
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/preset.png

Claude Code、Codex、Cursor、Cline 等编码工具对上游有各自的请求约定。渠道可指定客户端模板,平台按目标客户端补齐协议、headers 和默认字段:

预设目标协议补齐的默认字段(节选)
claude-codeAnthropic Messages缓存标记、thinking 语义
codex-cli / codex-tuiOpenAI Responsesinstructions、text.verbosity、store=false、reasoning.effort、prompt_cache_key、每请求会话身份(client_metadata 与 header 同源)
gemini-cliGeminipath 模板占位符
cursor / cline / roo-code / opencode / workbuddyOpenAI Chat按对应客户端形态构造
  • 只补不覆盖:仅当客户端未显式提供时才填入默认值,不污染调用方意图。
  • 思考参数按协议表达:关闭推理时省略参数而非传空值。
  • 客户端识别:依次从 header(User-Agent)、body 的 client_type/client_preset、system 首条消息特征判定。
这是渠道侧配置,不是调用方负担客户端模板由管理员在渠道上配置。作为 API 调用方,你按标准协议请求即可。

功能:模型监控与模型列表自动更新

模型监控与模型列表自动更新
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/monitor.png
能力行为
免费模型监控对免费模型/免费账号做可用性与失败状态观察;免费模型不靠价格字段猜测,按真实上游返回判断
模型列表刷新渠道账号初始化、配置变更或手动刷新时同步上游模型列表;后台按 model_refresh.interval_minutes 周期自动刷新
模型元数据同步模型 ID、能力与输出模态;图片/视频/语音按模型元数据判定,不靠渠道开关硬猜
异常处理上游模型列表失败不影响已有路由;管理员可在渠道页手动刷新并查看结果

功能:多因子实时评分选路

多因子实时评分选路
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/selection.png
评分维度解决的实际问题
额度余量与限流余量RPM/TPM/并发用尽的账号直接零分,不浪费一次尝试
连续失败指数降权失败越多权重越低(intelligent 0.8ⁿ、fast 0.7ⁿ),一次成功立即清零
窗口失败熔断5 分钟内阈值 2 次触发冷却,基数/步长 15s、上限 120s
会话亲和 / 反亲和同会话优先回上次成功账号命中缓存;失败过的降权
上游模型亲和复用同一上游模型保住 prompt cache
计费模式滑动偏好按次计费账号按 prompt token 量线性偏好(约 2000 token 交叉)
连续成功让权避免单账号被打爆,成功若干次后让位给池中其他账号
短期成功率与延迟把最近真实表现纳入评分,快且稳的账号自然胜出

六种渠道选路策略,按 API Key 分别指定

顺序 / 成员随机 / 按模型随机 / 全局随机 / 智能(默认,多因子评分)/ 快速智能(速度主导并保留少量探索)。同一套渠道池可同时服务"要最稳"和"要最快"两类业务。

评分全零就不再试探所有候选被冻结、熔断或额度耗尽时不做恢复性探测,直接交给模型组回退或返回 429。

功能:多种冻结 + 双层限流重试

多种冻结 + 双层限流重试
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/freeze.png
  • 四种冻结对象 × 多种周期:账号 / 账号+模型 / 渠道 / 渠道+模型四个对象维度,固定时长(含秒级 TTL)/ 当天 / 按周 / 按月 / 永久多种周期组合,可由状态码、响应头、错误码或模型匹配触发。
  • 可配冻结策略(freeze_policy):渠道级规则表,按状态码/响应头/错误码/模型自由组合匹配,还支持「失败时刷新冻结窗口」等开关——冻结方式不止九种预设,规则可自由扩展。
  • 非重试 4xx 也走冻结:403 命中规则当天冻结该账号,而不是每次请求都撞一次。
  • 双层限流 + 8 种速率限制:Key 级 RPM / 每 5 小时请求数 / RPD / TPM / 每日 Token / 每周请求 / 每周 Token / 并发请求,外加 IP 个数上限与刷新窗口——维度比常见 RPM/TPM 两项多得多,能贴合各家上游的真实配额形态。
  • 失败分类而非一律重试:参数错误原样透传不浪费候选;限流与 5xx 才切账号;已输出内容的流式不重推;账号级重试 + 模型组回退管线(visited 防环)。
  • 上下文超限归一:prompt_too_long / context_length_exceeded 统一成 400,不当作可重试错误反复消耗候选。

功能:自定义代码渠道 + 多协议链路

自定义代码渠道 + 多协议链路
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/custom.png

不标准的上游不用等平台发版:在渠道「源码」Tab 贴一个 spec 类即可接入,保存即热更新。只写要改变的部分,其余沿用配置驱动实现。

可配置项用途
代码渠道(spec 类)贴 Python 类接任意上游:兼容接口、设备码、账密登录、非标 SSE、动态地址;13 类场景各有单钩子写法
base URL、对话/模型列表路径接入任何路径约定不同的兼容服务
认证头风格Bearer、x-api-key、自定义头三种风格
多协议链路(chat_protocols)同一渠道配多条协议行,各自协议/路径/流式形态/客户端模板;按请求协议同协议优先选行——同一渠道同时服务 OpenAI / Anthropic / Responses / Gemini 客户端成为可能
渠道标签管理渠道与账号打彩色标签,管理端按标签筛选(含「未设置」过滤);API Key 按渠道标签白/黑名单收窄可用范围,子 Key 自动继承父 Key 约束
客户端模板(可按模型覆盖)整体模拟某客户端,个别模型还能单独覆盖
图片/视频/语音路径与开关媒体能力按上游实际情况分别启用
模型别名与白名单把上游模型名映射成对外暴露名并限制范围

功能:四种代理模式

四种代理模式
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/proxy.png
模式行为典型场景
network标准 HTTP/HTTPS 代理,支持账密注入常规代理服务器
url_prefix把上游完整 URL 拼到前缀之后转发Cloudflare Workers 类反代
direct显式强制直连,不走任何代理明确要求本机出网
node通过你自己的执行节点出网,用那台机器的 IP需特定地区/内网出口,又不想另买代理
  • 按账号绑定:每个渠道账号引用代理池条目,不同账号走不同出口。
  • 热更新不丢运行态:修改后原地刷新运行中的账号,限流计数、认证状态与冷却记录保留。

搭建方式:Cloudflare Workers(url_prefix 模式)

  1. 在 Cloudflare Dashboard 打开 Workers & Pages → Create application → Create Worker,创建一个新的 Worker。
  2. 下载本页附带的 cloudflare-url-proxy-worker.js,把其中的 Worker 代码粘贴到编辑器并部署。
  3. 为 Worker 绑定一个专用域名或 routes,确认 HTTPS 地址,例如 https://proxy.example.com。不要把带真实上游密钥的 URL 写进公开代码或日志。
  4. 在管理端进入代理池,新增代理条目:模式选 url_prefix,URL 填 Worker 地址(不要在末尾加 /),用户名和密码留空;再把条目绑定到需要经过该出口的渠道账号。
  5. 先用低风险渠道发起一次模型列表或测试请求,检查 Worker 日志、上游响应状态和流式响应是否完整,再投入生产流量。
代理池条目
模式:url_prefix
URL: https://proxy.example.com
用户名:留空
密码:留空
安全与兼容性Worker 必须限制可用来源、目标域名和请求方法,并妥善处理超时、响应头、SSE 流和错误状态;否则可能变成开放代理或泄露上游凭据。Cloudflare Worker 的出口 IP、配额、请求体/响应体限制和上游服务条款也需要单独确认。管理端「添加代理」弹框选中 URL 前缀模式时,会链接回本小节获取 Worker 源码与部署步骤。

功能:用量口径归一

用量口径归一
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/usage.png
  • total = 输入 + 输出。缓存读、缓存写是输入 token 明细子集,不额外计入 total;不采信上游自报 total,一律用 prompt + completion 重算。
  • 零 completion 兜底(协议无关):usage 里 completion 为 0 但响应确有内容时,删除该 usage 让后续估算兜底。
  • 口径一致:管理端面板与主链路使用同一套 usage 归一逻辑。

功能:灵活测试配置与上游拒绝

灵活测试配置与上游拒绝
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/testing.png

测活不是只发一句 "hi"。测试场景类型可自定义(默认八类:聊天/流式/工具/思考/多轮/图片/视频/语音,管理员可在「渠道配置 → 测试类型」增改),还能:

  • 模拟真实客户端:测试时指定按哪种客户端形态发请求(claude-code / codex-cli / opencode 等),与真实流量同源,不是裸 curl。
  • 指定协议链路:走渠道配置的哪条协议行,测试 body/header/parser 按该协议构造。
  • 上游拒绝判断:请求发送前先过 check_message 放行判定(模型、消息数、内容限制等),上游不支持的组合提前拒绝、不浪费一次计费请求;免费账号 403 等不可用状态也会被探测并剔除。
  • 自动解冻:测试通过自动解除该账号运行时冻结;另有定时巡检、模型列表刷新与余额探测。

功能:请求级实时记录

请求级实时记录
截图待补
把截图放到该路径,或把 src 改成实际图片地址
assets/screenshots/cap-llm-server/record.png

一次客户端调用对应一个 request_id,其下每次渠道尝试单独成行并按序编号:哪个账号试过、走什么路径、成功还是失败、首 Token 多久、各类 Token 各多少,都能按 request_id 追到完整序列。PostgreSQL 是权威存储;ClickHouse 只做大字段 payload 旁路双写,失败只丢批、不影响主链路。

技术白皮书:协议直通与选路熔断实现 → · API 接入方式 → · 管理员渠道配置 →