MartialBE / one-hub

OpenAI 接口管理 & 分发系统,改自songquanpeng/one-api。支持更多模型,加入统计页面,完善非openai模型的函数调用。
https://one-api-martialbe.vercel.app/
Apache License 2.0
996 stars 197 forks source link

✨ feat: support gpt4free #327

Closed kalicyh closed 3 weeks ago

kalicyh commented 1 month ago

close #issue_number

我已确认该 PR 已自测通过,相关截图如下:

MartialBE commented 1 month ago

我并不想为单独的渠道做一个格式兼容。 如果后期还有其他请求接口不一致,这里的判断将会无限增加。 我想了两个方案:

  1. 使用baseURL填写的地址请求,不再拼接。 例如:我设置other为onlyBaseURL。那么直接返回baseURL填写的地址。 不再做后续的拼接处理。
  2. 使用占位符替换。 固定占位符{uri}表示具体的path。 例如: baseURL填写为:https://xxx.com/{uri}?provider=openai

检测到other为placeholder时替换uri

https://xxx.com/v1/chat/completions?provider=OpenAI

kalicyh commented 1 month ago

我并不想为单独的渠道做一个格式兼容。 如果升级还有其他请求接口不一致,这里的判断将会无限增加。 我想了两种方案:

  1. 使用baseURL填写的地址请求,不再进行拼接。 例如:我设置other为onlyBaseURL。然后直接返回baseURL填写的地址。不再做后续的拼接处理。
  2. 使用占位符替换。 固定占位符{uri}表示具体的路径。 例如: baseURL填写为:https://xxx.com/{uri}?provider={0}&arg={1}

other设置为Placeholder:OpenAI,arg1

在处理时,检测到其他出口为占位符时,分割字符串,按照排序替换。

https://xxx.com/v1/chat/completions?provider=OpenAI&arg=arg1

那我改改?

MartialBE commented 1 month ago

可以的~ 你可以看你需求。 直接onlybase这种最方便,但是一个渠道只能创建一种方法。 占位符灵活,需要解析一下。 你有更好的方案也可以提出。

MartialBE commented 1 month ago

emmm 等等 我发现我昨天晚上脑子没转过来。 占位符 只要替换{uri} 就好了。 参数直接往上填写。 干嘛要替换...

MartialBE commented 3 weeks ago

329