diff options
| author | sigoden <sigoden@gmail.com> | 2024-06-28 07:11:20 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-28 07:11:20 +0800 |
| commit | 8b8f8b37c35479f747a70a65f069c0d8d4b01dcf (patch) | |
| tree | 35a235d09289357373e4235789fcbda1da57a404 /src/client/vertexai.rs | |
| parent | 4fbbbd2d991b37ac04b77151ef862de9649bbfec (diff) | |
| download | aichat-8b8f8b37c35479f747a70a65f069c0d8d4b01dcf.tar.gz | |
fix: gemini with functions that have empty parameters (#666)
Diffstat (limited to 'src/client/vertexai.rs')
| -rw-r--r-- | src/client/vertexai.rs | 13 |
1 files changed, 12 insertions, 1 deletions
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) |
