tisfeng / Easydict

一个简洁优雅的词典翻译 macOS App。开箱即用,支持离线 OCR 识别,支持有道词典,🍎 苹果系统词典,🍎 苹果系统翻译,OpenAI,Gemini,DeepL,Google,Bing,腾讯,百度,阿里,小牛,彩云和火山翻译。A concise and elegant Dictionary and Translator macOS App for looking up words and translating text.
GNU General Public License v3.0
6.4k stars 325 forks source link

🐞 反馈问题:Azure OpenAI 翻译不可用 #538

Open Be1ch opened 2 months ago

Be1ch commented 2 months ago

请先确认以下事项:

问题描述

从v2.6.1升级v2.7.1以后,open AI翻译不可用(配置无误且验证成功),具体表现见录屏。尝试过重装应用、重启应用、重启系统,始终重现。

该问题是否可以稳定重现?

可重现

重现步骤

打开悬浮窗口,输入任意文字并回车

截图

https://github.com/tisfeng/Easydict/assets/26673510/29ef4a76-a182-4ed6-adee-54ad8303a4a2

https://github.com/tisfeng/Easydict/assets/26673510/cfba46f3-38b7-4151-bf4c-cfa8d96394aa

期望结果

OpenAI section显示翻译结果

解决方案(可选)

No response

设备型号 && 系统版本

Apple M1 Pro, macOS 14.4.1

是否愿意提交 PR 解决该问题?

github-actions[bot] commented 2 months ago

Hello leenux9527, Thank you for your first issue contribution 🎉

wangbiye commented 2 months ago

原因可能是 UI 问题, 升级新版本之后 OpenAI 的翻译显示卡顿明显, 我的要等很久才能完全显示

Jerry23011 commented 2 months ago

感谢二位反馈,我这边用同样的配置和模型,Easydict v2.7.1 无法复现 @Be1ch 你的模型显示 gpt-35-turbo-16k,我这边是 gpt-3.5-..... 才可以,不知道可不可能是这个问题

截屏2024-05-06 20 07 43
tisfeng commented 2 months ago

这里代码有点问题,因此服务验证成功,不一定代表配置正确,它只是表示请求没报错,但返回内容可能为空,就像你视频中显示的那样。这个问题稍后我们会尝试修复一下。

你先使用 curl 或 postman 等工具发请求试试,确认你这个 OpenAI 服务模型配置是否正确,能否获取到 stream 结果。

Mrycp commented 2 months ago

遇到了相同的问题,在配置界面验证提示是验证成功的,且在其它软件「沉浸式翻译」中确认过接口和 key 都是正确的。但是在 dict 中无法显示输出结果。当输入是句子时无结果输出,当输入是单词时只会重复输出该单词,并不会进行翻译或单词解析输出。 CleanShot 2024-05-07 at 00 39 32@2x CleanShot 2024-05-07 at 00 43 18@2x

Be1ch commented 2 months ago

这里代码有点问题,因此服务验证成功,不一定代表配置正确,它只是表示请求没报错,但返回内容可能为空,就像你视频中显示的那样。这个问题稍后我们会尝试修复一下。

你先使用 curl 或 postman 等工具发请求试试,确认你这个 OpenAI 服务模型配置是否正确,能否获取到 stream 结果。

你好,我的配置经curl测试正常,如图

image
wangbiye commented 2 months ago

13-inch, 2020, Four Thunderbolt 3 ports 2 GHz 四核Intel Core i5 macOS 14.4.1 (23E224)

使用 2.6.1 和 2.7.1 差别还是挺大的, 感觉 2.7.1 能让电脑都卡顿; 当我输入这些文字的时候, 开启的是 2.7.1 比较卡, 退出之后输入文字就不卡了; 两个版本效果看视频

2.6.1 效果 https://github.com/tisfeng/Easydict/assets/9958811/d275a41a-f0e6-4d3d-a062-79cc684fba9e

2.7.1 效果 https://github.com/tisfeng/Easydict/assets/9958811/06db5807-4806-4d06-8d92-7202fa9afd5d

Jerry23011 commented 2 months ago

使用 2.6.1 和 2.7.1 差别还是挺大的, 感觉 2.7.1 能让电脑都卡顿; 当我输入这些文字的时候, 开启的是 2.7.1 比较卡, 退出之后输入文字就不卡了; 两个版本效果看视频

这个确实挺明显的

CC @wangbiye 可以麻烦你新开一个 issue 吗?这个看起来和这个 issue 不是一个问题

tisfeng commented 2 months ago

这里代码有点问题,因此服务验证成功,不一定代表配置正确,它只是表示请求没报错,但返回内容可能为空,就像你视频中显示的那样。这个问题稍后我们会尝试修复一下。 你先使用 curl 或 postman 等工具发请求试试,确认你这个 OpenAI 服务模型配置是否正确,能否获取到 stream 结果。

你好,我的配置经curl测试正常,如图 image

