summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-08-09 16:47:17 +0800
committerGitHub <noreply@github.com>2024-08-09 16:47:17 +0800
commit92ce440b0bc8fd72b4c35f8500a8e10b488001b1 (patch)
treee92068303593ebab5f1adff4e7ecb6d7331f2f2b
parent5c559f616a79b5bcc86b080a9cc914cace8cedef (diff)
downloadaichat-92ce440b0bc8fd72b4c35f8500a8e10b488001b1.tar.gz
fix: claude fails to run tools with zero arguments (#780)
-rw-r--r--src/client/claude.rs10
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,