Fix error when deserializing Gemini streams (#29470)

Sometimes Gemini would report `Content` without a `parts` field.

Release Notes:

- Fixed a bug that would sometimes cause Gemini models to fail streaming
their response.
This commit is contained in:
Antonio Scandurra
2025-04-26 11:51:04 +00:00
committed by GitHub
parent f2b4004c00
commit 3fdbc3090d
+5 -1
View File
@@ -48,7 +48,10 @@ pub async fn stream_generate_content(
if let Some(line) = line.strip_prefix("data: ") {
match serde_json::from_str(line) {
Ok(response) => Some(Ok(response)),
Err(error) => Some(Err(anyhow!(error))),
Err(error) => Some(Err(anyhow!(format!(
"Error parsing JSON: {:?}\n{:?}",
error, line
)))),
}
} else {
None
@@ -152,6 +155,7 @@ pub struct GenerateContentCandidate {
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Content {
#[serde(default)]
pub parts: Vec<Part>,
pub role: Role,
}