Skip to content

Commit 07cc99f

Browse files
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) <noreply@anthropic.com>
1 parent bceaf15 commit 07cc99f

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

crates/stringflow-core/src/wire_formats/completions.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
use serde::{Deserialize, Serialize};
44
use serde_json::Value;
55

6-
use crate::{ChatMessage, Error, ProviderConfig, StreamEvent};
6+
use crate::{ChatMessage, DEFAULT_MODEL, Error, ProviderConfig, StreamEvent};
77

88
// ============================================================================
99
// Types
1010
// ============================================================================
1111

1212
#[derive(Debug, Serialize)]
1313
struct CompletionsRequest {
14+
model: String,
1415
messages: Vec<ChatMessage>,
1516
}
1617

@@ -35,9 +36,13 @@ struct CompletionsResponse {
3536

3637
pub(crate) fn build_request(
3738
messages: &[ChatMessage],
38-
_config: &ProviderConfig,
39+
config: &ProviderConfig,
3940
) -> Result<Value, Error> {
4041
serde_json::to_value(CompletionsRequest {
42+
model: config
43+
.model
44+
.clone()
45+
.unwrap_or_else(|| DEFAULT_MODEL.to_string()),
4146
messages: messages.to_vec(),
4247
})
4348
.map_err(|e| Error::RequestFailed(e.to_string()))
@@ -83,7 +88,7 @@ mod tests {
8388
assert_eq!(arr[0]["role"], "user");
8489
assert_eq!(arr[0]["content"], "Hello");
8590
assert_eq!(arr[2]["role"], "user");
86-
assert!(val.get("model").is_none());
91+
assert!(val["model"].as_str().is_some());
8792
}
8893

8994
#[test]

crates/stringflow-core/src/wire_formats/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ mod tests {
8282
config.wire_format = WireFormat::Completions;
8383
let completions = build_request(&msgs, &config).unwrap();
8484
assert!(completions.get("messages").is_some());
85-
assert!(completions.get("model").is_none());
85+
assert!(completions.get("model").is_some());
8686

8787
config.wire_format = WireFormat::Responses;
8888
let responses = build_request(&msgs, &config).unwrap();

0 commit comments

Comments
 (0)