Skip to content

Commit eeafdfb

Browse files
fix: use max_completion_tokens instead of max_tokens for open-ai compatible providers (#1086)
1 parent b095906 commit eeafdfb

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

crates/forge_provider/src/forge_provider/request.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ pub struct Request {
182182
pub stream_options: Option<StreamOptions>,
183183
#[serde(skip_serializing_if = "Option::is_none")]
184184
pub reasoning: Option<forge_app::domain::ReasoningConfig>,
185+
#[serde(skip_serializing_if = "Option::is_none")]
186+
pub max_completion_tokens: Option<u32>,
185187
}
186188

187189
#[derive(Debug, Deserialize, Serialize, Clone, Default)]
@@ -281,6 +283,7 @@ impl From<Context> for Request {
281283
stream_options: Some(StreamOptions { include_usage: Some(true) }),
282284
session_id: context.conversation_id.map(|id| id.to_string()),
283285
reasoning: context.reasoning,
286+
max_completion_tokens: Default::default(),
284287
}
285288
}
286289
}

crates/forge_provider/src/forge_provider/transformers/make_openai_compat.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ impl Transformer for MakeOpenAiCompat {
3232
// drop `parallel_tool_calls` field if tools are not passed to the request.
3333
request.parallel_tool_calls = None;
3434
}
35+
36+
// OpenAI has deprecated `max_tokens`, now it is `max_completion_tokens`.
37+
request.max_completion_tokens = request.max_tokens.take();
38+
3539
request
3640
}
3741
}
@@ -91,4 +95,14 @@ mod tests {
9195
let expected = None;
9296
assert_eq!(actual.reasoning, expected);
9397
}
98+
99+
#[test]
100+
fn test_max_tokens_mapped_correctly() {
101+
let fixture = Request::default().max_tokens(100);
102+
let mut transformer = MakeOpenAiCompat;
103+
let actual = transformer.transform(fixture);
104+
let expected = Some(100);
105+
assert_eq!(actual.max_completion_tokens, expected);
106+
assert_eq!(actual.max_tokens, None);
107+
}
94108
}

0 commit comments

Comments
 (0)