one-api 支持代理URL路径不包含v1的模型

l7mqbcuq  于 4个月前  发布在  其他
关注(0)|答案(6)|浏览(62)

例行检查

  • 我已确认目前没有类似问题
  • 我已确认我已升级到最新版本
  • 我已完整查看过项目 README,已确定现有版本无法满足需求
  • 我理解并愿意跟进此问题,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的问题可能会被无视或直接关闭
    功能描述

能否支持代理url路径不含v1的模型?比如部署的模型的访问路径是 http://xxx.com/chat/completions ,但目前one-api无论是OpenAI渠道还是自定义渠道,都会访问 http://xxx.com/v1/chat/completions ,路径包含了多余的v1。

mdfafbf1

mdfafbf11#

有v1才是标准接口,不应该去迁就非标准吧。

svgewumm

svgewumm2#

我并不是想要抛弃目前的v1标准接口,而是同时兼容其他不带有v1路径的接口。有很多外部模型不是openai标准一模一样的接口,比如本项目目前已适配的AzureOpenAI、Minimax、CloudFlare等等。具体的实现方式,比如可以在“自定义渠道”里加个选项,在此GetFullRequestURL函数中判断一下是否删除v1前缀即可。

one-api/relay/adaptor/openai/helper.go
Lines 18 to 30 in 9321427
| func GetFullRequestURL(baseURL string, requestURL string, channelType int) string { |
| fullRequestURL:=fmt.Sprintf("%s%s", baseURL, requestURL) |
| |
| if strings.HasPrefix(baseURL, "https://gateway.ai.cloudflare.com") { |
| switch channelType { |
| case channeltype.OpenAI: |
| fullRequestURL=fmt.Sprintf("%s%s", baseURL, strings.TrimPrefix(requestURL, "/v1")) |
| case channeltype.Azure: |
| fullRequestURL=fmt.Sprintf("%s%s", baseURL, strings.TrimPrefix(requestURL, "/openai/deployments")) |
| } |
| } |
| return fullRequestURL |
| } |

4bbkushb

4bbkushb3#

也许可以采用更通用的方法,支持使用特定渠道的URL来覆盖requestURL,这样可以同时解决#1472的问题。

gjmwrych

gjmwrych4#

个人感觉自定义渠道那个地方应该改成自定义完整的请求路径,但是这个做法没有一个完善的方案,因为不兼容openai路径的请求模型,我相信也不兼容openai的请求格式。

w1jd8yoj

w1jd8yoj5#

我希望这个也能添加上,现在有越来越多的网站使用OpenAI格式,但是使用的是类似/api/chat/completions或/something/chat/completions的接口。

mfuanj7w

mfuanj7w6#

这个有谁知 prop 体在哪个文件里修改么,就是自定义渠道的话自动去掉 v1?我想先自行修改了好使用。

相关问题