基于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"
}
相关推荐
Patrick_Wilson3 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy3 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭3 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩4 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
小白跃升坊5 天前
Codex 增强部署:基于 Codex++ 接入 DeepSeek
ai·ai编程·codex·deepseek·ai coding·codex++
程序员老赵5 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
大模型真好玩5 天前
什么是Loop Engineering?最通俗易懂的Loop Engineering核心概念
人工智能·agent·deepseek
WangMingHua1115 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽6 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康8 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple