diff --git a/internal/runtime/executor/claude_executor.go b/internal/runtime/executor/claude_executor.go index 8d8c62c6..c9665385 100644 --- a/internal/runtime/executor/claude_executor.go +++ b/internal/runtime/executor/claude_executor.go @@ -45,6 +45,7 @@ func (e *ClaudeExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, r } from := opts.SourceFormat to := sdktranslator.FromString("claude") + // Use streaming translation to preserve function calling, except for claude. body := sdktranslator.TranslateRequest(from, to, req.Model, bytes.Clone(req.Payload), from != to) if !strings.HasPrefix(req.Model, "claude-3-5-haiku") {