Skip to content

Commit 8a5de70

Browse files
committed
Improve GET /chat params parsing and logging
Add debug logging for incoming GET requests (query, body, headers) and broaden parameter support by merging req.query and req.body. Support multiple input names (message, content, text, prompt, q) and handle messages as either JSON strings or already-parsed arrays. Return a more informative 400 error including received debug info when required params are missing. Also add 'nul' to .gitignore.
1 parent 00da676 commit 8a5de70

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ Thumbs.db
1010

1111
# Testing artifacts
1212
cookies.txt
13+
nul

src/routes/chat.js

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,31 @@ const setSSEHeaders = (res) => {
2525

2626
// Smart routing - support GET requests for better client compatibility
2727
router.get('/', (req, res) => {
28-
// Extract parameters from query string
29-
const { message, messages, model = 'auto', stream = false, temperature, max_tokens } = req.query;
28+
// Debug: Log what we're actually receiving
29+
console.log('[GET /chat/completions] Query params:', req.query);
30+
console.log('[GET /chat/completions] Body:', req.body);
31+
console.log('[GET /chat/completions] Headers:', req.headers);
32+
33+
// Extract parameters from query string, body, or headers
34+
const { message, messages, model = 'auto', stream = false, temperature, max_tokens, content, text, prompt } = {
35+
...req.query,
36+
...req.body
37+
};
3038

3139
let parsedMessages;
3240

33-
if (messages) {
34-
// Try to parse messages from query parameter (JSON string)
41+
// Try multiple parameter names that different bots might use
42+
const userInput = message || content || text || prompt || req.query.q || req.body.content;
43+
const messageArray = messages || req.body.messages;
44+
45+
if (messageArray) {
46+
// Try to parse messages from parameter (JSON string or already parsed)
3547
try {
36-
parsedMessages = JSON.parse(decodeURIComponent(messages));
48+
if (typeof messageArray === 'string') {
49+
parsedMessages = JSON.parse(decodeURIComponent(messageArray));
50+
} else {
51+
parsedMessages = messageArray;
52+
}
3753
} catch (e) {
3854
return res.status(400).json({
3955
error: {
@@ -42,15 +58,21 @@ router.get('/', (req, res) => {
4258
}
4359
});
4460
}
45-
} else if (message) {
46-
// Simple single message support
47-
parsedMessages = [{ role: 'user', content: decodeURIComponent(message) }];
61+
} else if (userInput) {
62+
// Simple single message support with various parameter names
63+
parsedMessages = [{ role: 'user', content: decodeURIComponent(userInput.toString()) }];
4864
} else {
65+
// If no recognized parameters, provide helpful debug info
4966
return res.status(400).json({
5067
error: {
5168
message: 'Missing required parameter. Use ?message=your_text or ?messages=[{"role":"user","content":"text"}]',
5269
type: 'invalid_request_error',
53-
help: 'GET Example: /v1/chat/completions?message=Hello&model=auto'
70+
help: 'GET Example: /v1/chat/completions?message=Hello&model=auto',
71+
debug: {
72+
receivedQuery: req.query,
73+
receivedBody: req.body,
74+
supportedParams: ['message', 'content', 'text', 'prompt', 'messages']
75+
}
5476
}
5577
});
5678
}

0 commit comments

Comments
 (0)