Spaces:
Build error
Build error
| import { type OpenAIListModelResponse } from "@/app/client/platforms/openai"; | |
| import { getServerSideConfig } from "@/app/config/server"; | |
| import { OpenaiPath } from "@/app/constant"; | |
| import { prettyObject } from "@/app/utils/format"; | |
| import { NextRequest, NextResponse } from "next/server"; | |
| import { auth } from "../../auth"; | |
| import { requestOpenai } from "../../common"; | |
| const ALLOWD_PATH = new Set(Object.values(OpenaiPath)); | |
| function getModels(remoteModelRes: OpenAIListModelResponse) { | |
| const config = getServerSideConfig(); | |
| if (config.disableGPT4) { | |
| remoteModelRes.data = remoteModelRes.data.filter( | |
| (m) => !m.id.startsWith("gpt-4"), | |
| ); | |
| } | |
| return remoteModelRes; | |
| } | |
| async function handle( | |
| req: NextRequest, | |
| { params }: { params: { path: string[] } }, | |
| ) { | |
| console.log("[OpenAI Route] params ", params); | |
| if (req.method === "OPTIONS") { | |
| return NextResponse.json({ body: "OK" }, { status: 200 }); | |
| } | |
| const subpath = params.path.join("/"); | |
| if (!ALLOWD_PATH.has(subpath)) { | |
| console.log("[OpenAI Route] forbidden path ", subpath); | |
| return NextResponse.json( | |
| { | |
| error: true, | |
| msg: "you are not allowed to request " + subpath, | |
| }, | |
| { | |
| status: 403, | |
| }, | |
| ); | |
| } | |
| const authResult = auth(req); | |
| if (authResult.error) { | |
| return NextResponse.json(authResult, { | |
| status: 401, | |
| }); | |
| } | |
| try { | |
| const response = await requestOpenai(req); | |
| // list models | |
| if (subpath === OpenaiPath.ListModelPath && response.status === 200) { | |
| const resJson = (await response.json()) as OpenAIListModelResponse; | |
| const availableModels = getModels(resJson); | |
| return NextResponse.json(availableModels, { | |
| status: response.status, | |
| }); | |
| } | |
| return response; | |
| } catch (e) { | |
| console.error("[OpenAI] ", e); | |
| return NextResponse.json(prettyObject(e)); | |
| } | |
| } | |
| export const GET = handle; | |
| export const POST = handle; | |
| export const runtime = "edge"; | |