Browse Source

feat: support gemini-2.0-flash-thinking #639 #637

CalciumIon 1 year ago
parent
commit
9a54b345c5

+ 2 - 0
controller/channel-test.go

@@ -153,6 +153,8 @@ func buildTestRequest(model string) *dto.GeneralOpenAIRequest {
 	}
 	if strings.HasPrefix(model, "o1-") {
 		testRequest.MaxCompletionTokens = 1
+	} else if strings.HasPrefix(model, "gemini-2.0-flash-thinking") {
+		testRequest.MaxTokens = 2
 	} else {
 		testRequest.MaxTokens = 1
 	}

+ 2 - 1
relay/channel/gemini/constant.go

@@ -7,8 +7,9 @@ const (
 var ModelList = []string{
 	"gemini-1.5-pro-latest", "gemini-1.5-flash-latest",
 	"gemini-1.5-pro-exp-0827", "gemini-1.5-flash-exp-0827",
-	"gemini-exp-1114", "gemini-exp-1206",
+	"gemini-exp-1114", "gemini-exp-1121", "gemini-exp-1206",
 	"gemini-2.0-flash-exp",
+	"gemini-2.0-flash-thinking-exp-1219",
 }
 
 var ChannelName = "google gemini"

+ 11 - 2
relay/channel/gemini/relay-gemini.go

@@ -4,7 +4,6 @@ import (
 	"bufio"
 	"encoding/json"
 	"fmt"
-	"github.com/gin-gonic/gin"
 	"io"
 	"net/http"
 	"one-api/common"
@@ -13,6 +12,8 @@ import (
 	relaycommon "one-api/relay/common"
 	"one-api/service"
 	"strings"
+
+	"github.com/gin-gonic/gin"
 )
 
 // Setting safety to the lowest possible values since Gemini is already powerless enough
@@ -36,6 +37,10 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest) *GeminiChatReques
 				Category:  "HARM_CATEGORY_DANGEROUS_CONTENT",
 				Threshold: common.GeminiSafetySetting,
 			},
+			{
+				Category:  "HARM_CATEGORY_CIVIC_INTEGRITY",
+				Threshold: common.GeminiSafetySetting,
+			},
 		},
 		GenerationConfig: GeminiChatGenerationConfig{
 			Temperature:     textRequest.Temperature,
@@ -215,7 +220,11 @@ func responseGeminiChat2OpenAI(response *GeminiChatResponse) *dto.OpenAITextResp
 				choice.FinishReason = constant.FinishReasonToolCalls
 				choice.Message.ToolCalls = getToolCalls(&candidate)
 			} else {
-				choice.Message.SetStringContent(candidate.Content.Parts[0].Text)
+				var texts []string
+				for _, part := range candidate.Content.Parts {
+					texts = append(texts, part.Text)
+				}
+				choice.Message.SetStringContent(strings.Join(texts, "\n"))
 			}
 		}
 		fullTextResponse.Choices = append(fullTextResponse.Choices, choice)

+ 1 - 1
web/src/pages/Redemption/EditRedemption.js

@@ -71,7 +71,7 @@ const EditRedemption = (props) => {
     let name = inputs.name;
     if (!isEdit && inputs.name === '') {
       // set default name
-      name = t('新建兑换码') + ' ' + renderQuota(quota);
+      name = renderQuota(quota);
     }
     setLoading(true);
     let localInputs = inputs;