From 21250a46a615e38fbb34a83d4acc75bfa2b8b8b1 Mon Sep 17 00:00:00 2001 From: Maple Gao Date: Mon, 15 Apr 2024 14:19:19 +0800 Subject: [PATCH 1/4] feat: support google v1beta and Gemini Ultra --- common/model-ratio.go | 1 + relay/channel/gemini/adaptor.go | 30 +++++++++++++++++++++--------- relay/channel/gemini/constant.go | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/common/model-ratio.go b/common/model-ratio.go index 3f9f86c..d45ec11 100644 --- a/common/model-ratio.go +++ b/common/model-ratio.go @@ -77,6 +77,7 @@ var DefaultModelRatio = map[string]float64{ "gemini-1.0-pro-vision-001": 1, "gemini-1.0-pro-001": 1, "gemini-1.5-pro": 1, + "gemini-ultra": 1, "chatglm_turbo": 0.3572, // ¥0.005 / 1k tokens "chatglm_pro": 0.7143, // ¥0.01 / 1k tokens "chatglm_std": 0.3572, // ¥0.005 / 1k tokens diff --git a/relay/channel/gemini/adaptor.go b/relay/channel/gemini/adaptor.go index a275175..87c8da2 100644 --- a/relay/channel/gemini/adaptor.go +++ b/relay/channel/gemini/adaptor.go @@ -18,16 +18,28 @@ type Adaptor struct { func (a *Adaptor) Init(info *relaycommon.RelayInfo, request dto.GeneralOpenAIRequest) { } +// 定义一个映射,存储模型名称和对应的版本 +var modelVersionMap = map[string]string{ + "gemini-1.5-pro": "v1beta", + "gemini-ultra": "v1beta", +} + func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { - version := "v1" - if info.ApiVersion != "" { - version = info.ApiVersion - } - action := "generateContent" - if info.IsStream { - action = "streamGenerateContent" - } - return fmt.Sprintf("%s/%s/models/%s:%s", info.BaseUrl, version, info.UpstreamModelName, action), nil + // 从映射中获取模型名称对应的版本,如果找不到就使用 info.ApiVersion 或默认的版本 "v1" + version, beta := modelVersionMap[info.UpstreamModelName] + if !beta { + if info.ApiVersion != "" { + version = info.ApiVersion + } else { + version = "v1" + } + } + + action := "generateContent" + if info.IsStream { + action = "streamGenerateContent" + } + return fmt.Sprintf("%s/%s/models/%s:%s", info.BaseUrl, version, info.UpstreamModelName, action), nil } func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Request, info *relaycommon.RelayInfo) error { diff --git a/relay/channel/gemini/constant.go b/relay/channel/gemini/constant.go index 582f4c0..d5011c6 100644 --- a/relay/channel/gemini/constant.go +++ b/relay/channel/gemini/constant.go @@ -5,7 +5,7 @@ const ( ) var ModelList = []string{ - "gemini-pro", "gemini-1.0-pro-001", "gemini-1.5-pro", + "gemini-pro", "gemini-1.0-pro-001", "gemini-1.5-pro", "gemini-ultra", "gemini-pro-vision", "gemini-1.0-pro-vision-001", } From 3b6ea51033a5b0d2d229f583c143eb6cd6824f86 Mon Sep 17 00:00:00 2001 From: Maple Gao Date: Mon, 15 Apr 2024 14:22:40 +0800 Subject: [PATCH 2/4] fix: rename the latest Gemini model name --- relay/channel/gemini/constant.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/relay/channel/gemini/constant.go b/relay/channel/gemini/constant.go index d5011c6..5e833bc 100644 --- a/relay/channel/gemini/constant.go +++ b/relay/channel/gemini/constant.go @@ -5,8 +5,8 @@ const ( ) var ModelList = []string{ - "gemini-pro", "gemini-1.0-pro-001", "gemini-1.5-pro", "gemini-ultra", - "gemini-pro-vision", "gemini-1.0-pro-vision-001", + "gemini-1.0-pro-latest", "gemini-1.0-pro-001", "gemini-1.5-pro-latest", "gemini-ultra", + "gemini-1.0-pro-vision-latest", "gemini-1.0-pro-vision-001", } var ChannelName = "google gemini" From 1456992aae22f27fbadfa1f3a1bf91129dbfdf9e Mon Sep 17 00:00:00 2001 From: Maple Gao Date: Mon, 15 Apr 2024 14:25:44 +0800 Subject: [PATCH 3/4] add: new Gemini model default ratio --- common/model-ratio.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/model-ratio.go b/common/model-ratio.go index d45ec11..2d6ae6f 100644 --- a/common/model-ratio.go +++ b/common/model-ratio.go @@ -76,8 +76,10 @@ var DefaultModelRatio = map[string]float64{ "gemini-pro-vision": 1, // $0.00025 / 1k characters -> $0.001 / 1k tokens "gemini-1.0-pro-vision-001": 1, "gemini-1.0-pro-001": 1, - "gemini-1.5-pro": 1, - "gemini-ultra": 1, + "gemini-1.5-pro-latest": 1, + "gemini-1.0-pro-latest": 1, + "gemini-1.0-pro-vision-latest": 1, + "gemini-ultra": 1, "chatglm_turbo": 0.3572, // ¥0.005 / 1k tokens "chatglm_pro": 0.7143, // ¥0.01 / 1k tokens "chatglm_std": 0.3572, // ¥0.005 / 1k tokens From d7e117acf55f7ce2fd03141b7a9a401289d35a2f Mon Sep 17 00:00:00 2001 From: Maple Gao Date: Mon, 15 Apr 2024 14:27:18 +0800 Subject: [PATCH 4/4] fix: Gemini 1.5 name error --- relay/channel/gemini/adaptor.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relay/channel/gemini/adaptor.go b/relay/channel/gemini/adaptor.go index 87c8da2..daaadc5 100644 --- a/relay/channel/gemini/adaptor.go +++ b/relay/channel/gemini/adaptor.go @@ -20,7 +20,7 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo, request dto.GeneralOpenAIReq // 定义一个映射,存储模型名称和对应的版本 var modelVersionMap = map[string]string{ - "gemini-1.5-pro": "v1beta", + "gemini-1.5-pro-latest": "v1beta", "gemini-ultra": "v1beta", }