你这个是 Azure OpenAI 接口? 它的格式似乎有点不一样,不确定是不是数据解析有问题 😓

你把这个 curl 完整请求邮箱发给我 tisfeng@gmail.com ,我本地测一下。

Be1ch commented 2 months ago

这里代码有点问题,因此服务验证成功,不一定代表配置正确,它只是表示请求没报错,但返回内容可能为空,就像你视频中显示的那样。这个问题稍后我们会尝试修复一下。 你先使用 curl 或 postman 等工具发请求试试,确认你这个 OpenAI 服务模型配置是否正确,能否获取到 stream 结果。

你好,我的配置经curl测试正常,如图 image

你这个是 Azure OpenAI 接口? 它的格式似乎有点不一样,不确定是不是数据解析有问题 😓

你把这个 curl 完整请求邮箱发给我 tisfeng@gmail.com ,我本地测一下。

@tisfeng 没错,确实是Azure OpenAI 接口,请求内容已发送,请查收

tisfeng commented 1 month ago

目前代码中 OpenAI stream 数据解析使用了一个第三方库,它的解析比较严格,一些不规范的 OpenAI 数据格式可能无法处理 😑

如果有用户遇到这种情况,请将 Easydict 中 OpenAI 服务的配置截图使用邮件发给我,或者完整的 curl 请求也行,总之要能让我在本地运行调试这个接口。

(为安全起见,可以生成一个临时的 key,待我调试完就销毁)

tisfeng commented 1 month ago

[!IMPORTANT] 注意,这里的完整接口地址应该是 https://api.openai.com/v1/chat/completions 类似格式,而不是 https://api.openai.com

如果你只填写了 https://api.openai.com ,就会出现验证成功,但接口返回没有数据问题 😑

image
tisfeng commented 1 month ago

我刚优化了这部分代码,现在接口地址 endpoint 如果填写错误,会验证失败。

目前大部份问题都修复完了,晚上我准备发个新版本。

image
tisfeng commented 1 month ago

2.7.2 版本已发布,优化了 OpenAI 服务验证逻辑,确保如果验证成功,则一定有翻译结果。

如果是假验证成功问题,那应该已经解决了。

如果没有后续反馈,稍后我会关闭 issue。

Be1ch commented 1 month ago

2.7.2 版本已发布,优化了 OpenAI 服务验证逻辑,确保如果验证成功,则一定有翻译结果。

如果是假验证成功问题,那应该已经解决了。

如果没有后续反馈,稍后我会关闭 issue。

更新到2.7.2后,API验证提示验证失败 💔

💥 失败: Incorrect Content-Type: application/json, acceptable type is text/event-stream. This may be caused by a wrong endpoint: https://azureoai-aegis-1.openai.azure.com/openai/deployments/GPT35-Turbo-16K/chat/completions?api-version=2023-07-01-preview

然而当我将版本回退至2.6.1(配置不变,没做任何修改),则一切正常——验证成功,且OpenAI翻译正常输出😂

tisfeng commented 1 month ago

看起来 Azure OpenAI 接口确实比较怪,前面提到返回内容为空,说明数据格式一开始解析就报错了。

2.7.2 版本验证失败,Azure 返回的 Content-Type 居然是 application/json,正常应该是 text/event-stream 😑

我建议你用 one-api 套一层,Azure 妖蛾子太多了。

Be1ch commented 1 month ago

看起来 Azure OpenAI 接口确实比较怪,前面提到返回内容为空,说明数据格式一开始解析就报错了。

2.7.2 版本验证失败,Azure 返回的 Content-Type 居然是 application/json,正常应该是 text/event-stream 😑

我建议你用 one-api 套一层,Azure 妖蛾子太多了。

既然需要用到one-api,那又是另一个话题了,这个issue还是先关了吧。过一阵子我再试试,暂时用2.6.1版本养老😂

tisfeng commented 1 month ago

稍后我们优化一下代码,尝试兼容来 Azure OpenAI 吧 😥

Be1ch commented 1 month ago

稍后我们优化一下代码,尝试兼容来 Azure OpenAI 吧 😥

我不太明白的是,为什么同样的azure api配置,在2.6.1上是表现正常,但是在2.7.1及2.7.2就是不正常的🤔

tisfeng commented 1 month ago

不一样,2.6.1 版本 OpenAI 接口数据解析是我们手动用 objc 解析的,2.7.x 版本后改用了一个 Swift 第三方库来解析,它比较严格,对于不符合 OpenAI 标准接口的数据可能会报错,例如你使用的 Azure OpenAI。

Be1ch commented 1 month ago

不一样,2.6.1 版本 OpenAI 接口数据解析是我们手动用 objc 解析的,2.7.x 版本后改用了一个 Swift 第三方库来解析,它比较严格,对于不符合 OpenAI 标准接口的数据可能会报错,例如你使用的 Azure OpenAI。

明白了,后续辛苦你们再优化一下哈,谢谢