CoolFace
Apppublic

homurasakuya/ONYX

sourceHugging Faceupdated 7mo agoView on Hugging Face
0likes
App README

onyx2api

Onyx Cloud API 转 OpenAI / Anthropic 兼容接口的轻量代理(Go 单文件版)。

[!NOTE] 本项目仅用于学习与技术研究,请遵守 Onyx 使用条款和所在地法律法规。

快速开始

本地运行

bash
git clone https://github.com/smysle/onyx2api-go.git
cd onyx2api-go

go build -o onyx2api .

ONYX_KEYS="on_tenant_xxx" \
CLIENT_API_KEY="sk-456789" \
./onyx2api

默认监听 :9898。如果要改端口:

bash
PORT=7860 ONYX_KEYS="on_tenant_xxx" CLIENT_API_KEY="sk-456789" ./onyx2api

Docker 运行

bash
git clone https://github.com/smysle/onyx2api-go.git
cd onyx2api-go

docker build -t onyx2api:latest .
docker run --rm -p 7860:7860 \
  -e PORT=7860 \
  -e ONYX_KEYS=on_tenant_xxx \
  -e CLIENT_API_KEY=sk-456789 \
  onyx2api:latest

Hugging Face Spaces(Docker)

Hugging Face Spaces实例 Space:https://huggingface.co/spaces/smyslenny/ONYX(可直接复制)

推送代码到 Space

bash
git clone https://github.com/smysle/onyx2api-go.git
cd onyx2api-go

git remote add hf https://huggingface.co/spaces/smyslenny/ONYX
git push hf main

如果提示账号密码:

  • —Username:你的用户名
  • —Password:填 Hugging Face Access Token(需要 write 权限)

Space Secrets

在 Space 的 Settings -> Variables and secrets 设置:

  • —ONYX_KEYS=on_tenant_xxx
  • —CLIENT_API_KEY=sk-456789

部署成功后可用地址:

  • —https://你的用户名-onyx.hf.space/v1
[!TIP] 别人 fork 你的项目后也能直接部署,但他们需要自己配置 Secrets。

功能特性

  • —OpenAI 兼容:/v1/chat/completions
  • —Anthropic 兼容:/v1/messages
  • —支持流式与非流式
  • —多 Onyx Key 轮询
  • —自动重试(502/503/504/429 + 指数退避)
  • —客户端调用鉴权(CLIENT_API_KEY / CLIENT_API_KEYS)
  • —适配云端端口注入(PORT / LISTEN_ADDR)

接口说明

健康检查

bash
curl http://127.0.0.1:9898/health

OpenAI 兼容接口

POST /v1/chat/completions

bash
curl http://127.0.0.1:9898/v1/chat/completions \
  -H "Authorization: Bearer sk-456789" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role":"user","content":"你好"}],
    "stream": false
  }'

Anthropic 兼容接口

POST /v1/messages

bash
curl http://127.0.0.1:9898/v1/messages \
  -H "x-api-key: sk-456789" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [{"role":"user","content":"你好"}],
    "stream": false
  }'

其他接口

  • —GET /v1/models
  • —GET /health
  • —GET /

OpenAI 客户端配置

  • —Base URL:http://<你的地址>:9898/v1
  • —API Key:填 CLIENT_API_KEY 的值(例如 sk-456789)

在 HF 上时:

  • —Base URL:https://你的用户名-onyx.hf.space/v1
  • —API Key:同上

支持模型

常见模型可直接使用,例如:

  • —claude-opus-4-6
  • —claude-sonnet-4-6
  • —claude-sonnet-4-5
  • —gpt-4o
  • —gpt-4o-mini
  • —o1
  • —o3-mini
  • —gemini-2.5-pro

也支持 Onyx 原始格式:Provider__api__model_version。

环境变量

变量名说明默认值
ONYX_KEYSOnyx API Keys(逗号分隔)无
CLIENT_API_KEY单个客户端调用 Key空
CLIENT_API_KEYS多个客户端调用 Key(优先于 CLIENT_API_KEY)空
PORT监听端口9898
LISTEN_ADDR完整监听地址(优先于 PORT)空

请求体附加参数:

  • —persona_id:Onyx Persona ID(默认 1)

常见问题

1) 为什么别人复制项目后不能直接出结果?

因为 Secrets 不会随代码一起复制。至少要设置:

  • —ONYX_KEYS
  • —CLIENT_API_KEY

2) 为什么 health 里 keys 是 0?

说明运行环境里没有读到 ONYX_KEYS,先检查 Space Secrets 或运行命令里的环境变量。

3) 可以不用 CLIENT_API_KEY 吗?

可以,但公网部署不建议。不开鉴权会被他人滥用你的 Onyx 配额。