mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-08-02 18:41:35 +08:00
fix(proxy): use max_completion_tokens for o1/o3 series models (#1451)
* fix(proxy): use max_completion_tokens for o1/o3 series models When converting Anthropic requests to OpenAI format for o1/o3 series models (like o1-mini, o3-mini), use max_completion_tokens instead of max_tokens to avoid unsupported_parameter errors. Fixes #1448 * fix: revert incorrect o-series max_completion_tokens in Responses API path Responses API uses max_output_tokens for all models including o-series. The o-series max_completion_tokens fix should only apply to Chat Completions API. --------- Co-authored-by: Hajen Teowideo <hajen.teowideo@example.com> Co-authored-by: Jason Young <44939412+farion1231@users.noreply.github.com> Co-authored-by: Jason <farion1231@gmail.com>
This commit is contained in:
@@ -45,7 +45,7 @@ pub fn anthropic_to_responses(body: Value, cache_key: Option<&str>) -> Result<Va
|
||||
result["input"] = json!(input);
|
||||
}
|
||||
|
||||
// max_tokens → max_output_tokens
|
||||
// max_tokens → max_output_tokens (Responses API uses max_output_tokens for all models)
|
||||
if let Some(v) = body.get("max_tokens") {
|
||||
result["max_output_tokens"] = v.clone();
|
||||
}
|
||||
@@ -897,4 +897,17 @@ mod tests {
|
||||
assert_eq!(result["usage"]["cache_read_input_tokens"], 60);
|
||||
assert_eq!(result["usage"]["cache_creation_input_tokens"], 20);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_anthropic_to_responses_o_series_uses_max_output_tokens() {
|
||||
// Responses API always uses max_output_tokens, even for o-series models
|
||||
let input = json!({
|
||||
"model": "o3-mini",
|
||||
"max_tokens": 4096,
|
||||
"messages": [{"role": "user", "content": "Hello"}]
|
||||
});
|
||||
let result = anthropic_to_responses(input, None).unwrap();
|
||||
assert_eq!(result["max_output_tokens"], 4096);
|
||||
assert!(result.get("max_completion_tokens").is_none());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user