news 2026/10/10 16:28:30

初探开源项目simple-one-api的Windows本地部署,以及在沉浸式翻译中增加deepseek-v1的方法|TaoToken统一Key接入实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
初探开源项目simple-one-api的Windows本地部署,以及在沉浸式翻译中增加deepseek-v1的方法|TaoToken统一Key接入实践

1. 为什么要在 Windows 上折腾 simple-one-api 和沉浸式翻译

如果你平时看英文文档、追 GitHub issue、读论文,大概率装过沉浸式翻译这类浏览器插件。它默认走的是各家翻译接口,但用久了你会发现两个问题:一是想换成 DeepSeek 这类性价比高的模型时,插件里没有现成选项;二是手里攒了好几个平台的 Key,OpenAI 一个、DeepSeek 一个、讯飞一个,每换一个工具就要重新填一遍,管理起来很乱。

simple-one-api 这个开源项目正好解决第一个问题。它是一个用 Go 写的单可执行文件服务,把 OpenAI 兼容接口、DeepSeek、千帆、讯飞星火、腾讯混元、MiniMax 这些平台的接口统一成一套 OpenAI 格式的 API。你在本地跑起来之后,对外只暴露一个端口、一个统一 Key,任何支持自定义 OpenAI 接口的客户端都能接进来,沉浸式翻译就是其中之一。

这篇内容面向的是 Windows 用户,尤其是刚接触本地服务、看官方 README 有点懵的新手。我会把 simple-one-api 的 Windows 本地部署流程拆成可复制的命令,再演示怎么在沉浸式翻译里新增一个 deepseek-v1 翻译服务,最后用 TaoToken 的统一 Key 通道做一次连通性验证,让你从「服务启动」到「翻译生效」完整跑通一遍。

核心检索词先摆出来:simple-one-api 是一个 OpenAI 接口适配层,能做什么——把多平台大模型 API 统一成一个入口;适合谁——需要在一个客户端里切换多个模型、又不想反复改配置的人。下面进入实操。

2. TaoToken 统一 Key 接入前的准备工作

在动手部署之前,先把「Key 从哪来」这件事理清楚,否则后面配置文件里填什么会卡住。

simple-one-api 的 config.json 里有一个对外统一 Key 的概念,客户端拿这个 Key 访问本地服务,本地服务再拿各个平台真实的 Key 去请求上游。也就是说,你至少需要两类 Key:一类是 simple-one-api 自己生成的「本地统一 Key」,随便设一个字符串就行;另一类是上游模型的真实 Key,比如 DeepSeek 官方给的、或者通过 TaoToken 拿到的统一 Key。

这里我推荐用 TaoToken 的方式接入。原因是它把多个模型的调用收敛到一个 Key 和一套 Base URL 上,你不需要为每个平台单独注册、单独充值、单独记 Key。对于 simple-one-api 这种「一个配置文件管多个模型」的场景,用统一 Key 能少填很多字段,配置也更干净。

TaoToken 的官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,注意 API 地址后面不加 UTM 参数。你需要先去控制台创建一个 API Key,控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。创建好之后先复制出来,等会儿要填进 config.json。

如果你只是想先验证模型能不能通,可以用模型对话页面快速试一下:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。长期做编码或者跑 Agent 的话,可以看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到字段不清楚的时候翻一下。

另外,Windows 上要跑 simple-one-api,需要确认两件事:一是装了 Go 环境(如果你选择源码编译),二是 9090 端口没被占用。Go 的安装包去官网下载 msi 一路下一步就行,装完在 PowerShell 里敲go version能看到版本号就说明好了。端口检查可以用netstat -ano | findstr 9090,没输出就说明空闲。

准备工作做完,接下来进入真正的部署环节。

3. simple-one-api 的 Windows 本地部署与 config.json 配置

这一节是全文技术含量最高的部分,我会把 clone、编译、配置、启动四步都写清楚,配置文件片段可以直接复制。

3.1 拉取源码与编译

先建一个工作目录,比如D:\dev\simple-one-api,然后在 PowerShell 里执行:

cd D:\dev git clone https://github.com/fruitbars/simple-one-api.git cd simple-one-api

项目是 Go 写的,编译之前确认 Go 环境正常:

go version

如果提示找不到命令,说明 Go 没装好或者没加进 PATH,回去检查安装步骤。确认没问题后,在项目根目录执行编译:

go build -o simple-one-api.exe

编译成功后目录里会多出一个simple-one-api.exe。如果你不想编译,也可以直接去项目的 Releases 页面下载现成的 exe,效果一样。我试过两种方式,编译出来的体积略小一点,但差别不大。

