之前写了一篇gemini 2.0 flash和沉浸式插件详细的教程,由于使用AI润色被举报删帖了(可惜了那么多赞啊)。这会儿刚好2.5发布不久,来升级一下模型版本,再纯手打个教程,写的乱勿怪。
一、先说结论
沉浸式翻译 + Gemini 2.5 Flash 是最佳组合。
站内的deeplx免费服务当然灰常好用,但是大模型可以自定义提示词,自定翻译风格啊。体验确实不一样。
(叠甲:纯个人观点,2.5Flash是肉测的速度和质量平衡最好模型。)
要实现这个最佳组合,需要:
- 安装沉浸式翻译插件
- 搞到gemini的api
- 解决429异常问题
- 关闭Gemini 2.5 Flash的思考功能
二、使用教程
来一个一个说清楚。
2.1 插件安装
这个简单,直接浏览器市场,或者网上搜一下“沉浸式翻译”。
2.2 获取Gemini API key
我比较喜欢用自己的API,所以没有开通沉浸式的pro会员。
API申请方式:
- Google AI Studio: 推荐用官方的吧,升级到付费模式速率有1000RPM,免费的10RPM根本体会不到flash的爽快感。具体的付费开通方式还是在网上搜一下,很简单。另外,官方的渠道需要翻墙,也可以使用代理,可以看我另外一个deno代理的文章:手把手教你免费用deno代理gemini - 更新2.5flash关闭思考版本 。
- 其他渠道: OpenRouter,只推荐一个。其他还有很多只能自行探索了,例如站内也有很多公益api的,多去了解下。
Gemini Flash 2.5的价格虽然比2.0涨了50%,但是总体还是比较便宜的。自己可以衡量一下翻译量,是用自己的api还是开通插件的pro会员。
2.3 解决Gemini 429异常报错
Gemini的429算是一个老生常谈问题了,论坛评论区经常看到,根据我的经验也在这儿给大家一个解决方案。(按照后面提到的方法处理后,我已经稳定使用半年2.0flash,包括最近使用2.5flash,没遇到过一次429)
根据个人使用情况分析原因:
- Google的rpm(每分钟请求次数)判定是多维度的:IP,Project,提示词等等,可能还有其他我不清楚的。
- IP就不说了,换节点,尽量从自身上找原因。
- 重点: 因为很多人都使用了翻译插件的默认翻译提示词,导致Google判定大量请求来自同一用户(企业,应用),从而触发了速率限制。
根据这个分析,得出的解决方案就简单了:
不要用插件默认的提示词!可以基于默认提示词进行修改和润色(比如让 AI 帮你优化一下结构和措辞),形成自己专属的提示词。推荐用站内大佬的提示词:分享一个我的翻译提示词,配合沉浸式翻译爽的飞起!(04-25更新,修复bug) ,同样也不要直接复制,还是需要自己稍微改一下再用。
记住,是插件的几个提示词都要修改为独有的,不只是修改系统提示词。
我解决了提示词的问题后,直接插件里面把并发设置为1000,翻译体验直接起飞。(使用半年,再高的并发都从来没有429)。
如果仍然还有429问题,可以尝试以下几点来解决:
- 网络节点是否共享使用者太多,尝试切换线路试试。
- 使用的gemini key是否共享人太多,尝试使用独有的key,并且要保证project里面的key唯一。同一个project下多个key也没用。
- 另外再重点说一下key池的问题:key池基本都是免费,就算你再多key但是你每个请求的翻译提示词都是一样的,google也会把你判断为一个源,所以仍然无法突破10rpm。并且google对免费的key风控更严格,用沉浸式很容易污染key池。所以还是老老实实升到付费层级吧。
2.4 关闭思考功能
目前的这个Gemini 2.5 Flash版本竟然自带思考模式,个人感觉很不习惯(希望google后面还是单独把thinking模型独立出去)。如果要翻译用得爽,必须要关闭。
关闭方式:请求接口入参设置:
"generationConfig": {
"thinkingConfig": {
"thinkingBudget": 0
}
}
但是沉浸式插件不好处理请求参数(也许只是我不会?),我的方式是在自用的new-api代理里面关闭。
new-api关闭方式:
- 系统设置-模型相关设置-启用Gemini思考后缀适配(如果没有这个功能请升级)
- 渠道设置:模型名称需要以-nothinking结尾,完整模型名:
gemini-2.5-flash-preview-04-17-nothinking
,如果你配置了模型重定向,那就需要显示名称和模型名称都添加这个后缀,例如:# 设定gemini-2.5-flash-nothinking为模型显示名称,gemini-2.5-flash-preview-04-17-nothinking为实际模型名称。这样设置需要把显示名称(gemini-2.5-flash-nothinking)作为自定义模型填入模型列表。 { "gemini-2.5-flash-nothinking": "gemini-2.5-flash-preview-04-17-nothinking" }
- 有佬关心vertex渠道(毕竟不能浪费GCP)如何关闭thinking,我提交了一个PR,不过目前官方还没合并。佬们可以参考这个代码自己改一下然后rebuild就行。feat: support thinking suffix for vertex gemini channel by tbphp · Pull Request #1012 · QuantumNous/new-api · GitHub
deno方式关闭:
前文有提到使用deno来代理,同样可以在代理代码里面向上游传递关闭思考的参数,deno代码:
const targetHost = Deno.env.get("TARGET_HOST") || "generativelanguage.googleapis.com";
Deno.serve(async (req: Request) => {
const url = new URL(req.url);
url.hostname = targetHost;
url.protocol = "https:";
const headers = new Headers(req.headers);
headers.set('Host', url.hostname);
headers.delete('content-length');
let requestBody: BodyInit | null = null;
let modified = false;
if (req.method === "POST" && req.body && headers.get("content-type")?.includes("application/json")) {
const originalBodyText = await req.text();
if (originalBodyText) {
const bodyJson = JSON.parse(originalBodyText);
bodyJson.generationConfig = {
...(bodyJson.generationConfig || {}),
thinkingConfig: {
thinkingBudget: 0
}
};
requestBody = JSON.stringify(bodyJson);
modified = true;
} else {
requestBody = null;
}
} else if (req.body) {
requestBody = req.body;
}
const response = await fetch(url.toString(), {
method: req.method,
headers,
body: requestBody,
redirect: 'manual',
});
return response;
});
注意,这个代码会强制关闭思考功能,单独用来代理不需要思考的2.5flash即可,2.5pro勿用。
补一个评论区大佬直接通过沉浸式插件关闭思考的方式:沉浸式翻译配合Gemini 2.5 Flash的最佳实践,附429问题及关闭思考解决办法 - #25,来自 NikolaTW
其他方式:
主要原理就是上面提到的入参,佬们根据自己使用的工具代理等,合理调整即可关闭。
三、插件配置说明
3.1 翻译服务设置
- 翻译策略: 务必选择 「通用」,只有这样才能使用下面的自定义提示词,从而有效规避 429 问题。
- 最大文本长度: 可以设置得大一些,比如
10000
。gemini-2.5-flash
处理速度很快,不用太担心。 - 最大段落数: 建议设为
10
左右。这个值影响传递给模型的上下文长度,理论上值越大,上下文越多,翻译质量可能越好,但首次加载会稍慢。 - 提示词: 填入你自己修改过的专属提示词。
- 其他个性化: 我喜欢勾选“给译文增加下划线”,译文的区分更清晰。
3.2 用户规则配置
分享一个非常实用但可能用的人不多的功能:用户规则 (User Rules)。
场景: 看文档或特定网站(比如如Folo阅读器)时,插件会连带侧边栏、导航栏等非主要内容一起翻译,导致页面布局混乱。这时就可以通过配置用户规则,指定插件只翻译页面的特定部分。
示例: 就拿app.follow.is
来举例:
- 首先自己通过浏览器开发调试工具分析元素,确认要翻译部分的元素选择器。
- 然后插件点击 “编辑用户规则 (Edit User Rules)”。
- 添加以下 JSON 配置:
[
{
"matches": "app.follow.is",
"excludeSelectors": [
".group.absolute"
],
"selectors": [
"article"
]
}
]
配置说明:
"matches": "app.follow.is"
:此规则仅对app.follow.is
域名生效。"selectors": ["article"]
:指定只翻译 HTML 中<article>
标签包裹的内容(通常是文章主体)。"excludeSelectors": [".group.absolute"]
:排除具有 CSS 类.group.absolute
的元素(假设这是侧边栏或导航栏的 CSS 选择器)。你需要根据实际网页结构调整这些选择器。
目前就分享这些了,如果对于这个方案使用还有疑问就直接问吧,看看还有没有需要分享的。