From 0db3fec823c6f8fcbf30f74ea2092ee3d2361078 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Wed, 18 Jun 2025 23:51:51 +0200 Subject: [PATCH] open_ai: Fix issues with OpenAI compatible APIs (#32982) Ran into this while adding support for Vercel v0s models: - The timestamp seems to be returned in Milliseconds instead of seconds so it breaks the bounds of `created: u32`. We did not use this field anywhere so just decided to remove it - Sometimes the `choices` field can be empty when the last chunk comes in because it only contains `usage` Release Notes: - N/A --- crates/language_models/src/provider/open_ai.rs | 4 +--- crates/open_ai/src/open_ai.rs | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/language_models/src/provider/open_ai.rs b/crates/language_models/src/provider/open_ai.rs index 51ff57b156e3f340905e8860a12cc5c79384d3d6..ac6d0b75be5460bbea9a366f37429eb8c925e9e6 100644 --- a/crates/language_models/src/provider/open_ai.rs +++ b/crates/language_models/src/provider/open_ai.rs @@ -529,9 +529,7 @@ impl OpenAiEventMapper { event: ResponseStreamEvent, ) -> Vec> { let Some(choice) = event.choices.first() else { - return vec![Err(LanguageModelCompletionError::Other(anyhow!( - "Response contained no choices" - )))]; + return Vec::new(); }; let mut events = Vec::new(); diff --git a/crates/open_ai/src/open_ai.rs b/crates/open_ai/src/open_ai.rs index 520694d830e32f88fc8a30d8df000551162ac110..092bd941ad3f29266c3e75d0952ae3eb197b4000 100644 --- a/crates/open_ai/src/open_ai.rs +++ b/crates/open_ai/src/open_ai.rs @@ -412,7 +412,6 @@ pub enum ResponseStreamResult { #[derive(Serialize, Deserialize, Debug)] pub struct ResponseStreamEvent { - pub created: u32, pub model: String, pub choices: Vec, pub usage: Option,