3.2 config.json 的结构说明

项目根目录有一个config.json,这是整个服务的核心配置。它的外层是服务级设置,内层是各个模型的接入信息。先看外层几个关键字段:

{ "api_key": "sk-local-123456", "load_balancing": "random", "server_port": 9090 }

api_key是对外的统一 Key,客户端访问本地服务时填这个,你可以自己改成任意字符串。load_balancing指定多个模型时的选择策略,填random就是随机挑一个。server_port是对外端口,默认 9090,没被占用就别改。

3.3 增加 deepseek-v1 模型配置

接下来是重点:在 models 里增加 DeepSeek 的接入。用 TaoToken 统一 Key 的话,配置片段如下:

{ "models": [ { "name": "deepseek-v1", "model": "deepseek-chat", "type": "openai", "base_url": "https://taotoken.net/api/v1", "api_key": "sk-你的TaoToken密钥" } ] }

这里几个字段要对应清楚:name是你在客户端里调用的模型名,也就是沉浸式翻译里要填的那个;model是上游真实模型 ID;type填openai表示走 OpenAI 兼容协议;base_url填 TaoToken 的 API 地址加/v1;api_key填你在控制台创建的那个 Key。

把这段合并进完整的 config.json 后,保存文件。注意 JSON 格式很严格,多一个逗号都会导致启动失败,建议用 VS Code 这类带校验的编辑器改。

3.4 启动服务

配置改完,双击simple-one-api.exe或者在 PowerShell 里执行:

.\simple-one-api.exe

看到类似server started on port 9090的输出,就说明服务起来了。这个黑框窗口不要关,关了服务就停了。想后台运行的话,可以用Start-Process -NoNewWindow .\simple-one-api.exe,或者干脆开一个专门的终端窗口挂着。

到这一步,本地服务已经就绪,对外地址是http://localhost:9090/v1,统一 Key 是你在 config.json 里设的那个。

4. 沉浸式翻译新增 deepseek-v1 翻译服务的配置步骤

服务跑起来之后,接下来把它接进沉浸式翻译。整个过程分三步:打开自定义 API 设置、填写接口信息、验证翻译生效。

4.1 打开沉浸式翻译的自定义翻译服务

在浏览器里点开沉浸式翻译的扩展图标,进入设置页面,找到「翻译服务」这一栏。往下翻会看到「自定义 API」或者「添加自定义翻译服务」的入口。不同版本位置略有差异,但关键词都是「自定义」。

点进去之后,界面会让你填几个字段:名称、接口地址、API Key、模型名。这几个字段正好对应我们前面 config.json 里的配置。

4.2 填写接口信息

按下面这样填:

名称可以写deepseek-v1-local,方便自己识别。接口地址填http://localhost:9090/v1/chat/completions,注意这里要带上完整的路径,不能只填到/v1。API Key 填 config.json 里的api_key,比如sk-local-123456。模型名填deepseek-v1,也就是 config.json 里 models 的name字段。

填完之后保存。有些版本的沉浸式翻译会要求你点一下「测试」按钮,如果返回正常就说明连通了。

4.3 设为默认翻译服务并验证

保存后回到翻译服务列表,把刚添加的deepseek-v1-local设为默认。然后随便打开一个英文网页,右键选择「翻译网页」,或者用快捷键触发翻译。如果页面上英文被替换成中文,说明整条链路通了:浏览器 → 本地 simple-one-api → TaoToken → DeepSeek。

如果翻译没反应,先看 simple-one-api 的黑框窗口有没有请求日志输出。有日志说明请求到了本地服务,问题可能出在上游;没日志说明沉浸式翻译没发出去,检查接口地址和端口。

5. 常见报错排查:401、local proxy failed 与 reading choices

部署和接入过程中,最容易卡在几个典型报错上。这一节把真实遇到过的错误和对应解法列出来,对照着查能省不少时间。

5.1 401 Unauthorized

这个报错通常出现在两个位置。一是沉浸式翻译调用本地服务时返回 401,说明你填的 API Key 和 config.json 里的api_key不一致,回去核对一下,注意有没有多余空格。二是 simple-one-api 请求上游时返回 401,说明 config.json 里 models 的api_key填错了,或者 TaoToken 的 Key 已经失效。去控制台重新生成一个,替换进去再重启服务。

5.2 local proxy failed

