@@ -546,13 +546,25 @@ pub fn to_responses_request(req: &GenerateRequest, stream: bool) -> ResponsesReq
546546 None
547547 } ;
548548
549+ // Reasoning models don't support temperature or top_p
550+ let temperature = if is_reasoning {
551+ None
552+ } else {
553+ req. options . temperature
554+ } ;
555+ let top_p = if is_reasoning {
556+ None
557+ } else {
558+ req. options . top_p
559+ } ;
560+
549561 ResponsesRequest {
550562 model : req. model . id . clone ( ) ,
551563 input,
552564 instructions : None , // System message is in input array
553565 max_output_tokens : req. options . max_tokens ,
554- temperature : req . options . temperature ,
555- top_p : req . options . top_p ,
566+ temperature,
567+ top_p,
556568 stream : Some ( stream) ,
557569 tools,
558570 tool_choice,
@@ -1054,4 +1066,39 @@ mod tests {
10541066 let tool_result = tool_result. unwrap ( ) ;
10551067 assert_eq ! ( tool_result[ "call_id" ] , "call_123" ) ;
10561068 }
1069+
1070+ // =========================================================================
1071+ // Temperature / Top-P Filtering Tests
1072+ // =========================================================================
1073+
1074+ #[ test]
1075+ fn test_responses_request_strips_temperature_for_reasoning_model ( ) {
1076+ let mut req = make_request (
1077+ "gpt-5.2-2025-12-11" ,
1078+ Some ( ProviderOptions :: OpenAI ( OpenAIOptions :: responses ( ) ) ) ,
1079+ ) ;
1080+ req. options . temperature = Some ( 0.7 ) ;
1081+ req. options . top_p = Some ( 0.9 ) ;
1082+
1083+ let responses_req = to_responses_request ( & req, false ) ;
1084+
1085+ // Reasoning models must not send temperature or top_p
1086+ assert ! ( responses_req. temperature. is_none( ) ) ;
1087+ assert ! ( responses_req. top_p. is_none( ) ) ;
1088+ }
1089+
1090+ #[ test]
1091+ fn test_responses_request_keeps_temperature_for_standard_model ( ) {
1092+ let mut req = make_request (
1093+ "gpt-4o" ,
1094+ Some ( ProviderOptions :: OpenAI ( OpenAIOptions :: responses ( ) ) ) ,
1095+ ) ;
1096+ req. options . temperature = Some ( 0.7 ) ;
1097+ req. options . top_p = Some ( 0.9 ) ;
1098+
1099+ let responses_req = to_responses_request ( & req, false ) ;
1100+
1101+ assert_eq ! ( responses_req. temperature, Some ( 0.7 ) ) ;
1102+ assert_eq ! ( responses_req. top_p, Some ( 0.9 ) ) ;
1103+ }
10571104}
0 commit comments