diff --git a/relay/channel/claude/relay-claude.go b/relay/channel/claude/relay-claude.go index a17dc75e8..f9f4d4d09 100644 --- a/relay/channel/claude/relay-claude.go +++ b/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