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", }