Skip to content

Cunninger/volcengine_deepseek2api

Repository files navigation

火山引擎 DeepSeek 2API

这是一个将火山引擎 DeepSeek 接口转换为 OpenAI 标准接口的代理服务。

功能特性

  • ✅ 支持 OpenAI 标准接口格式
  • ✅ 实现了 /v1/models 接口
  • ✅ 实现了 /v1/chat/completions 接口
  • ✅ 支持流式响应 (SSE)
  • ✅ 支持模型映射
  • ✅ 自动请求头生成,避免风控
  • ✅ VOLCENGINE_X_WEB_ID 持久化存储
  • ✅ 服务重启后自动恢复数据
  • ✅ 多进程/并发访问数据同步
  • ✅ 异常终止时的数据恢复

支持的模型

模型ID 显示名称 火山引擎模型名
deepseek-v3-1 DeepSeek-V3-1 deepseek-v3-1
deepseek-r1 DeepSeek-R1 deepseek-r1-1

快速开始

1. 安装依赖

npm install

2. 配置环境变量

复制 .env.example.env 并填入你的火山引擎 API 配置:

cp .env.example .env

编辑 .env 文件:

# 火山引擎API配置
VOLCENGINE_API_URL=https://ml-platform-api.console.volcengine.com/ark/bff/api/cn-beijing/2024-01-29/Chat
VOLCENGINE_X_WEB_ID=your_x_web_id_here
VOLCENGINE_AUTHORIZATION=your_authorization_here

# 服务器配置
PORT=3000

如何获取火山引擎 API 配置

  1. 打开火山引擎控制台 https://exp.volcengine.com/
  2. 打开浏览器开发者工具 (F12)
  3. 发送一个聊天请求
  4. 在网络请求中找到 Chat 接口的请求
  5. 复制以下信息:
    • x-web-id 请求头的值
    • authorization 请求头的值
    • 请求 URL (通常为 https://ml-platform-api.console.volcengine.com/ark/bff/api/cn-beijing/2024-01-29/Chat)

注意:所有环境变量都必须正确设置,否则服务无法正常工作。

3. 启动服务

# 生产环境
npm start

# 开发环境(自动重启)
npm run dev

服务将在 http://localhost:3000 启动。

API 使用示例

获取模型列表

curl -X GET http://localhost:3000/v1/models \
  -H "Authorization: Bearer your-api-key"

响应示例:

{
  "object": "list",
  "data": [
    {
      "id": "deepseek-v3-1",
      "object": "model",
      "created": 1712601600,
      "owned_by": "volcengine"
    },
    {
      "id": "deepseek-r1",
      "object": "model",
      "created": 1712601600,
      "owned_by": "volcengine"
    }
  ]
}

聊天完成(流式)

curl -X POST http://localhost:3000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "deepseek-v3-1",
    "messages": [
      {
        "role": "user",
        "content": "你好,介绍一下你自己"
      }
    ],
    "stream": true
  }'

响应示例(SSE格式):

data: {"id":"chatcmpl-123456789","object":"chat.completion.chunk","created":1712601600,"model":"deepseek-v3-1","choices":[{"index":0,"delta":{"role":"assistant","content":"你好"},"finish_reason":null}]}

data: {"id":"chatcmpl-123456789","object":"chat.completion.chunk","created":1712601600,"model":"deepseek-v3-1","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}

data: {"id":"chatcmpl-123456789","object":"chat.completion.chunk","created":1712601600,"model":"deepseek-v3-1","choices":[{"index":0,"delta":{"content":"很高兴见到你"},"finish_reason":null}]}

data: {"id":"chatcmpl-123456789","object":"chat.completion.chunk","created":1712601600,"model":"deepseek-v3-1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

VOLCENGINE_X_WEB_ID 管理

本服务提供了完整的 VOLCENGINE_X_WEB_ID 管理功能,包括持久化存储、自动恢复和多进程访问同步。

功能特性

  • 持久化存储:所有 ID 及其使用次数、状态等信息会自动保存到本地文件
  • 自动恢复:服务重启后会自动加载之前保存的 ID 数据
  • 多进程同步:使用文件锁机制确保多进程并发访问时的数据一致性
  • 异常恢复:支持从备份文件和临时文件恢复数据,防止数据丢失
  • 自动备份:定期创建数据备份,最多保留 5 个历史备份
  • 自动保存:每 5 分钟自动保存一次数据,确保数据不丢失

Web 管理界面

访问 http://localhost:3000 可以使用 Web 管理界面管理 VOLCENGINE_X_WEB_ID:

  • 查看所有 ID 及其状态
  • 添加新 ID
  • 批量导入 ID
  • 删除 ID
  • 重置 ID 使用计数
  • 查看 ID 使用统计
  • 设置最大使用次数

API 接口

获取所有 ID 列表

curl -X GET http://localhost:3000/api/webids

添加新 ID

curl -X POST http://localhost:3000/api/webids \
  -H "Content-Type: application/json" \
  -d '{
    "id": "your-web-id-here"
  }'

批量导入 ID

curl -X POST http://localhost:3000/api/webids/batch \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [
      "web-id-1",
      "web-id-2",
      "web-id-3"
    ]
  }'

删除 ID

curl -X DELETE http://localhost:3000/api/webids \
  -H "Content-Type: application/json" \
  -d '{
    "id": "web-id-to-delete"
  }'

重置 ID 使用计数

curl -X POST http://localhost:3000/api/webids/reset \
  -H "Content-Type: application/json" \
  -d '{
    "id": "web-id-to-reset"
  }'

获取 ID 统计信息

curl -X GET http://localhost:3000/api/webids/stats

设置最大使用次数

curl -X POST http://localhost:3000/api/webids/config \
  -H "Content-Type: application/json" \
  -d '{
    "maxUsage": 20
  }'

手动保存数据

curl -X POST http://localhost:3000/api/webids/save

数据存储位置

数据默认存储在项目根目录的 data 文件夹中:

  • data/webids.json:主数据文件
  • data/backups/:备份文件目录
  • data/webids.lock:文件锁,用于多进程同步

测试持久化功能

运行以下命令测试持久化功能:

npm run test:persistence

部署建议

1. 本地部署

适合开发和测试,按照上述快速开始步骤即可。

2. Docker 部署

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

3. 云服务部署

可以部署到以下平台:

  • Vercel
  • Railway
  • Render
  • Heroku
  • 阿里云/腾讯云等

注意事项

  1. API 密钥安全:妥善保管你的火山引擎 API 密钥,不要提交到版本控制系统。
  2. 速率限制:火山引擎 API 可能有速率限制,请合理使用。
  3. 流式响应:目前主要支持流式响应,非流式响应可能不被上游支持。
  4. 错误处理:服务会自动处理上游错误并转换为 OpenAI 格式的错误响应。

故障排除

常见问题

  1. 获取 x-web-id 和 authorization

    • 在火山引擎控制台打开开发者工具
    • 发送一个聊天请求
    • 在请求头中找到 x-web-idauthorization 字段
  2. 模型未找到

    • 检查模型名称是否正确
    • 确认火山引擎是否支持该模型
  3. 认证失败

    • 检查 .env 文件中的配置是否正确
    • 确认 API 密钥是否有效
  4. 流式响应中断

    • 检查网络连接
    • 确认上游服务是否正常

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

About

volcengine-deepseek2api

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published