From 3c80a0ae096510890457dd4e62fc0affc2e07cc3 Mon Sep 17 00:00:00 2001 From: Yongteng Lei Date: Tue, 10 Mar 2026 21:13:14 +0800 Subject: [PATCH] Fix: support vLLM's new reasoning field (#13493) ### What problem does this PR solve? Support vLLM's new reasoning field ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- rag/llm/chat_model.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/rag/llm/chat_model.py b/rag/llm/chat_model.py index 10b2fb515..4476ccbbd 100644 --- a/rag/llm/chat_model.py +++ b/rag/llm/chat_model.py @@ -149,12 +149,13 @@ class Base(ABC): continue if not resp.choices[0].delta.content: resp.choices[0].delta.content = "" - if kwargs.get("with_reasoning", True) and hasattr(resp.choices[0].delta, "reasoning_content") and resp.choices[0].delta.reasoning_content: + _reasoning = getattr(resp.choices[0].delta, "reasoning_content", None) or getattr(resp.choices[0].delta, "reasoning", None) + if kwargs.get("with_reasoning", True) and _reasoning: ans = "" if not reasoning_start: reasoning_start = True ans = "" - ans += resp.choices[0].delta.reasoning_content + "" + ans += _reasoning + "" else: reasoning_start = False ans = resp.choices[0].delta.content @@ -294,8 +295,9 @@ class Base(ABC): raise Exception(f"500 response structure error. Response: {response}") if not hasattr(response.choices[0].message, "tool_calls") or not response.choices[0].message.tool_calls: - if hasattr(response.choices[0].message, "reasoning_content") and response.choices[0].message.reasoning_content: - ans += "" + response.choices[0].message.reasoning_content + "" + _reasoning = getattr(response.choices[0].message, "reasoning_content", None) or getattr(response.choices[0].message, "reasoning", None) + if _reasoning: + ans += "" + _reasoning + "" ans += response.choices[0].message.content if response.choices[0].finish_reason == "length": @@ -370,12 +372,13 @@ class Base(ABC): if not hasattr(delta, "content") or delta.content is None: delta.content = "" - if hasattr(delta, "reasoning_content") and delta.reasoning_content: + _reasoning = getattr(delta, "reasoning_content", None) or getattr(delta, "reasoning", None) + if _reasoning: ans = "" if not reasoning_start: reasoning_start = True ans = "" - ans += delta.reasoning_content + "" + ans += _reasoning + "" yield ans else: reasoning_start = False @@ -1279,12 +1282,13 @@ class LiteLLMBase(ABC): if not hasattr(delta, "content") or delta.content is None: delta.content = "" - if kwargs.get("with_reasoning", True) and hasattr(delta, "reasoning_content") and delta.reasoning_content: + _reasoning = getattr(delta, "reasoning_content", None) or getattr(delta, "reasoning", None) + if kwargs.get("with_reasoning", True) and _reasoning: ans = "" if not reasoning_start: reasoning_start = True ans = "" - ans += delta.reasoning_content + "" + ans += _reasoning + "" else: reasoning_start = False ans = delta.content @@ -1404,8 +1408,9 @@ class LiteLLMBase(ABC): message = response.choices[0].message if not hasattr(message, "tool_calls") or not message.tool_calls: - if hasattr(message, "reasoning_content") and message.reasoning_content: - ans += f"{message.reasoning_content}" + _reasoning = getattr(message, "reasoning_content", None) or getattr(message, "reasoning", None) + if _reasoning: + ans += f"{_reasoning}" ans += message.content or "" if response.choices[0].finish_reason == "length": ans = self._length_stop(ans) @@ -1485,12 +1490,13 @@ class LiteLLMBase(ABC): if not hasattr(delta, "content") or delta.content is None: delta.content = "" - if hasattr(delta, "reasoning_content") and delta.reasoning_content: + _reasoning = getattr(delta, "reasoning_content", None) or getattr(delta, "reasoning", None) + if _reasoning: ans = "" if not reasoning_start: reasoning_start = True ans = "" - ans += delta.reasoning_content + "" + ans += _reasoning + "" yield ans else: reasoning_start = False