Add dummy reasoning_content for deepseek-reasoner tool calls #4857
| @@ -44,6 +44,7 @@ import { | |||
| 44 | PROMPT_PROCESSING_TYPE, | 44 | PROMPT_PROCESSING_TYPE, |
| 45 | addAssistantPrefix, | 45 | addAssistantPrefix, |
| 46 | embedOpenRouterMedia, | 46 | embedOpenRouterMedia, |
| 47 | addReasoningContentToToolCalls, | ||
| 47 | } from '../../prompt-converters.js'; | 48 | } from '../../prompt-converters.js'; |
| 48 | 49 | ||
| 49 | import { readSecret, SECRET_KEYS } from '../secrets.js'; | 50 | import { readSecret, SECRET_KEYS } from '../secrets.js'; |
| @@ -981,6 +982,10 @@ async function sendDeepSeekRequest(request, response) { | |||
| 981 | 982 | ||
| 982 | const processedMessages = addAssistantPrefix(postProcessPrompt(request.body.messages, PROMPT_PROCESSING_TYPE.SEMI_TOOLS, getPromptNames(request)), bodyParams.tools, 'prefix'); | 983 | const processedMessages = addAssistantPrefix(postProcessPrompt(request.body.messages, PROMPT_PROCESSING_TYPE.SEMI_TOOLS, getPromptNames(request)), bodyParams.tools, 'prefix'); |
| 983 | 984 | ||
| 985 | if (/-reasoner/.test(request.body.model)) { | ||
| 986 | addReasoningContentToToolCalls(processedMessages); | ||
| 987 | } | ||
| 988 | |||
| 984 | const requestBody = { | 989 | const requestBody = { |
| 985 | 'messages': processedMessages, | 990 | 'messages': processedMessages, |
| 986 | 'model': request.body.model, | 991 | 'model': request.body.model, |
| @@ -1209,3 +1209,22 @@ export function embedOpenRouterMedia(messages) { | |||
| 1209 | } | 1209 | } |
| 1210 | } | 1210 | } |
| 1211 | } | 1211 | } |
| 1212 | |||
| 1213 | /** | ||
| 1214 | * Adds a dummy reasoning_content field to messages with tool calls for DeepSeek reasoner. | ||
| 1215 | * @param {object[]} messages Array of messages | ||
| 1216 | * @returns {void} | ||
| 1217 | */ | ||
| 1218 | export function addReasoningContentToToolCalls(messages) { | ||
| 1219 | if (!Array.isArray(messages)) { | ||
| 1220 | return; | ||
| 1221 | } | ||
| 1222 | |||
| 1223 | for (const message of messages) { | ||
| 1224 | if (!Array.isArray(message.tool_calls) || 'reasoning_content' in message) { | ||
| 1225 | continue; | ||
| 1226 | } | ||
| 1227 | |||
| 1228 | message.reasoning_content = ''; | ||
| 1229 | } | ||
| 1230 | } | ||