V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oktp123
V2EX  ›  推广

通义千问 API 用来做翻译挺好用的,而且很便宜

  •  
  •   oktp123 · 26 天前 · 1148 次点击

    先介绍两个 Chrome 插件

    1. 沉浸式翻译: https://immersivetranslate.com
    2. openai translator: https://github.com/openai-translator/openai-translator

    这两个工具支持对接 OpenAI ChatGPT 来进行内容翻译,其中沉浸式翻译还支持 PDF 、EPUB ,以及视频字幕的实时翻译。其翻译效果远超 Google 翻译,甚至人工翻译。其原因是推理模型本身基于内容的理解之后的翻译,而即使是英语专八水平,如果缺少特定领域知识(如:计算机、医学、物理学),也很难翻译出信达雅的水平。

    虽然国内用户无法使用 OpenAI ChatGPT 的功能,但我们有自己的通义千问,结合 Higress 的多模型协议转换能力(在这篇《通义千问 2.5 “客串” ChatGPT4 ,你分的清吗?》中有介绍),就可以用极低的 API 调用成本用上这两个插件了。

    通义千问前不久刚进行了一轮大降价:《击穿全网底价,通义千问 GPT-4 级大模型直降 97%! 1 块钱能买 200 万 tokens 》

    本文下面演示的效果就是基于1 块钱 200 万 tokens 额度(相当于 5 本新华字典的文字量)的 qwen-long 模型。

    Higress x 通义千问效果演示

    Part.1 沉浸式学习 Rust (使用沉浸式翻译)

    这里选取了 Rust 官方的 《 The Rust Programming Language 》 的 Understanding Ownership 一节的部分内容进行演示。因为是浏览器在线阅读,直接开启沉浸式翻译就可以看到双语显示:

    通义千问翻译

    人工翻译

    我在 GitHub 上找到一个项目 star 数有 4.3k 的中文版:《 Rust 程序设计语言》,对比上面截取内容的翻译如下:

    对比上面通义千问的翻译,阅读这个人工翻译内容,我的阅读速度明显下降了;推测人工翻译作者应该是在机器翻译的基础上,做了一些简单调整,所以有一些翻译并不是中文语境下的常见句式,例如:

    英文原文:Think of being seated at a restaurant. When you enter, you state the number of people in your group, and the host finds an empty table that fits everyone and leads you there.

    中文版翻译:想象一下去餐馆就座吃饭。当进入时,你说明有几个人,餐馆员工会找到一个够大的空桌子并领你们过去。

    而这一段通义千问的翻译是:

    想象一下在餐厅就座的情景。进入时,你告诉服务员你们一行的人数,然后服务员会找到一张足以容纳所有人的空桌子并带你们过去。

    通义千问在翻译时,举例来说,做了这样的改进:

    1. 语句格式更完整(想象一下去餐馆就座吃饭->想象一下在餐厅就座的情景)
    2. 去掉了中文语境下冗余的介词“When”(进入时)
    3. 补充了英文原文中省略的宾语(你告诉服务员

    通义千问的翻译显然更容易阅读和理解。另外值得一题的是 《 The Rust Programming Language 》一书还在跟随 Rust 语言自身的演进不断迭代。但中文版《 Rust 程序设计语言》仍停留在 2021 年的版本。

    Part.2 沉浸式学习编译原理(使用沉浸式翻译)

    这里选取了 Bob Nystrom 编写的 《 Crafting Interpreters 》 的 Garbage Collection 一节的部分内容进行演示。用的作者免费发布的开源 PDF ,用沉浸式翻译工具打开 PDF 即可。

    效果炸裂!

    Part.3 主动和英文世界交流 (使用 openai translator )

    “学而不思则罔”。在学习的过程中,我们难免会有疑问需要交流,对于这些英文技术内容,国内的讨论地方不多,我们可以去 Reddit 上和外国友人进行交流。例如这里就有对于 Crafting Interpreters 的一些讨论。

    如果你的英文能力不佳,可以考虑使用 openai translator 来翻译你的问题,然后发布到 Reddit 上:

    我这里手滑把“误”识别打成了“勿”识别,不过通义千问显然结合语境知道了我真正的意图,翻译成了“misidentification”。

    Bravo!

    对了,我们还可以来跟通义千问对话一下,看看他的回答:

    这里使用了 Higress+NextChat ,把 gpt-4 模型映射为通义千问的 qwen-max 模型,所以截图显示为 gpt-4 ,具体方式可以参考这里: https://github.com/alibaba/higress/issues/938

    手把手教你如何配置

    Step.0 创建通义千问 API Key

    1. 使用支付宝注册一个阿里云账号
    2. 进入灵积平台,创建一个 API Key

    Step.1 启动 Higress

    Higress 支持用 Docker 启动:

    # 创建一个工作目录
    mkdir higress; cd higress
    # 启动 higress ,配置文件会写到工作目录下
    docker run -d --rm --name higress-ai -v ${PWD}:/data \
            -p 8001:8001 -p 8080:8080 -e CONFIG_TEMPLATE=ai-proxy \
            -e DEFAULT_AI_SERVICE=qwen -e DASHSCOPE_API_KEY="这里填 APIKey" \
            higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:1.4.0-rc.1
    

    默认模型映射方式:

    • gpt-4 映射到 qwen-max
    • 其他都映射到 qwen-long

    如有需求,你也可以在浏览器输入: http://localhost:8001, 登陆 Higress 控制台,在 qwen 这个路由的策略里找到 AI 代理插件,修改映射到其他模型:

    Step.2.1 配置沉浸式翻译

    找到沉浸式翻译的设置页,在翻译服务处选择 OpenAI ,点开设置。

    沉浸式翻译比较消耗 token ,这里我们用最便宜的 qwen-long 模型。因为除了 gpt-4 都被 Higress 映射到了 qwen-long ,这里可以直接选 "gpt-3.5-turbo"。

    然后再填入自定义接口地址: http://127.0.0.1:8080/api/openai/v1/chat/completions

    这里不再需要填写 API Key ,因为 Higress 代理后没有配置 API Key ,当然你也可以设置一个自定义的 API Key ,然后将 Higress 地址暴露到外部给其他人使用,并通过 API Key 来进行认证. Higress 侧最简单的配置方式,就是为路由直接配置一个 Authorization Header 匹配,如下图配置后,API Key 就是 "my-custom-token":

    Step.2.2 配置 openai translator

    找到 openai translator 的设置页,服务提供商选择 OpenAI ,进行如下类似的配置,不过这里我们把模型改为 gpt-4 ,即 Higress 映射后的 qwen-max 。因为使用 openai translator 的场景一般不会输入太多 token ,我们使用 qwen-max 会比 qwen-long 有更好的翻译效果:

    解锁 Higress AI 代理插件的更多玩法

    更精确的翻译修订

    Higress 支持使用 qwen-long 模型的文件上传对话能力,可以用如下命令上传一份自定义的词典用于翻译上下文:

    curl --location --request POST 'https://dashscope.aliyuncs.com/compatible-mode/v1/files' \
      --header 'Authorization: Bearer 这里填 APIKey' \
      --form 'file=@"./dict.txt"' \
      --form 'purpose="file-extract"'
    
    # 返回内容:
    {"id":"file-fe-xxxxxxx","object":"file","bytes":596687,"created_at":1716635947,"filename":"doc.md","purpose":"file-extract","status":"processed"}
    

    将返回 json 的 id 字段配置到 Higress AI 代理插件的配置中:

    provider:
      apiTokens:
      - "sk-0e6c387446ff45d0924111475a82462e"
      modelMapping:
        '*': "qwen-long"
        gpt-4: "qwen-max"
        gpt-4-turbo: "qwen-max"
        gpt-4o: "qwen-max"
      qwenFileIds:
      - "file-fe-xxxxxxx"
      type: "qwen"
    

    后续用 qwen-long 翻译就可以用上这些上下文信息了。当然这个玩法不仅局限于翻译,还可以用在基于文档的 FAQ 机器人搭建等场景。

    对接更多的大模型

    Higress AI 代理插件目前支持的模型提供方列表如下

    • 通义千问
    • OpenAI
    • Azure OpenAI
    • 月之暗面
    • 智谱 AI
    • 百川智能
    • 零一万物
    • Ollama
    • DeepSeek
    • Groq
    • Anthropic Claude

    相应的详细配置方式可以查看:

    https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/ai-proxy

    7 条回复    2024-06-22 17:54:20 +08:00
    xingkong06
        1
    xingkong06  
       26 天前
    部署完提示
    xingkong06
        2
    xingkong06  
       26 天前
    API not found: /
    aklllw
        3
    aklllw  
       26 天前
    看起来不错,帮顶一下
    sxx97
        4
    sxx97  
       26 天前
    直接用 Cici,豆包的插件自带翻译还免费,也是沉浸式的
    oktp123
        5
    oktp123  
    OP
       26 天前
    @xingkong06 是直接请求?,要用/v1/chat/completions
    KISM137
        6
    KISM137  
       25 天前
    @sxx97 没办法 右键翻译
    dedad558
        7
    dedad558  
       3 天前
    感觉不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:04 · PVG 14:04 · LAX 23:04 · JFK 02:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.