From 82d132427cc7dea00546d6891f5be2353f4aa3eb Mon Sep 17 00:00:00 2001
From: Timothy Carambat <rambat1010@gmail.com>
Date: Mon, 26 Jun 2023 17:54:55 -0700
Subject: [PATCH] dump error message to frontend instead of generic error
 (#114)

---
 .../components/WorkspaceChat/ChatContainer/index.jsx |  5 -----
 frontend/src/utils/chat/index.js                     |  1 -
 server/endpoints/chat.js                             | 11 +++++++++--
 server/utils/openAi/index.js                         | 12 +++++++++++-
 4 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/frontend/src/components/WorkspaceChat/ChatContainer/index.jsx b/frontend/src/components/WorkspaceChat/ChatContainer/index.jsx
index f8b1fc9ba..627afe6e2 100644
--- a/frontend/src/components/WorkspaceChat/ChatContainer/index.jsx
+++ b/frontend/src/components/WorkspaceChat/ChatContainer/index.jsx
@@ -54,11 +54,6 @@ export default function ChatContainer({ workspace, knownHistory = [] }) {
         window.localStorage.getItem(`workspace_chat_mode_${workspace.slug}`) ??
           "chat"
       );
-      if (!chatResult) {
-        alert("Could not send chat.");
-        setLoadingResponse(false);
-        return;
-      }
       handleChat(
         chatResult,
         setLoadingResponse,
diff --git a/frontend/src/utils/chat/index.js b/frontend/src/utils/chat/index.js
index e5f129ab3..539e22c7e 100644
--- a/frontend/src/utils/chat/index.js
+++ b/frontend/src/utils/chat/index.js
@@ -10,7 +10,6 @@ export default function handleChat(
 
   if (type === "abort") {
     setLoadingResponse(false);
-    alert(error);
     setChatHistory([
       ...remHistory,
       {
diff --git a/server/endpoints/chat.js b/server/endpoints/chat.js
index bf13041cb..7c3036434 100644
--- a/server/endpoints/chat.js
+++ b/server/endpoints/chat.js
@@ -1,3 +1,4 @@
+const { v4: uuidv4 } = require("uuid");
 const { reqBody } = require("../utils/http");
 const { Workspace } = require("../models/workspace");
 const { chatWithWorkspace } = require("../utils/chats");
@@ -18,8 +19,14 @@ function chatEndpoints(app) {
       const result = await chatWithWorkspace(workspace, message, mode);
       response.status(200).json({ ...result });
     } catch (e) {
-      console.log(e.message, e);
-      response.sendStatus(500).end();
+      response.status(500).json({
+        id: uuidv4(),
+        type: "abort",
+        textResponse: null,
+        sources: [],
+        close: true,
+        error: e.message,
+      });
     }
   });
 }
diff --git a/server/utils/openAi/index.js b/server/utils/openAi/index.js
index 00ec1326b..b4ce75ba2 100644
--- a/server/utils/openAi/index.js
+++ b/server/utils/openAi/index.js
@@ -3,7 +3,6 @@ class OpenAi {
   constructor() {
     const config = new Configuration({
       apiKey: process.env.OPEN_AI_KEY,
-      // organization: "org-123xyz", // Optional
     });
     const openai = new OpenAIApi(config);
     this.openai = openai;
@@ -23,6 +22,11 @@ class OpenAi {
         if (res.results.length === 0)
           throw new Error("OpenAI moderation: No results length!");
         return res.results[0];
+      })
+      .catch((error) => {
+        throw new Error(
+          `OpenAI::CreateModeration failed with: ${error.message}`
+        );
       });
 
     if (!flagged) return { safe: true, reasons: [] };
@@ -65,6 +69,12 @@ class OpenAi {
         if (res.choices.length === 0)
           throw new Error("OpenAI chat: No results length!");
         return res.choices[0].message.content;
+      })
+      .catch((error) => {
+        console.log(error);
+        throw new Error(
+          `OpenAI::createChatCompletion failed with: ${error.message}`
+        );
       });
 
     return textResponse;
-- 
GitLab