songquanpeng / one-api

OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用. OpenAI key management & redistribution system, using a single API for all LLMs, and features an English UI.
https://openai.justsong.cn/
MIT License
19.23k stars 4.3k forks source link

请求增加 Together AI 渠道 #1298

Open axdlee opened 7 months ago

axdlee commented 7 months ago

例行检查

功能描述

应用场景

songquanpeng commented 7 months ago

这个我看了是兼容的,直接用 OpenAI 渠道,改掉 base url 即可

tisfeng commented 6 months ago

有点问题,虽然 Together AI 看起来兼容 OpenAI,但它的官方接口最后一个结束的 finish_reason 是 eos,而不是标准的 stop,这可能会导致在一些第三方应用中数据解析报错。

这是我在 Easydict 中的测试:

[BaseOpenAIService ● 89 ● ❌] translate(:from:to:completion:) ● 自定义 OpenAI 翻译-(Qwen/Qwen1.5-14B-Chat) error: 未能读取数据,因为它的格式不正确。 [BaseOpenAIService ● 90 ● ❌] translate(:from:to:completion:) ● dataCorrupted(Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "choices", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "finish_reason", intValue: nil)], debugDescription: "Cannot initialize FinishReason from invalid String value eos", underlyingError: nil))

image image
tisfeng commented 6 months ago

可以考虑单独加个 Together AI 渠道,处理一下 eos 问题。

如果认为 finish_reason 应严格遵守 OpenAI 接口,那直接修改默认 OpenAI 渠道的 finish_reason 字段也行,看如何考虑了。

tisfeng commented 6 months ago

这个是 Together AI 接口问题,我已经向官方反馈过了,但不清楚是 feature 还是 bug,也不确定他们是否会注意到或者修复。

one-api 作为一个优秀的聚合中转服务,我觉得我们还是应该处理一下,增加容错。

tisfeng commented 6 months ago

看了一下,新加的 Together AI 似乎没有额外处理 finish_reason 为 eos 问题 https://github.com/songquanpeng/one-api/commit/71f4403fd51d0a83cb6e8fb792fcaee562173199