From 8b8f8b37c35479f747a70a65f069c0d8d4b01dcf Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 28 Jun 2024 07:11:20 +0800 Subject: fix: gemini with functions that have empty parameters (#666) --- src/client/vertexai.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/client/vertexai.rs') diff --git a/src/client/vertexai.rs b/src/client/vertexai.rs index cc7e464..a4c4050 100644 --- a/src/client/vertexai.rs +++ b/src/client/vertexai.rs @@ -353,7 +353,18 @@ pub fn gemini_build_chat_completions_body( } if let Some(functions) = functions { - body["tools"] = json!([{ "functionDeclarations": *functions }]); + // Gemini doesn't support functions with parameters that have empty properties, so we need to patch it. + let function_declarations: Vec<_> = functions.into_iter().map(|function| { + if function.parameters.is_empty_properties() { + json!({ + "name": function.name, + "description": function.description, + }) + } else { + json!(function) + } + }).collect(); + body["tools"] = json!([{ "functionDeclarations": function_declarations }]); } Ok(body) -- cgit v1.2.3