From c34b24b5fba0642f6efbaaf99d2023d970b003de 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 04ffcfc2b8..db8ba70d71 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 6628b29a6c..034b4b358a 100644 --- a/crates/open_ai/src/open_ai.rs +++ b/crates/open_ai/src/open_ai.rs @@ -385,7 +385,6 @@ pub enum ResponseStreamResult { #[derive(Serialize, Deserialize, Debug)] pub struct ResponseStreamEvent { - pub created: u32, pub model: String, pub choices: Vec, pub usage: Option,