From ba8e4e5d3e848e42981322ebc0878de4fa5a44e5 Mon Sep 17 00:00:00 2001 From: Timothy Carambat Date: Fri, 2 Aug 2024 12:23:39 -0700 Subject: [PATCH] handle OpenRouter exceptions on streaming (#2033) --- server/utils/AiProviders/openRouter/index.js | 65 ++++++++++++-------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/server/utils/AiProviders/openRouter/index.js b/server/utils/AiProviders/openRouter/index.js index d9b971b6..00a176e1 100644 --- a/server/utils/AiProviders/openRouter/index.js +++ b/server/utils/AiProviders/openRouter/index.js @@ -254,35 +254,48 @@ class OpenRouterLLM { } }, 500); - for await (const chunk of stream) { - const message = chunk?.choices?.[0]; - const token = message?.delta?.content; - lastChunkTime = Number(new Date()); + try { + for await (const chunk of stream) { + const message = chunk?.choices?.[0]; + const token = message?.delta?.content; + lastChunkTime = Number(new Date()); - if (token) { - fullText += token; - writeResponseChunk(response, { - uuid, - sources: [], - type: "textResponseChunk", - textResponse: token, - close: false, - error: false, - }); - } + if (token) { + fullText += token; + writeResponseChunk(response, { + uuid, + sources: [], + type: "textResponseChunk", + textResponse: token, + close: false, + error: false, + }); + } - if (message.finish_reason !== null) { - writeResponseChunk(response, { - uuid, - sources, - type: "textResponseChunk", - textResponse: "", - close: true, - error: false, - }); - response.removeListener("close", handleAbort); - resolve(fullText); + if (message.finish_reason !== null) { + writeResponseChunk(response, { + uuid, + sources, + type: "textResponseChunk", + textResponse: "", + close: true, + error: false, + }); + response.removeListener("close", handleAbort); + resolve(fullText); + } } + } catch (e) { + writeResponseChunk(response, { + uuid, + sources, + type: "abort", + textResponse: null, + close: true, + error: e.message, + }); + response.removeListener("close", handleAbort); + resolve(fullText); } }); }