通义千问 API 用来做翻译挺好用的,而且很便宜 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oktp123
V2EX    推广

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

  •  
  •   oktp123 2024-05-30 19:24:35 +08:00 4012 次点击
    这是一个创建于 505 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先介绍两个 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

    8 条回复    2025-01-10 16:10:54 +08:00
    xingkong06
        1
    xingkong06  
       2024-05-31 06:36:24 +08:00
    部署完提示
    xingkong06
        2
    xingkong06  
       2024-05-31 06:36:44 +08:00
    API not found: /
    aklllw
        3
    aklllw  
       2024-05-31 09:31:01 +08:00
    看起来不错,帮顶一下
    sxx97
        4
    sxx97  
       2024-05-31 10:54:26 +08:00
    直接用 Cici,豆包的插件自带翻译还免费,也是沉浸式的
    oktp123
        5
    oktp123  
    OP
       2024-05-31 11:37:25 +08:00
    @xingkong06 是直接请求?,要用/v1/chat/completions
    KISM137
        6
    KISM137  
       2024-05-31 16:09:54 +08:00
    @sxx97 没办法 右键翻译
    dedad558
        7
    dedad558  
       2024-06-22 17:54:20 +08:00
    感觉不错
    glouhao
        8
    glouhao  
       280 天前 via Android
    @oktp123 这个是 gpt 的标准接口么
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2899 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 06:12 PVG 14:12 LAX 23:12 JFK 02:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86