fix: accept vLLM thinking in reasoning or reasoning_content
Newer vLLM parsers put CoT in reasoning; older builds and DeepSeek still use reasoning_content. Canonicalize to the UI field and echo only the original wire field so other ChatOpenAI models stay unchanged. Point qwen3.6 at VllmChatModel. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
d765afe2ac
commit
f4c7d41a60
10 files changed
+371
-123
No files matched your search
@@ -364,11 +364,16 @@ export function extractReasoningContentFromMessage(message: Message) {
|
||||
if (message.type !== "ai") {
|
||||
return null;
|
||||
}
|
||||
if (
|
||||
message.additional_kwargs &&
|
||||
"reasoning_content" in message.additional_kwargs
|
||||
) {
|
||||
return message.additional_kwargs.reasoning_content as string | null;
|
||||
if (message.additional_kwargs) {
|
||||
const reasoningContent = message.additional_kwargs.reasoning_content;
|
||||
if (typeof reasoningContent === "string") {
|
||||
return reasoningContent;
|
||||
}
|
||||
// Newer vLLM puts thinking in `reasoning` instead of `reasoning_content`.
|
||||
const reasoning = message.additional_kwargs.reasoning;
|
||||
if (typeof reasoning === "string") {
|
||||
return reasoning;
|
||||
}
|
||||
}
|
||||
if (Array.isArray(message.content)) {
|
||||
const part = message.content[0];
|
||||
@@ -424,6 +429,9 @@ export function hasReasoning(message: Message) {
|
||||
if (typeof message.additional_kwargs?.reasoning_content === "string") {
|
||||
return true;
|
||||
}
|
||||
if (typeof message.additional_kwargs?.reasoning === "string") {
|
||||
return true;
|
||||
}
|
||||
if (Array.isArray(message.content)) {
|
||||
const part = message.content[0];
|
||||
// Compatible with the Anthropic gateway
|
||||
|
||||
Reference in new issue
Block a user