Spaces:
Running
Running
File size: 1,717 Bytes
e8a6607 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import { Request, Response, NextFunction } from 'express';
import { GptChatQueueService } from '../../queues/gpt-chat-queue-services';
import logger from '../../logger';
export const useGptChatController = (gptChatQueueService: GptChatQueueService) => ({
gptChatController: async (req: Request, res: Response, next: NextFunction) => {
try {
const { aiInput, msgSession } = req.body;
logger.debug(`Prompt received - ${aiInput}`);
const anonId = req.headers['x-anonuser-id'] as string;
if (!anonId) { // 👈 runtime + TS check. Before using req.user.id check !req.user. See authmiddleware to see this
res.status(401).json({
success: false,
message: 'Unauthorized',
});
return;
}
if (!aiInput) {
res.status(400).json({
success: false,
message: 'Missing prompt',
});
return;
}
// Send early response
res.status(200).json({
success: true,
status: 'processing',
message: 'Prompt submitted to AI model',
});
// Send to queue
await gptChatQueueService.queueGptChatPrompt(aiInput, msgSession, anonId);
return;
} catch (err: any) {
let msg = 'Prompt submission error';
res.status(500).json({
success: false,
message: msg,
error: err.message,
});
return;
}
},
});
|