|
|
@ -1,9 +1,10 @@
|
|
|
|
import { NextRequest } from "next/server";
|
|
|
|
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
|
|
|
|
|
|
|
|
export const OPENAI_URL = "api.openai.com";
|
|
|
|
export const OPENAI_URL = "api.openai.com";
|
|
|
|
const DEFAULT_PROTOCOL = "https";
|
|
|
|
const DEFAULT_PROTOCOL = "https";
|
|
|
|
const PROTOCOL = process.env.PROTOCOL ?? DEFAULT_PROTOCOL;
|
|
|
|
const PROTOCOL = process.env.PROTOCOL ?? DEFAULT_PROTOCOL;
|
|
|
|
const BASE_URL = process.env.BASE_URL ?? OPENAI_URL;
|
|
|
|
const BASE_URL = process.env.BASE_URL ?? OPENAI_URL;
|
|
|
|
|
|
|
|
const DISABLE_GPT4 = !!process.env.DISABLE_GPT4;
|
|
|
|
|
|
|
|
|
|
|
|
export async function requestOpenai(req: NextRequest) {
|
|
|
|
export async function requestOpenai(req: NextRequest) {
|
|
|
|
const controller = new AbortController();
|
|
|
|
const controller = new AbortController();
|
|
|
@ -41,10 +42,30 @@ export async function requestOpenai(req: NextRequest) {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
cache: "no-store",
|
|
|
|
cache: "no-store",
|
|
|
|
method: req.method,
|
|
|
|
method: req.method,
|
|
|
|
body: req.body,
|
|
|
|
body: req.clone().body,
|
|
|
|
signal: controller.signal,
|
|
|
|
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 {
|
|
|
|
try {
|
|
|
|
const res = await fetch(fetchUrl, fetchOptions);
|
|
|
|
const res = await fetch(fetchUrl, fetchOptions);
|
|
|
|
|
|
|
|
|
|
|
|