@@ -255,11 +255,13 @@ func sanitizeOpenAIRequestBody(modelName string, reqBody map[string]interface{})
255255 }
256256 out ["top_p" ] = 0.95
257257 }
258+ }
259+ if openAIModelRequiresToolCallReasoningContent (modelName ) {
258260 messages := reqBody ["messages" ]
259261 if out != nil {
260262 messages = out ["messages" ]
261263 }
262- if normalized , changed := normalizeKimiToolCallMessages (messages ); changed {
264+ if normalized , changed := normalizeToolCallReasoningContentMessages (messages ); changed {
263265 if out == nil {
264266 out = cloneOpenAIRequestBody (reqBody )
265267 }
@@ -290,13 +292,20 @@ func openAIModelRequiresTemperatureOne(modelName string) bool {
290292 return strings .HasPrefix (modelName , "kimi-" ) || strings .HasPrefix (modelName , "moonshot-" )
291293}
292294
293- func normalizeKimiToolCallMessages (messages interface {}) (interface {}, bool ) {
295+ func openAIModelRequiresToolCallReasoningContent (modelName string ) bool {
296+ modelName = strings .TrimSpace (strings .ToLower (modelName ))
297+ return strings .HasPrefix (modelName , "kimi-" ) ||
298+ strings .HasPrefix (modelName , "moonshot-" ) ||
299+ strings .Contains (modelName , "deepseek-v4" )
300+ }
301+
302+ func normalizeToolCallReasoningContentMessages (messages interface {}) (interface {}, bool ) {
294303 switch v := messages .(type ) {
295304 case []map [string ]interface {}:
296305 out := make ([]map [string ]interface {}, len (v ))
297306 changed := false
298307 for i , msg := range v {
299- next , msgChanged := normalizeKimiToolCallMessageMap (msg )
308+ next , msgChanged := normalizeToolCallReasoningContentMessageMap (msg )
300309 out [i ] = next
301310 changed = changed || msgChanged
302311 }
@@ -312,7 +321,7 @@ func normalizeKimiToolCallMessages(messages interface{}) (interface{}, bool) {
312321 out [i ] = item
313322 continue
314323 }
315- next , msgChanged := normalizeKimiToolCallMessageMap (msg )
324+ next , msgChanged := normalizeToolCallReasoningContentMessageMap (msg )
316325 out [i ] = next
317326 changed = changed || msgChanged
318327 }
@@ -339,7 +348,7 @@ func normalizeKimiToolCallMessages(messages interface{}) (interface{}, bool) {
339348 if msg .ReasoningContent != "" {
340349 next ["reasoning_content" ] = msg .ReasoningContent
341350 }
342- normalized , msgChanged := normalizeKimiToolCallMessageMap (next )
351+ normalized , msgChanged := normalizeToolCallReasoningContentMessageMap (next )
343352 out [i ] = normalized
344353 changed = changed || msgChanged
345354 }
@@ -350,7 +359,7 @@ func normalizeKimiToolCallMessages(messages interface{}) (interface{}, bool) {
350359 return messages , false
351360}
352361
353- func normalizeKimiToolCallMessageMap (msg map [string ]interface {}) (map [string ]interface {}, bool ) {
362+ func normalizeToolCallReasoningContentMessageMap (msg map [string ]interface {}) (map [string ]interface {}, bool ) {
354363 if strings .TrimSpace (fmt .Sprint (msg ["role" ])) != "assistant" {
355364 return msg , false
356365 }
0 commit comments