基于Docker快速部署OneAPI以及统一调用国产大模型

本文以DeepSeek厂商为例,介绍OneAPI如何同意调用大模型API,其他大模型厂商照葫芦画瓢。

一、参考资料

One API Docker 部署实战:从 0 搭建多模型统一接口管理平台 - 技术栈

OneAPI保姆级部署教程:Docker一键启动,支持OpenAI/Gemini/Claude等30+大模型-CSDN博客

二、OneAPI + DeepSeek

1. 创建 API key

前往 DeepSeek 开放平台 创建 API key,以及充值余额,否则将无法调用模型。

2. 部署OneAPI(Docker方式)

安装docker,其详细步骤请查看博客:ubuntu安装docker教程(CPU版)-CSDN博客

基于docker部署OneAPI:

bash 复制代码
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api

解释说明:

  • --name:给容器起个名称,方便后续管理。
  • --restart=always:开机自启,服务器重启后自动恢复服务。
  • -d:守护式容器,后台运行容器。
  • -p:将宿主机3000端口映射到容器内3000端口(即Web管理后台和API入口),第一个3000是宿主机的端口号。
  • -v:挂载数据卷,确保配置、用户、日志持久化。
  • -e TZ=Asia/Shanghai:设置时区为中国标准时间,避免日志时间错乱

查看是否部署成功:

bash 复制代码
yoyo@ubuntu:/media/sda3/workspace/one-api$ docker ps
CONTAINER ID   IMAGE              COMMAND      CREATED             STATUS             PORTS                                         NAMES
00f180d32483   justsong/one-api   "/one-api"   About an hour ago   Up About an hour   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp   one-api

STATUS 状态为 Up,表示容器已启动。

进入容器:

bash 复制代码
docker exec -it 00f180d32483 /bin/sh

浏览器访问:http://localhost:3000

如果浏览器无法访问,则查看端口是否被占用:

bash 复制代码
lsof -i :3000

如果端口被占用,则换其他端口,重启docker服务。

3. 创建Channel

bash 复制代码
Channel
	--> Type:选择DeepSeek
	--> Name:自定义名称
	--> Group: 默认
	--> Models:查看 DeepSeek API 文档支持哪些模型
	--> Key:在 deepseek 开放平台中,创建 API key

首次调用 API | DeepSeek API Docs

创建成功之后,测试响应时间:

如果测试失败,显示 API Error: 402 Insufficient Balance,表示 deepseek 余额不足,请前往 DeepSeek 开放平台 充值。

4. 创建 Token

bash 复制代码
Token
	--> Name:自定义名称
	--> 其他配置:默认

Token 创建完成后,copy Raw Token即为One API可用的API key。

5. 验证 One API 是否可用

使用curl快速验证OneAPI是否可用。

示例一:

bash 复制代码
curl http://localhost:3000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${One_API_KEY}" \
  -d '{
        "model": "deepseek-v4-flash",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Hello!"}
        ],
        "thinking": {"type": "enabled"},
        "reasoning_effort": "high",
        "stream": false
      }'

注意:${One_API_KEY} 使用的是在 OneAPI 创建的Token。以上为json格式化之后的输出结果。

输出示例:

bash 复制代码
cz@ubuntu:/media/sda3/workspace/one-api$ curl http://localhost:3000/v1/chat/completions \
>   -H "Content-Type: application/json" \
>   -H "Authorization: Bearer sk-esE0K4xxxxF76e79E61b3e" \
>   -d '{
>     "model": "deepseek-v4-flash",
>     "messages": [
>       {
>         "role": "user",
>         "content": "请回复:One API 部署成功"
>       }
>     ]
>   }'
{
  "id": "6e669c47-63b3-4760-9af5-f4440800604e",
  "object": "chat.completion",
  "created": 1780841524,
  "model": "deepseek-v4-flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "One API 部署成功",
        "reasoning_content": "我们收到用户消息:\"请回复:One API 部署成功\"。这是一个简单的请求,用户要求回复\"One API 部署成功\"。作为AI助手,应该直接回复该文本。注意用户没有其他上下文或问题。因此回复:\"One API 部署成功\"。"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 61,
    "total_tokens": 73,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 55
    },
    "prompt_cache_hit_tokens": 0,
    "prompt_cache_miss_tokens": 12
  },
  "system_fingerprint": "fp_8b330d02d0_prod0820_fp8_kvcache_20260402"
}

示例二:

bash 复制代码
curl -X POST "http://localhost:3000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-esE0K4J55hgTAJUj5452FdEe56F04eCd8d68F76e79E61b3e" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [{"role": "user", "content": "用一句话介绍OneAPI"}]
  }'

输出示例:

bash 复制代码
yoyo@ubuntu:/media/sda3/workspace/one-api$ curl -X POST "http://localhost:3000/v1/chat/completions" \
>   -H "Content-Type: application/json" \
>   -H "Authorization: Bearer sk-esE0K4xxxxF76e79E61b3e" \
>   -d '{
>     "model": "deepseek-v4-flash",
>     "messages": [{"role": "user", "content": "用一句话介绍OneAPI"}]
>   }'
{
  "id": "b34a982c-68ae-4dd0-9416-ba6f055cffe1",
  "object": "chat.completion",
  "created": 1780838294,
  "model": "deepseek-v4-flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "OneAPI 是一个开源的 API 管理平台,用于统一管理和调度多种 AI 模型接口,实现密钥管理、负载均衡和成本控制。",
        "reasoning_content": "我们需用一句话介绍OneAPI。OneAPI是一个开源的API管理平台,用于统一管理和调度多种AI模型接口,特别是支持大语言模型(如OpenAI、Claude、Gemini等)的API密钥管理、负载均衡和成本控制。一句话要简洁概括核心功能。"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 93,
    "total_tokens": 102,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 61
    },
    "prompt_cache_hit_tokens": 0,
    "prompt_cache_miss_tokens": 9
  },
  "system_fingerprint": "fp_8b330d02d0_prod0820_fp8_kvcache_20260402"
}
相关推荐
weixin_416660074 小时前
多个 Markdown 文件批量转 Word:PowerShell + Pandoc,连同图片和公式一起检查
word·豆包·deepseek
姜鱼问生5 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
人生百态,人生如梦6 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
程序员老赵6 小时前
Docker 部署 OpenViking:轻松搭建 AI Agent 上下文数据库平台
docker·开源·agent
吴声子夜歌7 小时前
Docker入门与实战——高级镜像构建
docker
坐看风云变幻7 小时前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight
零基础1237 小时前
Docker 部署实战:从入门到精通
docker·容器
Lvan的前端笔记8 小时前
docker:基于docker的前端部署方案
前端·docker·状态模式
承渊政道8 小时前
自建服务越来越多怎么管理?Docker部署Flare,搭一个自己的数字入口
运维·docker·容器·内网穿透·cpolar·nas·flare
Am-Chestnuts8 小时前
LaTeX 公式复制到 Word 怎么完美排版?DS随心转 三步保留可编辑公式
latex·办公效率·deepseek·word公式