Parcourir la source

feat: enable thoughtSignature for non-function-call messages

Previously thoughtSignature was only attached to messages with function
calls. This change extends the feature to also attach thoughtSignature
to the first text part of assistant/model messages when no tool_calls
are present, ensuring compatibility with Gemini thinking models in
regular conversation scenarios.
Claude il y a 3 mois
Parent
commit
25aed08361
1 fichiers modifiés avec 11 ajouts et 0 suppressions
  1. 11 0
      relay/channel/gemini/relay-gemini.go

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

@@ -484,6 +484,17 @@ func CovertOpenAI2Gemini(c *gin.Context, textRequest dto.GeneralOpenAIRequest, i
 			}
 		}
 
+		// 如果需要附加签名但还没有附加(没有 tool_calls 或 tool_calls 为空),
+		// 则在第一个文本 part 上附加 thoughtSignature
+		if shouldAttachThoughtSignature && !signatureAttached && len(parts) > 0 {
+			for i := range parts {
+				if parts[i].Text != "" {
+					parts[i].ThoughtSignature = json.RawMessage(strconv.Quote(thoughtSignatureBypassValue))
+					break
+				}
+			}
+		}
+
 		content.Parts = parts
 
 		// there's no assistant role in gemini and API shall vomit if Role is not user or model