tisfeng/Easydict

功能建议:希望可以增加ChatGPT的翻譯

YanAnnLu opened this issue · 27 comments

功能描述

我在使用ChatGPT時,有一種運用是讓GPT協助我翻譯。我會使用「請以繁體中文優雅地翻譯以下文字」作為我的開頭來詠唱,希望有一天能夠加入類似的功能。

Hello YanAnnLu, Thank you for your first issue contribution 🎉

确实,ChatGPT 翻译效果很不错,我已经在测试 OpenAI 的接口了,稍后准备好了会开放支持的。

image

因为openai翻译要花钱的,希望后面能参考下bob的设计,点击时再显示openai的翻译

可以~

1.3.0 版本已经支持 OpenAI 翻译了,考虑到 OpenAI 接口不稳定、限制 IP 以及其他因素,目前以 beta 测试方式提供,暂时还没写界面,需要通过命令方式启用。

请先确保你有 APIKey。

在输入框输入下面代码,然后 enter ,就会开启 OpenAI 翻译

easydict://writeKeyValue?EZBetaFeatureKey=1

配置 APIKey

easydict://writeKeyValue?EZOpenAIAPIKey=sk-xxx

查看 APIKey,其他 key 类似,如果查询成功,会将结果写到剪贴板。

easydict://readValueOfKey?EZOpenAIAPIKey

目前 OpenAI 支持三种查询模式:单词,句子和长翻译,默认都是开启的,其中单词和句子也可关闭。

查询单词:
image

分析英语句子:
image

翻译
6fd5e6c91249d711cde7a3274a66e18d

注意,OpenAI 有时候查询结果会不正确,尤其中文历史知识,经常胡编乱造 😅

image

image

对了,考虑到 OpenAI 的 token 费用因素,还提供了默认关闭选项,写入下面命令后, OpenAI 将默认关闭查询,仅在用户手动点击展开按钮时才查询

easydict://writeKeyValue?EZOpenAIServiceUsageStatusKey=1

因为国内网络原因,一般都是使用代理接口,希望openai再加个api地址配置

Azure OpenAI API提供了简便和可用性较高的GPT 3.5/4的选择, 希望能够添加支持. 但是它的api和openai api有所区别, 详见官方文档Azure OpenAI Studio代码示例

可以,稍后我加个自定义 API 域名吧。

Azure OpenAI Service 这个我没拿到资格,没办法测试,有小伙伴来提 PR 吗

算是提前免责声明吧,因为听过一些奇怪用户使用 APIKey 被封的例子,这个问题很复杂很玄学,建议自行了解个中原因, 权衡利弊风险。

使用低风险、固定代理 IP,或自定义免翻墙域名,或 Azure OpenAI 等,可能是一些比较好的方式。

如果担心被封,不了解原理,又没办法降低风险,那不建议用。

https://twitter.com/yetone/status/1638439103632142336

虽然 OpenAI 翻译已经很优秀了,且通常相比 DeepL 和 Google 翻译都要更准确 #29 ,但实测有时仍会出现翻车情况,尝试过各种方式优化翻译 Prompt,但效果不是很好,所以我引入了分析句子模式中的推理翻译,通过引导模型逐步推理,来实现更准确、更合理的翻译。

image

image

image

image

虽然 OpenAI 翻译已经很优秀了,且通常相比 DeepL 和 Google 翻译都要更准确 #29 ,但实测有时仍会出现翻车情况,尝试过各种方式优化翻译 Prompt

在用 https://github.com/yetone/openai-translator 感觉 prompt 还行,另外可以考虑用 ``` 等符号把待翻译内容包起来,来源:https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/

这个我在 OpenAI 的 best-practices 看过,目前也在使用了,这种优化对用户输入处理很有用,但可惜它对提高翻译的准确度方面没什么帮助 😢

一开始我也希望能够构建出一步到位,直接提高准确度的翻译 Prompt,但都失败了,后面发现还是推理翻译最管用。

如果有更好的 Prompt,欢迎推荐。另外,如果发现有翻译不准确的例子,也可以来这个 issue #29 下提交记录,我会尝试优化的。

image

image

1.3.1 支持了设置自定义域名和模型:

//  xxx 默认是 api.openai.com
easydict://writeKeyValue?EZOpenAIDomainKey=xxx

//  xxx 默认是 gpt-3.5-turbo
easydict://writeKeyValue?EZOpenAIModelKey=xxx

关于部署自定义域名,可以参考这个 vercel 反代项目 vercel-reverse-proxy

本项目是vercel反向代理。完全免费,万能代理,可代理全网一切接口,包括openai、github、google等等。

您好,请问 "单词和句子" 如何关闭,谢谢

前面好像忘记写了。。注意,目前关于句子的判定有点欠缺,如果关闭查单词,那单词会被识别为句子类型(因为理论上句子可以是一个单词),会有点奇怪,建议要关闭就一起关闭。稍后我优化一下判定。

温馨提示:如果你只是偶尔不希望分析句子,可以不用关闭句子类型,只需要在【句子】后面添加一个波浪符~,这样就会变成翻译类型了。

// 关闭查单词
easydict://writeKeyValue?EZOpenAIDictionaryKey=0

// 关闭句子分析
easydict://writeKeyValue?EZOpenAISentenceKey=0
image

謝謝開發者說明🥳

image

为什么配置好了会请求超时

先检查一下自己的网络环境问题。

考虑到 OpenAI 接口不稳定、限制 IP 以及其他因素,目前以 beta 测试方式提供

ntpd1 commented

可以,稍后我加个自定义 API 域名吧。

Azure OpenAI Service 这个我还没拿资格,没办法测试,有小伙伴来提 PR 吗😔

Azure OpenAI怎么设置啊?

我还没拿到资格,也没有收到 PR,你要来一个吗 🥹

你好,2.0.1 版本已实现该功能。

开放 OpenAI (ChatGPT) 翻译,支持 Azure OpenAI 接口。 #28

通过 urlscheme 设置,我还是第一次见,为啥要这样设计呢,而且,我的 openaikey,设置是失败的,DeepL 的是成功的

最开始支持的一些服务都是不需要 key 的,因此代码设计上就没有考虑用户配置服务 key 的 UI 界面,加上后面添加 OpenAI 服务的时候,也是以 beta 方式提供,这一点就一直遗留了下来。 如果你有好的想法,欢迎提交 PR。

@tobemaster56 设置是失败的,这种模糊的描述没有意义,具体是有什么问题,有报错提示吗?确认 openaikey 是有效的吗,网络能访问 OpenAI 接口吗?

如果确认是应用 bug,请单独提 issue,详细描述问题,最好附上图片或视频。

我的 openaikey,设置是失败的