04 · OPENAI + ANTHROPIC ROUTING

一个监听器,同时兼容两套 API

统一路由把公开模型名映射到正在运行的 llama-server。客户端只需要一个 Base URL,不必知道内部端口和实例结构。

建立路由

  1. 01
    准备运行中的实例

    路由只会把请求发给当前可用目标。先启动生成、Embedding 或 Reranker 实例。

  2. 02
    设置监听地址与具名 API Key

    默认使用 127.0.0.1。按调用方创建具名密钥,并分别授予推理或发现诊断权限。

  3. 03
    创建公开模型别名

    例如 chat-main。可以为同一别名配置多个目标,并选择优先级故障切换、轮询、最空闲或加权调度。

  4. 04
    启动并测试

    使用页面内测试功能确认别名解析、目标选择与鉴权,再接入客户端。

实例路由配置界面
公开模型别名与内部实例解耦,便于替换模型和故障转移。

OpenAI 兼容请求

TERMINAL · OPENAI
curl http://127.0.0.1:11435/v1/chat/completions \
  -H "Authorization: Bearer your-router-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "chat-main",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": true
  }'

支持模型发现、Chat Completions、Responses、Completions、Embedding 与 Rerank 常用端点。 Bearer 凭据只用于路由入口,不会原样转发给内部实例。

Anthropic 与 Claude Code

TERMINAL · ANTHROPIC
curl http://127.0.0.1:11435/v1/messages \
  -H "x-api-key: your-router-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "chat-main",
    "max_tokens": 512,
    "messages": [{"role": "user", "content": "你好"}]
  }'
ENVIRONMENT · CLAUDE CODE
ANTHROPIC_BASE_URL=http://127.0.0.1:11435
ANTHROPIC_AUTH_TOKEN=your-router-key

Messages 支持同步与流式响应、图片、thinking、工具调用、工具结果和 Token Count。 工具调用依赖目标 llama-server 的原生 Messages 能力,并要求实例启用 Jinja。

从 v2.9.42 的 llama.cpp b10354 基线起,可在实例的服务扩展中配置 --tools-runtime。它支持 Docker、Podman、现有容器或 SSH 目标;留空时工具仍在主机运行。

请求必须携带 anthropic-version: 2023-06-01;缺失或不支持的版本会返回标准 invalid_request_error。流式响应使用标准 text/event-stream。

上下文发现与保护

  • 模型发现同时公开 context_length、context_window 和 max_model_len。
  • 故障转移路由使用候选目标的安全最小上下文窗口。
  • Messages 在上下文已知时先进行 Token Count,并把输入 Token 与 max_tokens 一并校验。
  • 超过 n_ctx 的请求会在生成前返回 400,不会消耗模型推理资源。

诊断与监控

  • /slots:读取安全清洗后的槽位与上下文信息。
  • /ready:提供统一路由就绪状态。
  • /metrics:暴露 Prometheus 指标。
  • 发现诊断端点需要拥有对应权限的 API Key。

用量统计与 Key 管理

在“使用统计”中按 Key、模型、实例和接口筛选请求与 Token 趋势,查看请求历史、上下文超限原因、 首个有效输出与排队耗时。明细保留 90 天,日汇总保留 365 天;计数来自引擎,不保存提示词和回答正文。

  • 软预算只提醒;每 Key 并发限制和可选公平排队用于控制容量。
  • 强制 Token 额度默认关闭。启用后转发前持久化预留,完整响应后结算,重启或清除统计不会重置额度。
  • 客户端省略输出上限时使用 Key 默认值(初始为 32,768),并按剩余上下文缩小;显式输出上限仍按客户端设置校验。
  • 强制额度暂支持单次生成/单个补全提示词;无法可靠计数时返回具体原因,取消或未知用量保守保留占用。
  • 全部已配置 Key 禁用后会拒绝访问;只有清空 Key 列表才启用本机匿名模式。

安全边界

  • 仅本机使用时保持监听在 127.0.0.1。
  • 浏览器跨域访问应填写完整的协议、主机和端口,例如 http://localhost:3000。
  • CORS Origin、API Key 与模型路由互相独立;允许某个网页来源并不等于授予 API 权限。
  • 局域网或远程访问必须配置路由 API Key,并在 TLS 反向代理、防火墙或私网层限制来源。
  • 不要把内部实例密钥复用为公开路由密钥。
  • 工具隔离运行时应使用最小权限、可信镜像与受控的容器或 SSH 目标。
  • 日志和报错中不要记录真实密钥、提示词或工具参数中的敏感内容。