这个报错一般出现在沉浸式翻译侧,提示本地代理失败。原因通常是 simple-one-api 服务没启动,或者端口被占用后服务实际没起来。先在 PowerShell 里执行netstat -ano | findstr 9090,看端口有没有在监听。如果没有,回到项目目录重新启动 exe,观察黑框里有没有报错。常见的是 config.json 格式错误导致启动中断,用 JSON 校验工具过一遍。

5.3 reading choices 相关报错

如果日志里出现类似reading 'choices'或者cannot read property choices的提示,说明上游返回的结构和预期不符。这种情况多半是base_url或model字段填错了。比如 base_url 少写了/v1,或者 model 填了一个上游不存在的 ID。用 TaoToken 的话,base_url 固定是https://taotoken.net/api/v1,model 填deepseek-chat这类真实 ID,不要填deepseek-v1(那是本地别名)。

5.4 OAuth 与鉴权类问题

如果你在配置过程中看到 OAuth 相关的提示,通常是因为误用了需要 OAuth 流程的接入方式。simple-one-api 走的是 API Key 鉴权,不涉及 OAuth。检查一下是不是把某个需要网页授权的平台配置混进来了。用 TaoToken 统一 Key 的话,全程只需要一个 API Key,不存在 OAuth 环节。

排查的时候有个通用思路:先确认本地服务活着,再确认本地 Key 对得上,最后确认上游 Key 和地址对得上。三层逐一排除,基本都能定位到问题。

6. 从本地服务到统一 Key 的完整闭环

把上面几步串起来,你现在的状态应该是:Windows 上跑着一个 simple-one-api 服务,config.json 里配了 deepseek-v1 指向 TaoToken,沉浸式翻译通过本地端口调用这个模型,网页翻译正常工作。

这套结构的好处是扩展性强。以后想加新模型,比如再加一个gpt-4o-mini,只需要在 config.json 的 models 数组里追加一段,重启服务,沉浸式翻译里换个模型名就行,不用改任何客户端代码。TaoToken 的统一 Key 让上游鉴权也保持单一入口,不用为每个平台单独维护密钥。

如果你后面要做更复杂的编码任务或者跑 Agent,可以看看 Coding Plan 那套方案,接入方式和这里一致,只是使用场景不同。文档里对各个字段有更细的说明,遇到 config.json 里不确定的字段,翻一下 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 基本都能找到答案。

最后留一个实用技巧:config.json 改完之后,建议先备份一份config.json.bak,下次改崩了直接还原,比重头写快得多。服务启动的黑框窗口可以最小化但别关,养成习惯之后,这套本地翻译链路会一直稳定跑着。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 16:26:23

虚拟电池模型:把空调集群灵活性变成可调度的储能约束

简介:面向电力系统优化调度研究者与能源工程从业者,此资源聚焦需求侧灵活性刻画,以虚拟电池(VB)模型统一描述电动汽车与温控负载的功率/电能边界,并给出基于pulp库的日前优化策略完整Python复现。压缩包仅含…

作者头像 李华
网站建设 2026/10/10 16:25:03

YOLOv3旋转角检测ROS包:工业级实时抓取姿态输出

简介:本资源是一个基于YOLOv3与PyTorch实现的ROS机器人抓取检测功能包,面向ROS初学者及机器人视觉方向开发者,解决在Ubuntu 16.04/18.04环境下利用YOLO进行实时物体识别与抓握姿态(含旋转角度)估计的实际问题&#xff…

作者头像 李华
网站建设 2026/10/10 16:20:00

分布鲁棒优化求解含风电不确定性的机组组合:Matlab实现与解析

调度台前最怕的不是风电突然来一阵大波动,而是我们根本不知道误差到底服从什么分布。第二天风电出力预测值是350兆瓦,实际可能落在180到420兆瓦之间,这种偏差的“分布形状”往往只有几十个历史样本,谁也说不准。所以当“基于线性准…

作者头像 李华
网站建设 2026/10/10 16:18:59

回文子串与回文子序列:二维DP遍历顺序与中心扩展法详解

开始刷到第四十五天,字符串相关的动态规划算是快收尾了。今天这两道题,647回文子串和516最长回文子序列,放在一起刷其实挺有意思——同样都是“回文”,一个要求连续的子串,一个允许不连续的子序列,解法上的…

作者头像 李华
网站建设 2026/10/10 16:16:28

WinCC用户归档从组态到排错:配方管理与批次追溯实战

简介:WinCC用户归档案例资源包服务于工业自动化领域的SCADA工程师和组态技术人员,围绕西门子WinCC用户归档功能,演示如何借助动作与标准模块的配合,实现生产数据的选择性采集、过滤、转换与压缩归档,并据此设计合理的存…

作者头像 李华