diff --git a/src/app.ts b/src/app.ts index 758ba84..3fd8321 100644 --- a/src/app.ts +++ b/src/app.ts @@ -391,16 +391,32 @@ app.post('/v1/chat/completions', (async (req: Request, res: Response) => { console.log('messages', JSON.stringify(body.messages)); // clean from all assistant messages - body.messages?.filter(message => message.role === 'assistant').forEach(message => { - // 2 cases message.content can be a string or an array - if (typeof message.content === 'string') { - message.content = (message.content as string).replace(/[\s\S]*?<\/think>/g, '').trim(); - } else if (Array.isArray(message.content)) { - // find all type: text and clean from .text - message.content.forEach((content: any) => { - if (content.type === 'text') { - content.text = (content.text as string).replace(/[\s\S]*?<\/think>/g, '').trim(); - }}); + body.messages?.forEach(message => { + if (message.role === 'assistant') { + // 2 cases message.content can be a string or an array + if (typeof message.content === 'string') { + message.content = (message.content as string).replace(/[\s\S]*?<\/think>/g, '').trim(); + } else if (Array.isArray(message.content)) { + // find all type: text and clean from .text + message.content.forEach((content: any) => { + if (content.type === 'text') { + content.text = (content.text as string).replace(/[\s\S]*?<\/think>/g, '').trim(); + }}); + } + } else if (message.role === 'user' && Array.isArray(message.content)) { + message.content = message.content.map((content: any) => { + if (content.type === 'image_url') { + return { + type: 'image', + image: content.image_url?.url || '', + } + } + return content; + }); + } else if (message.role === 'system') { + if (Array.isArray(message.content)) { + message.content = message.content.map((content: any) => `${content.text || content}`).join(' '); + } } });