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.38k stars 324 forks source link

🐞 反馈问题:自定义服务添加千问模型无法翻译 #550

Closed AnaheimEX closed 1 month ago

AnaheimEX commented 1 month ago

请先确认以下事项:

问题描述

自定义模型那边已经设置好了,验证也通过。 设置如下:

但是在翻译时,窗口内是空白的 CleanShot 2024-05-12 at 12 17 11@2x

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

可重现

重现步骤

翻译时窗口内是空白

截图

CleanShot 2024-05-12 at 12 17 11@2x CleanShot 2024-05-12 at 12 18 35@2x

期望结果

期待解决

解决方案(可选)

No response

设备型号 && 系统版本

Apple M2 Pro macOS14.4.1

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

github-actions[bot] commented 1 month ago

Hello AnaheimEX, Thank you for your first issue contribution 🎉

Jerry23011 commented 1 month ago

感谢反馈,这个现象看起来有点像 https://github.com/tisfeng/Easydict/issues/538#issuecomment-2096483786 @anaheim 如果可以的话你可以 build dev 分支然后看看这个问题是否还存在吗?

tisfeng commented 1 month ago

不不,你这个用法不对,目前 Easydict 只支持符合标准 OpenAI 接口 格式的服务,而阿里的 dashscope 接口并不兼容 OpenAI,你仔细看看。

一般来说,如果某个服务支持标准的 OpenAI 接口,它一般会在显著的地方表明这一点,因为这是一个很大优势,能够兼容众多 OpenAI 第三方服务,例如 DeepSeek零一万物 等。如果它没有写,一般就是不兼容。

tisfeng commented 1 month ago

标准的 OpenAI 请求格式如下,其中 URL 和 API_KEY 替换为响应的值。

curl $URL \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "model": "No models available",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'
tisfeng commented 1 month ago

对于一些不兼容 OpenAI 接口的服务,可通过 one-api 等第三方开源项目,将其转换为标准的 OpenAI 接口格式,这样就能在 Easydict 中使用了。

AnaheimEX commented 1 month ago

对于一些不兼容 OpenAI 接口的服务,可通过 one-api 等第三方开源项目,将其转换为标准的 OpenAI 接口格式,这样就能在 Easydict 中使用了。

感谢大大回复,关于兼容的问题,我在阿里的文档上看到有提。

为支持广大开发者使用熟悉的OpenAI接口来访问DashScope上的API服务,DashScope提供了与OpenAI兼容的接口。用户只需要配置DashScope的API key以及服务endpoint,即可通过OpenAI API以及SDK来访问DashScope上托管的模型服务。

是不是直接在OpenAI服务下填写阿里的OpenAI兼容接口的API地址和阿里模型的key就可以吧?

tisfeng commented 1 month ago

看了一下文档,阿里前两天也做了 OpenAI 接口兼容,这是好事。(不兼容 OpenAI 格式的 LLM 服务都是异端 🙄)

但感觉他们很仓促,明显没有经过足够测试,没有严格遵守 标准 OpenAI 接口

stream 接口的 finish_reason 字段返回数据格式不对,要么应该是 stop 或 length 等枚举,要么是 null,不应该是字符串 "null",这可能会导致解析错误。

data:{"choices":[{"delta":{"content":"我是","role":"assistant"},"finish_reason":"null","index":0,"logprobs":null}],"object":"chat.completion.chunk","created":1715562574,"system_fingerprint":"","model":"qwen-turbo","id":"chatcmpl-a1e2281f5d759fecb1557c266a62b843"}

image
tisfeng commented 1 month ago

目前阿里的接口直接在 Easydict 中使用,会出现格式解析错误,建议向阿里那边多多反馈,给他们上点压力。

建议大家部署 one-api ,一劳永逸。

如果 one-api 出现问题,对于开源项目,可以去提 issue 反馈,有能力还可以自己去修复顺便 PR,对于这种大厂黑盒服务,先不说他们会不会接受反馈,即使接受,修复可能也不会那么及时,一套流程走下来等几个月也是常规操作 🫠

image
AnaheimEX commented 1 month ago

目前阿里的接口直接在 Easydict 中使用,会出现格式解析错误,建议向阿里那边多多反馈,给他们上点压力。

建议大家部署 one-api ,一劳永逸。

如果 one-api 出现问题,对于开源项目,可以去提 issue 反馈,有能力还可以自己去修复顺便 PR,对于这种大厂黑盒服务,先不说他们会不会接受反馈,即使接受,修复可能也不会那么及时,一套流程走下来等几个月也是常规操作 🫠

image

感谢测试,我昨天找了一家第三方卖API的用他们的API地址然后填写我在阿里申请的key,正常用上了23333 不过为了用OpenAI Claude3之类的我也要买第三方的API。。。

tisfeng commented 1 month ago

其实大部份这种第三方 LLM 服务都是用 one-api 搭建的,我自己也搭了一个, Easydict 内置 AI 翻译支持各种模型,就是这样实现的。