mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-31 20:22:27 +08:00
feat(llm): handle error catching in streaming better
This commit is contained in:
parent
e98fabcc9d
commit
ca6277f6e9
@ -420,19 +420,31 @@ async function sendMessage(req: Request, res: Response) {
|
||||
async function streamMessage(req: Request, res: Response) {
|
||||
log.info("=== Starting streamMessage ===");
|
||||
|
||||
try {
|
||||
const chatNoteId = req.params.chatNoteId;
|
||||
const { content, useAdvancedContext, showThinking, mentions } = req.body;
|
||||
|
||||
// Input validation
|
||||
if (!content || typeof content !== 'string' || content.trim().length === 0) {
|
||||
return [400, {
|
||||
res.status(400).json({
|
||||
success: false,
|
||||
error: 'Content cannot be empty'
|
||||
}];
|
||||
});
|
||||
// Mark response as handled to prevent further processing
|
||||
(res as any).triliumResponseHandled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Start background streaming process immediately (before sending response)
|
||||
const backgroundPromise = handleStreamingProcess(chatNoteId, content, useAdvancedContext, showThinking, mentions)
|
||||
// Send immediate success response
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
message: 'Streaming initiated successfully'
|
||||
});
|
||||
// Mark response as handled to prevent further processing
|
||||
(res as any).triliumResponseHandled = true;
|
||||
|
||||
// Start background streaming process after sending response
|
||||
handleStreamingProcess(chatNoteId, content, useAdvancedContext, showThinking, mentions)
|
||||
.catch(error => {
|
||||
log.error(`Background streaming error: ${error.message}`);
|
||||
|
||||
@ -449,12 +461,19 @@ async function streamMessage(req: Request, res: Response) {
|
||||
});
|
||||
});
|
||||
|
||||
// Return immediate acknowledgment that streaming has been initiated
|
||||
// The background process will handle the actual streaming
|
||||
return {
|
||||
success: true,
|
||||
message: 'Streaming initiated successfully'
|
||||
};
|
||||
} catch (error) {
|
||||
// Handle any synchronous errors
|
||||
log.error(`Synchronous error in streamMessage: ${error}`);
|
||||
|
||||
if (!res.headersSent) {
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: 'Internal server error'
|
||||
});
|
||||
}
|
||||
// Mark response as handled to prevent further processing
|
||||
(res as any).triliumResponseHandled = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user