diff --git a/crates/language_models/src/provider/google.rs b/crates/language_models/src/provider/google.rs index b5751bb359..279556e5a8 100644 --- a/crates/language_models/src/provider/google.rs +++ b/crates/language_models/src/provider/google.rs @@ -507,12 +507,18 @@ impl GoogleEventMapper { events: Pin>>>, ) -> impl Stream> { - events.flat_map(move |event| { - futures::stream::iter(match event { - Ok(event) => self.map_event(event), - Err(error) => vec![Err(LanguageModelCompletionError::Other(anyhow!(error)))], + events + .map(Some) + .chain(futures::stream::once(async { None })) + .flat_map(move |event| { + futures::stream::iter(match event { + Some(Ok(event)) => self.map_event(event), + Some(Err(error)) => { + vec![Err(LanguageModelCompletionError::Other(anyhow!(error)))] + } + None => vec![Ok(LanguageModelCompletionEvent::Stop(self.stop_reason))], + }) }) - }) } pub fn map_event( @@ -578,7 +584,6 @@ impl GoogleEventMapper { if wants_to_use_tool { self.stop_reason = StopReason::ToolUse; } - events.push(Ok(LanguageModelCompletionEvent::Stop(self.stop_reason))); events } }