[Bugfix][Rust Frontend] Tolerate NaN-corrupted logprobs in engine-core (#51026)

Co-authored-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Islam <islam.almersawi@openinnovation.ai>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
This commit is contained in:
Islam
2026-09-16 03:10:58 +00:00
committed by GitHub
co-authored by Bugen Zhao
parent ccbaed5b91
commit c16bb6068f
3 changed files with 168 additions and 4 deletions
@@ -369,4 +369,51 @@ mod tests {
assert_eq!(chat_top_logprobs_len(1), 1);
assert_eq!(chat_top_logprobs_len(-1), 3);
}
#[test]
fn chat_logprobs_clamps_nan_and_negative_infinity_for_json() {
let mut logprobs = sample_logprobs();
logprobs.positions[0].entries[0].logprob = f32::NAN;
logprobs.positions[0].entries[0].rank = 0;
logprobs.positions[0].entries[1].logprob = f32::NEG_INFINITY;
let response = decoded_logprobs_to_openai_chat(&logprobs, -1, false).unwrap();
let json = serde_json::to_string_pretty(&response).unwrap();
expect_test::expect![[r#"
{
"content": [
{
"token": "A",
"logprob": -9999.0,
"bytes": [
65
],
"top_logprobs": [
{
"token": "A",
"logprob": -9999.0,
"bytes": [
65
]
},
{
"token": "B",
"logprob": -9999.0,
"bytes": [
66
]
},
{
"token": "C",
"logprob": -2.0,
"bytes": [
67
]
}
]
}
]
}"#]]
.assert_eq(&json);
}
}