将 nexos.ai 的接口封装为 OpenAI 兼容 API,现已重构为 Python + FastAPI。
GET /v1/modelsPOST /v1/chat/completionsPOST /v1/chat/createPOST /v1/chat/switchGET /v1/chat/currentGET /v1/files/{chat_id}/{file_id}/download
重点改造:
- cookie 从
nexos_accounts.json按账号读取。 - model mapping 从
nexos_accounts.json按账号读取(每个账号独立)。 - 请求未传
chat_id时,自动创建 chat 并写入current-chat.json。
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txtLinux/macOS 激活命令:
source .venv/bin/activate
复制配置模板:
copy .env.example .env.env 示例见 .env.example,常用项:
HOST/PORTNEXOS_BASE_URLNEXOS_ACCOUNTS_FILE(默认./nexos_accounts.json)CURRENT_CHAT_FILE(默认./current-chat.json)DISABLE_HISTORYNEXOS_TIMEOUT
python app.py或:
uvicorn app:app --host 127.0.0.1 --port 23001如果不指定账号,默认使用 nexos_accounts.json 第 1 个账号。
可通过以下方式指定账号(二选一):
- Header:
X-Nexos-Account-Email: xxx@example.com - Header:
X-Nexos-Account-Index: 1(从 0 开始)
Body 也支持:
account_emailaccount_index
优先级:
- Header
X-Nexos-Chat-Id - Body
chat_id - 自动创建一个新的 chat id(本次改造新增)
自动创建后会写入 current-chat.json(按账号保存)。
curl http://localhost:23001/v1/models下方
bash示例适用于 Linux/macOS/Git Bash。Windowscmd.exe请使用后面的cmd示例(cmd不支持单引号 JSON 与\换行续行)。
curl http://localhost:23001/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-6",
"messages": [{"role": "user", "content": "你好"}]
}'Windows cmd.exe(单行,推荐直接复制):
curl http://localhost:23001/v1/chat/completions -H "Content-Type: application/json" -d "{\"model\":\"claude-opus-4-6\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}"Windows PowerShell:
curl http://localhost:23001/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"claude-opus-4-6","messages":[{"role":"user","content":"你好"}]}'curl -N http://localhost:23001/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-6",
"stream": true,
"messages": [{"role": "user", "content": "请用三句话介绍 FastAPI"}]
}'说明:
-N(--no-buffer)可关闭 curl 输出缓冲,实时看到data: ...的 SSE 分片。
curl http://localhost:23001/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-Nexos-Account-Email: tmpsrasfr29n@wachimi.dpdns.org" \
-d '{
"model": "gpt-5",
"messages": [{"role": "user", "content": "hello"}]
}'curl -X POST http://localhost:23001/v1/chat/createcurl -X POST http://localhost:23001/v1/chat/switch \
-H "Content-Type: application/json" \
-d '{"chatId":"your-chat-id"}'- 每个账号使用自己
model_mapping,同名模型在不同账号下会映射到不同 handler id。 - 模型名支持点号/横线混用(如
gpt-5.1与gpt-5-1)。 gemini模型max_tokens会自动限制到65536。- 图片下载会按代理地址返回,避免客户端直连 nexos 域名。