本文以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 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"
}