From 5d96f7b2cc82bd2299ec939c0ea03553a6d9b48e Mon Sep 17 00:00:00 2001 From: leezhuuuuu Date: Sat, 16 Nov 2024 21:29:35 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E4=BA=8Egemini-?= =?UTF-8?q?exp-1114=E6=A8=A1=E5=9E=8B=E7=9A=84=E6=94=AF=E6=8C=81=EF=BC=8C?= =?UTF-8?q?=E6=98=A0=E5=B0=84=E5=88=B0v1beta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(gemini): add support for gemini-exp-1114 model - Add gemini-exp-1114 to ModelList in constant.go - Update GetRequestURL in adaptor.go to use v1beta API version for gemini-exp-1114 - Keep backward compatibility for other models This change enables the use of the experimental gemini-exp-1114 model by correctly routing its requests to the v1beta API endpoint while maintaining existing functionality for other models. --- relay/channel/gemini/adaptor.go | 23 ++++++++++++++++------- relay/channel/gemini/constant.go | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/relay/channel/gemini/adaptor.go b/relay/channel/gemini/adaptor.go index 437efcc..d466caf 100644 --- a/relay/channel/gemini/adaptor.go +++ b/relay/channel/gemini/adaptor.go @@ -30,13 +30,22 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo) { } func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { - // 从映射中获取模型名称对应的版本,如果找不到就使用 info.ApiVersion 或默认的版本 "v1" - version, beta := constant.GeminiModelMap[info.UpstreamModelName] - if !beta { - if info.ApiVersion != "" { - version = info.ApiVersion - } else { - version = "v1" + var version string + + // 为特定模型指定版本 + switch info.UpstreamModelName { + case "gemini-exp-1114": + version = "v1beta" + default: + // 从映射中获取模型名称对应的版本,如果找不到就使用 info.ApiVersion 或默认的版本 "v1" + var beta bool + version, beta = constant.GeminiModelMap[info.UpstreamModelName] + if !beta { + if info.ApiVersion != "" { + version = info.ApiVersion + } else { + version = "v1" + } } } diff --git a/relay/channel/gemini/constant.go b/relay/channel/gemini/constant.go index 4a2e4dd..5f189f3 100644 --- a/relay/channel/gemini/constant.go +++ b/relay/channel/gemini/constant.go @@ -7,6 +7,7 @@ const ( var ModelList = []string{ "gemini-1.0-pro-latest", "gemini-1.0-pro-001", "gemini-1.5-pro-latest", "gemini-1.5-flash-latest", "gemini-ultra", "gemini-1.0-pro-vision-latest", "gemini-1.0-pro-vision-001", "gemini-1.5-pro-exp-0827", "gemini-1.5-flash-exp-0827", + "gemini-exp-1114", } var ChannelName = "google gemini" From 4601932902f8b873de5528ac256833c4025c4e5d Mon Sep 17 00:00:00 2001 From: leezhuuuuu Date: Sat, 16 Nov 2024 21:52:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=20feat:=20add=20support=20for=20gemini-exp?= =?UTF-8?q?-1114=20model=20/=20=E6=B7=BB=E5=8A=A0=20gemini-exp-1114=20?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # feat: add support for gemini-exp-1114 model / 添加 gemini-exp-1114 模型支持 ## Changes / 更改内容 - Add gemini-exp-1114 to ModelList in constant.go - Add gemini-exp-1114 to GeminiModelMap with v1beta API version - 在 constant.go 的 ModelList 中添加 gemini-exp-1114 模型 - 在 GeminiModelMap 中添加 gemini-exp-1114 的 v1beta API 版本映射 ## Testing / 测试情况 - [x] Tested gemini-exp-1114 model API calls / 已测试 gemini-exp-1114 模型的 API 调用 - [x] Verified existing models still work / 验证现有模型仍然正常工作 - [x] Confirmed v1beta API version works correctly / 确认 v1beta API 版本正常工作 ## Related Issues / 相关问题 - Fix 404 error when calling gemini-exp-1114 model / 修复调用 gemini-exp-1114 模型时的 404 错误 ## Implementation Details / 实现细节 - Use configuration-based approach instead of code modification / 使用基于配置的方式而不是修改代码 - Maintain clean separation of concerns / 保持关注点分离 - Keep backward compatibility / 保持向后兼容性 ## Notes / 注意事项 - This PR follows the principle of minimal invasion / 本 PR 遵循最小侵入原则 - Configuration changes only / 仅包含配置更改 --- constant/env.go | 1 + relay/channel/gemini/adaptor.go | 23 +++++++---------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/constant/env.go b/constant/env.go index 6bab4be..a96d115 100644 --- a/constant/env.go +++ b/constant/env.go @@ -30,6 +30,7 @@ var GeminiModelMap = map[string]string{ "gemini-1.5-flash-001": "v1beta", "gemini-1.5-flash": "v1beta", "gemini-ultra": "v1beta", + "gemini-exp-1114": "v1beta", } func InitEnv() { diff --git a/relay/channel/gemini/adaptor.go b/relay/channel/gemini/adaptor.go index d466caf..437efcc 100644 --- a/relay/channel/gemini/adaptor.go +++ b/relay/channel/gemini/adaptor.go @@ -30,22 +30,13 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo) { } func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { - var version string - - // 为特定模型指定版本 - switch info.UpstreamModelName { - case "gemini-exp-1114": - version = "v1beta" - default: - // 从映射中获取模型名称对应的版本,如果找不到就使用 info.ApiVersion 或默认的版本 "v1" - var beta bool - version, beta = constant.GeminiModelMap[info.UpstreamModelName] - if !beta { - if info.ApiVersion != "" { - version = info.ApiVersion - } else { - version = "v1" - } + // 从映射中获取模型名称对应的版本,如果找不到就使用 info.ApiVersion 或默认的版本 "v1" + version, beta := constant.GeminiModelMap[info.UpstreamModelName] + if !beta { + if info.ApiVersion != "" { + version = info.ApiVersion + } else { + version = "v1" } }