基于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"
}
相关推荐
nuo53420215 小时前
基础 6 —— Docker 容器数据卷
docker·容器
Sinclair15 小时前
安企CMS的安装-Docker 部署
运维·docker·容器
要开心吖ZSH16 小时前
AI医疗分诊与健康咨询助手agent开发——(4-2)从零到一:我给AI医疗分诊助手加了个“知识库大脑“,终于搞懂了RAG是什么
java·docker·agent·医疗·rag
汪汪大队u17 小时前
【无标题】
运维·docker·kubernetes·prometheus
spider_xcxc19 小时前
Docker Compose 容器通信详解:同一个 Compose 文件才能互通吗?
docker·容器·k8s·容器化·容器网络
BaiduPHP21 小时前
docker异常断电,出现docker服务,启动失败
docker·容器·eureka
梦梦代码精1 天前
多商户商城技术选型实测:ThinkPHP 8与Vue 3结合,B2B2C架构下的开源实践
docker·开源·代码规范
寒冰碧海1 天前
大模型部署从0到1(三):单机多卡 vLLM 部署Qwen3.6实战|Docker Compose 一键启动
docker·容器·vllm
chexus1 天前
Docker 镜像瘦身:使用 Maven 拆分 Jar 包
docker·maven·jar
梦梦代码精1 天前
智能体应用开发平台技术选型:一个自带商业模块的开源方案调研
人工智能·docker·开源