沉浸式翻译配合 Gemini 2.5 Flash 的最佳实践,附 429 问题及关闭思考解决办法

9 天前
 tbphp

第一次来这里发文章,分享一下我使用沉浸式翻译的一些经验。这篇文章是原创,之前在隔壁发过一次。如果遇到熟人,一定留下来打个招呼。

一、先说结论

沉浸式翻译 + Gemini 2.5 Flash 是最佳组合。

有免费的 deeplx 服务当然灰常好用,但是大模型可以自定义提示词,自定翻译风格啊。体验确实不一样。
(叠甲:纯个人观点,2.5Flash 是肉测的速度和质量平衡最好模型。)

要实现这个最佳组合,需要:

二、使用教程

来一个一个说清楚。

2.1 插件安装

这个简单,直接浏览器市场,或者网上搜一下“沉浸式翻译”。

2.2 获取 Gemini API key

我比较喜欢用自己的 API ,所以没有开通沉浸式的 pro 会员。

API 申请方式:

Gemini Flash 2.5 的价格虽然比 2.0 涨了 50%,但是总体还是比较便宜的。自己可以衡量一下翻译量,是用自己的 api 还是开通插件的 pro 会员。

2.3 解决 Gemini 429 异常报错

Gemini 的 429 算是一个老生常谈问题了,论坛评论区经常看到,根据我的经验也在这儿给大家一个解决方案。(按照后面提到的方法处理后,我已经稳定使用半年 2.0flash ,包括最近使用 2.5flash ,没遇到过一次 429 )

根据个人使用情况分析原因:

根据这个分析,得出的解决方案就简单了:

不要用插件默认的提示词!可以基于默认提示词进行修改和润色(比如让 AI 帮你优化一下结构和措辞),形成自己专属的提示词。网上有很多有特色的翻译提示词,同样不要直接复制,还是需要自己稍微改一下再用。

记住,是插件的几个提示词都要修改为独有的,不只是修改系统提示词。

我解决了提示词的问题后,直接插件里面把并发设置为 1000 ,翻译体验直接起飞。(使用半年,再高的并发都从来没有 429 )。

如果仍然还有 429 问题,可以尝试以下几点来解决:

2.4 关闭思考功能

目前的这个 Gemini 2.5 Flash 版本竟然自带思考模式,个人感觉很不习惯(希望 google 后面还是单独把 thinking 模型独立出去)。如果要翻译用得爽,必须要关闭。

关闭方式:请求接口入参设置:

"generationConfig": {
  "thinkingConfig": {
    "thinkingBudget": 0
  }
}

插件方式关闭:

沉浸式插件本身就可以关闭,具体方法:

  1. 插件设置 -> 开放者设置 -> Edit Full User Config
  2. 搜索找到"gemini",然后添加 json:
    "gemini": {
      "APIKEY": "******",
      # 从此处为添加配置
      "bodyConfigs": {
        "generationConfig": {
          "thinkingConfig": {
            "thinkingBudget": 0
          }
        }
      }
      # 添加部分结束
    }
    
    注意是添加配置,不要修改到原有配置。

new-api 关闭方式:

我习惯使用 new-api 来管理多个渠道的 api ,这里也提供关闭思考的方式。

  1. 系统设置-模型相关设置-启用 Gemini 思考后缀适配(如果没有这个功能请升级)。
  2. 渠道设置:模型名称需要以-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"
    }
    
  3. 可能有朋友白嫖到了 GCP ,也关心 vertex 渠道如何关闭 thinking 。我提交了一个 PR ,已经被官方合并。feat: support thinking suffix for vertex gemini channel by tbphp · Pull Request #1012 · QuantumNous/new-api · GitHub,所以跟 gemini 一样配置即可。

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 勿用。

三、插件配置说明

3.1 翻译服务设置

3.2 用户规则配置

分享一个非常实用但可能用的人不多的功能:**用户规则 (User Rules)**。

场景: 看文档或特定网站(比如如 Folo 阅读器)时,插件会连带侧边栏、导航栏等非主要内容一起翻译,导致页面布局混乱。这时就可以通过配置用户规则,指定插件只翻译页面的特定部分。

示例: 就拿 app.follow.is 来举例:

  1. 首先自己通过浏览器开发调试工具分析元素,确认要翻译部分的元素选择器。
  2. 然后插件点击 “编辑用户规则 (Edit User Rules)”。
  3. 添加以下 JSON 配置:
    [
      {
        "matches": "app.follow.is",
        "excludeSelectors": [
          ".group.absolute" 
        ],
        "selectors": [
          "article"
        ]
      }
    ]
    

配置说明:

目前就分享这些了,如果对于这个方案使用还有疑问就直接问吧,看看还有没有需要分享的。

574 次点击
所在节点    程序员
2 条回复
21231sv
9 天前
问个提问问题。op 为什么用 gemini ,是因为它翻译比较准确吗
tbphp
9 天前
@21231sv 没太懂你的问题。只是沉浸翻译插件用 gemini flash 个人比较推荐。质量和速度。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1129913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX