|
@@ -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);
|
|
|
|