소스 검색

feat: Add GEMINI_VISION_MAX_IMAGE_NUM configuration

- Introduced `GEMINI_VISION_MAX_IMAGE_NUM` to README files for better user guidance.
- Updated `env.go` to retrieve the maximum image number from environment variables, defaulting to 16.
- Modified image handling logic in `relay-gemini.go` to respect the new configuration, allowing disabling of the limit by setting it to -1.
- Removed hardcoded constant for maximum image number in `constant.go` to streamline configuration management.
CalciumIon 1 년 전
부모
커밋
f9a7f6085e
5개의 변경된 파일8개의 추가작업 그리고 7개의 파일을 삭제
  1. 1 0
      README.en.md
  2. 1 0
      README.md
  3. 2 0
      constant/env.go
  4. 0 4
      relay/channel/gemini/constant.go
  5. 4 3
      relay/channel/gemini/relay-gemini.go

+ 1 - 0
README.en.md

@@ -81,6 +81,7 @@ You can add custom models gpt-4-gizmo-* in channels. These are third-party model
 - `UPDATE_TASK`: Update async tasks (Midjourney, Suno), default `true`
 - `GEMINI_MODEL_MAP`: Specify Gemini model versions (v1/v1beta), format: "model:version", comma-separated
 - `COHERE_SAFETY_SETTING`: Cohere model [safety settings](https://docs.cohere.com/docs/safety-modes#overview), options: `NONE`, `CONTEXTUAL`, `STRICT`, default `NONE`
+- `GEMINI_VISION_MAX_IMAGE_NUM`: Gemini model maximum image number, default `16`, set to `-1` to disable
 
 ## Deployment
 > [!TIP]

+ 1 - 0
README.md

@@ -87,6 +87,7 @@
 - `UPDATE_TASK`:是否更新异步任务(Midjourney、Suno),默认为 `true`,关闭后将不会更新任务进度。
 - `GEMINI_MODEL_MAP`:Gemini模型指定版本(v1/v1beta),使用“模型:版本”指定,","分隔,例如:-e GEMINI_MODEL_MAP="gemini-1.5-pro-latest:v1beta,gemini-1.5-pro-001:v1beta",为空则使用默认配置(v1beta)
 - `COHERE_SAFETY_SETTING`:Cohere模型[安全设置](https://docs.cohere.com/docs/safety-modes#overview),可选值为 `NONE`, `CONTEXTUAL`,`STRICT`,默认为 `NONE`。
+- `GEMINI_VISION_MAX_IMAGE_NUM`:Gemini模型最大图片数量,默认为 `16`,设置为 `-1` 则不限制。
 ## 部署
 > [!TIP]
 > 最新版Docker镜像:`calciumion/new-api:latest`  

+ 2 - 0
constant/env.go

@@ -23,6 +23,8 @@ var GeminiModelMap = map[string]string{
 	"gemini-1.0-pro": "v1",
 }
 
+var GeminiVisionMaxImageNum = common.GetEnvOrDefault("GEMINI_VISION_MAX_IMAGE_NUM", 16)
+
 func InitEnv() {
 	modelVersionMapStr := strings.TrimSpace(os.Getenv("GEMINI_MODEL_MAP"))
 	if modelVersionMapStr == "" {

+ 0 - 4
relay/channel/gemini/constant.go

@@ -1,9 +1,5 @@
 package gemini
 
-const (
-	GeminiVisionMaxImageNum = 16
-)
-
 var ModelList = []string{
 	// stable version
 	"gemini-1.5-pro", "gemini-1.5-flash", "gemini-1.5-flash-8b",

+ 4 - 3
relay/channel/gemini/relay-gemini.go

@@ -108,9 +108,10 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest) *GeminiChatReques
 				})
 			} else if part.Type == dto.ContentTypeImageURL {
 				imageNum += 1
-				//if imageNum > GeminiVisionMaxImageNum {
-				//	continue
-				//}
+
+				if constant.GeminiVisionMaxImageNum != -1 && imageNum > constant.GeminiVisionMaxImageNum {
+					continue
+				}
 				// 判断是否是url
 				if strings.HasPrefix(part.ImageUrl.(dto.MessageImageUrl).Url, "http") {
 					// 是url,获取图片的类型和base64编码的数据