From 60fd3dbbc402bda9a6f186396ad4c742d61d711d Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Mon, 13 Apr 2026 16:21:05 -0300 Subject: [PATCH] fix: handle both reasoning_content and reasoning fields for NVIDIA API --- src/llm/mod.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/llm/mod.rs b/src/llm/mod.rs index fdbcf4de..5c324cfc 100644 --- a/src/llm/mod.rs +++ b/src/llm/mod.rs @@ -461,12 +461,14 @@ impl LLMProvider for OpenAIClient { let chunk_str = String::from_utf8_lossy(&chunk); for line in chunk_str.lines() { if line.starts_with("data: ") && !line.contains("[DONE]") { - if let Ok(data) = serde_json::from_str::(&line[6..]) { - let content = data["choices"][0]["delta"]["content"].as_str(); - let reasoning = data["choices"][0]["delta"]["reasoning_content"].as_str(); + if let Ok(data) = serde_json::from_str::(&line[6..]) { + let content = data["choices"][0]["delta"]["content"].as_str(); + // Handle both reasoning_content (GLM4.7) and reasoning (Kimi K2.5) + let reasoning = data["choices"][0]["delta"]["reasoning_content"].as_str() + .or_else(|| data["choices"][0]["delta"]["reasoning"].as_str()); - // Detect reasoning phase (GLM4.7, Kimi K2.5) - if reasoning.is_some() && content.is_none() { + // Detect reasoning phase (GLM4.7, Kimi K2.5) + if reasoning.is_some() && content.is_none() { if !in_reasoning { trace!("[LLM] Entering reasoning/thinking mode"); in_reasoning = true;