Browse Source

fix: #1815 refuse to serve when disable gpt4

Yidadaa 1 year ago
parent
commit
37da759fd5
3 changed files with 24 additions and 11 deletions
  1. 23 2
      app/api/common.ts
  2. 0 8
      app/store/config.ts
  3. 1 1
      app/store/update.ts

+ 23 - 2
app/api/common.ts

@@ -1,9 +1,10 @@
-import { NextRequest } from "next/server";
+import { NextRequest, NextResponse } from "next/server";
 
 export const OPENAI_URL = "api.openai.com";
 const DEFAULT_PROTOCOL = "https";
 const PROTOCOL = process.env.PROTOCOL ?? DEFAULT_PROTOCOL;
 const BASE_URL = process.env.BASE_URL ?? OPENAI_URL;
+const DISABLE_GPT4 = !!process.env.DISABLE_GPT4;
 
 export async function requestOpenai(req: NextRequest) {
   const controller = new AbortController();
@@ -41,10 +42,30 @@ export async function requestOpenai(req: NextRequest) {
     },
     cache: "no-store",
     method: req.method,
-    body: req.body,
+    body: req.clone().body,
     signal: controller.signal,
   };
 
+  // #1815 try to refuse gpt4 request
+  if (DISABLE_GPT4) {
+    try {
+      const clonedBody = await req.clone().json();
+      if ((clonedBody?.model ?? "").includes("gpt-4")) {
+        return NextResponse.json(
+          {
+            error: true,
+            message: "you are not allowed to use gpt-4 model",
+          },
+          {
+            status: 403,
+          },
+        );
+      }
+    } catch (e) {
+      console.error("[OpenAI] gpt4 filter", e);
+    }
+  }
+
   try {
     const res = await fetch(fetchUrl, fetchOptions);
 

+ 0 - 8
app/store/config.ts

@@ -68,14 +68,6 @@ export const ALL_MODELS = [
     name: "gpt-4-32k-0314",
     available: ENABLE_GPT4,
   },
-  {
-    name: "gpt-4-mobile",
-    available: ENABLE_GPT4,
-  },
-  {
-    name: "text-davinci-002-render-sha-mobile",
-    available: true,
-  },
   {
     name: "gpt-3.5-turbo",
     available: true,

+ 1 - 1
app/store/update.ts

@@ -84,7 +84,7 @@ export const useUpdateStore = create<UpdateStore>()(
             }));
           }
         } catch (e) {
-          showToast((e as Error).message);
+          console.error((e as Error).message);
         }
       },
     }),