From 07cc99fdfde1dd4f2e8ba597bdcbfabf3e92e184 Mon Sep 17 00:00:00 2001 From: Cody Date: Sun, 5 Apr 2026 19:57:15 -0400 Subject: [PATCH] fix(completions): include model field in API request body OpenAI's Chat Completions API requires the model field in the request body. The Completions wire format was the only one missing it. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../stringflow-core/src/wire_formats/completions.rs | 11 ++++++++--- crates/stringflow-core/src/wire_formats/mod.rs | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/crates/stringflow-core/src/wire_formats/completions.rs b/crates/stringflow-core/src/wire_formats/completions.rs index 3eb4f19..e2a86de 100644 --- a/crates/stringflow-core/src/wire_formats/completions.rs +++ b/crates/stringflow-core/src/wire_formats/completions.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use serde_json::Value; -use crate::{ChatMessage, Error, ProviderConfig, StreamEvent}; +use crate::{ChatMessage, DEFAULT_MODEL, Error, ProviderConfig, StreamEvent}; // ============================================================================ // Types @@ -11,6 +11,7 @@ use crate::{ChatMessage, Error, ProviderConfig, StreamEvent}; #[derive(Debug, Serialize)] struct CompletionsRequest { + model: String, messages: Vec, } @@ -35,9 +36,13 @@ struct CompletionsResponse { pub(crate) fn build_request( messages: &[ChatMessage], - _config: &ProviderConfig, + config: &ProviderConfig, ) -> Result { serde_json::to_value(CompletionsRequest { + model: config + .model + .clone() + .unwrap_or_else(|| DEFAULT_MODEL.to_string()), messages: messages.to_vec(), }) .map_err(|e| Error::RequestFailed(e.to_string())) @@ -83,7 +88,7 @@ mod tests { assert_eq!(arr[0]["role"], "user"); assert_eq!(arr[0]["content"], "Hello"); assert_eq!(arr[2]["role"], "user"); - assert!(val.get("model").is_none()); + assert!(val["model"].as_str().is_some()); } #[test] diff --git a/crates/stringflow-core/src/wire_formats/mod.rs b/crates/stringflow-core/src/wire_formats/mod.rs index 1c8b4c8..de5f693 100644 --- a/crates/stringflow-core/src/wire_formats/mod.rs +++ b/crates/stringflow-core/src/wire_formats/mod.rs @@ -82,7 +82,7 @@ mod tests { config.wire_format = WireFormat::Completions; let completions = build_request(&msgs, &config).unwrap(); assert!(completions.get("messages").is_some()); - assert!(completions.get("model").is_none()); + assert!(completions.get("model").is_some()); config.wire_format = WireFormat::Responses; let responses = build_request(&msgs, &config).unwrap();