assistant: Fix issue when using inline assistant with Gemini models (#29407)

Bennet Bo Fenner created

Closes #29020

Release Notes:

- assistant: Fix issue when using inline assistant with Gemini models

Change summary

crates/assistant_context_editor/src/context.rs |  4 ++
crates/language_models/src/provider/google.rs  | 21 +++++++++++++------
2 files changed, 17 insertions(+), 8 deletions(-)

Detailed changes

crates/assistant_context_editor/src/context.rs 🔗

@@ -2611,7 +2611,9 @@ impl AssistantContext {
                     .map(MessageContent::Text),
             );
 
-            completion_request.messages.push(request_message);
+            if !request_message.contents_empty() {
+                completion_request.messages.push(request_message);
+            }
         }
 
         if let RequestType::SuggestEdits = request_type {

crates/language_models/src/provider/google.rs 🔗

@@ -442,13 +442,20 @@ pub fn into_google(
         contents: request
             .messages
             .into_iter()
-            .map(|message| google_ai::Content {
-                parts: map_content(message.content),
-                role: match message.role {
-                    Role::User => google_ai::Role::User,
-                    Role::Assistant => google_ai::Role::Model,
-                    Role::System => google_ai::Role::User, // Google AI doesn't have a system role
-                },
+            .filter_map(|message| {
+                let parts = map_content(message.content);
+                if parts.is_empty() {
+                    None
+                } else {
+                    Some(google_ai::Content {
+                        parts,
+                        role: match message.role {
+                            Role::User => google_ai::Role::User,
+                            Role::Assistant => google_ai::Role::Model,
+                            Role::System => google_ai::Role::User, // Google AI doesn't have a system role
+                        },
+                    })
+                }
             })
             .collect(),
         generation_config: Some(google_ai::GenerationConfig {