Parcourir la source

fix: disable_parallel_tool_use parameter should be removed for tool_choice=none:

Seefs il y a 1 mois
Parent
commit
41b33e85db
1 fichiers modifiés avec 6 ajouts et 3 suppressions
  1. 6 3
      relay/channel/claude/relay-claude.go

+ 6 - 3
relay/channel/claude/relay-claude.go

@@ -838,9 +838,12 @@ func mapToolChoice(toolChoice any, parallelToolCalls *bool) *dto.ClaudeToolChoic
 			}
 		}
 
-		// 设置 disable_parallel_tool_use
-		// 如果 parallel_tool_calls 为 true,则 disable_parallel_tool_use 为 false
-		claudeToolChoice.DisableParallelToolUse = !*parallelToolCalls
+		// Anthropic schema: tool_choice.type=none does not accept extra fields.
+		// When tools are disabled, parallel_tool_calls is irrelevant, so we drop it.
+		if claudeToolChoice.Type != "none" {
+			// 如果 parallel_tool_calls 为 true,则 disable_parallel_tool_use 为 false
+			claudeToolChoice.DisableParallelToolUse = !*parallelToolCalls
+		}
 	}
 
 	return claudeToolChoice