Only send Stop
event at end of google completion request (#29885)
I don't think this makes much of a difference in current use, but this more closely matches other providers and cleans up the "Response" section of eval markdown output Release Notes: - N/A
This commit is contained in:
parent
bb82d9ca82
commit
a0895a6ed8
1 changed files with 11 additions and 6 deletions
|
@ -507,12 +507,18 @@ impl GoogleEventMapper {
|
||||||
events: Pin<Box<dyn Send + Stream<Item = Result<GenerateContentResponse>>>>,
|
events: Pin<Box<dyn Send + Stream<Item = Result<GenerateContentResponse>>>>,
|
||||||
) -> impl Stream<Item = Result<LanguageModelCompletionEvent, LanguageModelCompletionError>>
|
) -> impl Stream<Item = Result<LanguageModelCompletionEvent, LanguageModelCompletionError>>
|
||||||
{
|
{
|
||||||
events.flat_map(move |event| {
|
events
|
||||||
futures::stream::iter(match event {
|
.map(Some)
|
||||||
Ok(event) => self.map_event(event),
|
.chain(futures::stream::once(async { None }))
|
||||||
Err(error) => vec![Err(LanguageModelCompletionError::Other(anyhow!(error)))],
|
.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(
|
pub fn map_event(
|
||||||
|
@ -578,7 +584,6 @@ impl GoogleEventMapper {
|
||||||
if wants_to_use_tool {
|
if wants_to_use_tool {
|
||||||
self.stop_reason = StopReason::ToolUse;
|
self.stop_reason = StopReason::ToolUse;
|
||||||
}
|
}
|
||||||
events.push(Ok(LanguageModelCompletionEvent::Stop(self.stop_reason)));
|
|
||||||
events
|
events
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue