Jelajahi Sumber

Merge pull request #2765 from seefs001/fix/2763

fix: remove disable_parallel_tool_use if tool_choice=none
Calcium-Ion 1 bulan lalu
induk
melakukan
8d5ac479f5
1 mengubah file dengan 6 tambahan dan 3 penghapusan
  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