From 5eec6a18608cc0e8f1844a172a12a09e92e3122f Mon Sep 17 00:00:00 2001 From: Han Xiao Date: Wed, 11 Jun 2025 23:23:03 -0700 Subject: [PATCH] fix: improve message validation and logging in chat completions --- src/app.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/app.ts b/src/app.ts index 21fc009..d9fa7c7 100644 --- a/src/app.ts +++ b/src/app.ts @@ -402,18 +402,11 @@ app.post('/v1/chat/completions', (async (req: Request, res: Response) => { }); const body = req.body as ChatCompletionRequest; - if (!body.messages?.length) { - return res.status(400).json({ error: 'Messages array is required and must not be empty' }); - } - const lastMessage = body.messages[body.messages.length - 1]; - if (lastMessage.role !== 'user') { - return res.status(400).json({ error: 'Last message must be from user' }); - } - - logDebug('Input messages', { messages: body.messages }); // clean from all assistant messages body.messages = body.messages?.filter(message => { + if (!message || !message.content) return false; + if (message.role === 'assistant') { // 2 cases message.content can be a string or an array if (typeof message.content === 'string') { @@ -456,6 +449,18 @@ app.post('/v1/chat/completions', (async (req: Request, res: Response) => { return true; // Keep other messages }); + if (!body.messages?.length) { + logError('[chat/completions] Messages array is required and must not be empty', { messages: body.messages }); + return res.status(400).json({ error: 'Messages array is required and must not be empty' }); + } + const lastMessage = body.messages[body.messages.length - 1]; + if (lastMessage.role !== 'user') { + logError('[chat/completions] Last message must be from user', { messages: body.messages }); + return res.status(400).json({ error: 'Last message must be from user' }); + } + + logDebug('Input messages', { messages: body.messages }); + let { tokenBudget, maxBadAttempts } = getTokenBudgetAndMaxAttempts( body.reasoning_effort, body.max_completion_tokens