fix(gemini): normalize mixed tools for same-format providers

This commit is contained in:
ZheFox
2026-08-29 01:08:01 +08:00
parent 9461b1004f
commit 1bc2287baa
3 changed files with 88 additions and 0 deletions
@@ -218,6 +218,18 @@ fn enable_server_side_tool_invocations_for_mixed_tools(
if !gemini_model_supports_mixed_tools(mapped_model) {
return None;
}
ensure_server_side_tool_invocations_for_mixed_tools(output)
}
pub fn ensure_server_side_tool_invocations_for_mixed_tools(output: &mut Value) -> Option<()> {
let output_object = output.as_object_mut()?;
let tools = output_object.get("tools").and_then(Value::as_array);
let Some(tools) = tools else {
return Some(());
};
if !gemini_tools_are_mixed(tools) {
return Some(());
}
let tool_config = output_object
.entry("toolConfig".to_string())
+1
View File
@@ -12,6 +12,7 @@ pub use formats::context::{
ConversionFieldRecord, ConversionFieldStatus, ConversionReport, Converted, FormatContext,
FormatError,
};
pub use formats::gemini::generate_content::request::ensure_server_side_tool_invocations_for_mixed_tools;
pub use formats::id::{
api_format_alias_matches, api_format_defaults_to_client_error_failover,
api_format_defaults_to_non_stream, api_format_permission_covers,