diff options
| author | sigoden <sigoden@gmail.com> | 2024-08-09 16:47:17 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-09 16:47:17 +0800 |
| commit | 92ce440b0bc8fd72b4c35f8500a8e10b488001b1 (patch) | |
| tree | e92068303593ebab5f1adff4e7ecb6d7331f2f2b /src/client/claude.rs | |
| parent | 5c559f616a79b5bcc86b080a9cc914cace8cedef (diff) | |
| download | aichat-92ce440b0bc8fd72b4c35f8500a8e10b488001b1.tar.gz | |
fix: claude fails to run tools with zero arguments (#780)
Diffstat (limited to 'src/client/claude.rs')
| -rw-r--r-- | src/client/claude.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/client/claude.rs b/src/client/claude.rs index d8046a9..8811476 100644 --- a/src/client/claude.rs +++ b/src/client/claude.rs @@ -114,9 +114,13 @@ pub async fn claude_chat_completions_streaming( } "content_block_stop" => { if !function_name.is_empty() { - let arguments: Value = function_arguments.parse().with_context(|| { - format!("Tool call '{function_name}' is invalid: arguments must be in valid JSON format") - })?; + let arguments: Value = if function_arguments.is_empty() { + json!({}) + } else { + function_arguments.parse().with_context(|| { + format!("Tool call '{function_name}' is invalid: arguments must be in valid JSON format") + })? + }; handler.tool_call(ToolCall::new( function_name.clone(), arguments, |
