Browse Source

fix: #1571 #1578 handle more error code

Yidadaa 1 year ago
parent
commit
30676d118f
1 changed files with 14 additions and 8 deletions
  1. 14 8
      app/client/platforms/openai.ts

+ 14 - 8
app/client/platforms/openai.ts

@@ -71,9 +71,13 @@ export class ChatGPTApi implements LLMApi {
 
       if (shouldStream) {
         let responseText = "";
+        let finished = false;
 
         const finish = () => {
-          options.onFinish(responseText);
+          if (!finished) {
+            options.onFinish(responseText);
+            finished = true;
+          }
         };
 
         controller.signal.onabort = finish;
@@ -83,19 +87,21 @@ export class ChatGPTApi implements LLMApi {
           async onopen(res) {
             clearTimeout(requestTimeoutId);
             if (
-              res.ok &&
-              res.headers.get("content-type") !== EventStreamContentType
+              !res.ok ||
+              res.headers.get("content-type") !== EventStreamContentType ||
+              res.status !== 200
             ) {
-              responseText += await res.clone().json();
-              return finish();
-            }
-            if (res.status === 401) {
               let extraInfo = { error: undefined };
               try {
                 extraInfo = await res.clone().json();
               } catch {}
 
-              responseText += "\n\n" + Locale.Error.Unauthorized;
+              if (res.status === 401) {
+                if (responseText.length > 0) {
+                  responseText += "\n\n";
+                }
+                responseText += Locale.Error.Unauthorized;
+              }
 
               if (extraInfo.error) {
                 responseText += "\n\n" + prettyObject(extraInfo);