diff --git a/app/api/common.ts b/app/api/common.ts index 03247539a..c650c545b 100644 --- a/app/api/common.ts +++ b/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); diff --git a/app/store/config.ts b/app/store/config.ts index 6802a402b..1e960456f 100644 --- a/app/store/config.ts +++ b/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, diff --git a/app/store/update.ts b/app/store/update.ts index 00a2edda1..5a9bec9d7 100644 --- a/app/store/update.ts +++ b/app/store/update.ts @@ -84,7 +84,7 @@ export const useUpdateStore = create()( })); } } catch (e) { - showToast((e as Error).message); + console.error((e as Error).message); } }, }),