ChatGPT-Next-Web/app/api/logs/[...path]/route.ts
2023-12-28 18:34:47 +08:00

64 lines
1.8 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import prisma from "@/lib/prisma";
import { insertUser } from "@/lib/auth";
// import { getTokenLength } from "@/app/utils/token";
// import { Tiktoken } from "tiktoken/lite"
// import cl100k_base from "tiktoken/encoders/cl100k_base.json"
import "tiktoken";
import { get_encoding } from "tiktoken";
function getTokenLength(input: string): number {
// const { Tiktoken } = require("tiktoken/lite");
// const cl100k_base = require("tiktoken/encoders/cl100k_base.json");
// const encoding = new Tiktoken(
// cl100k_base.bpe_ranks,
// cl100k_base.special_tokens,
// cl100k_base.pat_str,
// );
const encoding = get_encoding("cl100k_base");
const tokenLength = encoding.encode(input).length;
// console.log('[TOKEN],=========', input, tokenLength)
return tokenLength;
}
async function handle(
req: NextRequest,
{ params }: { params: { path: string[] } },
) {
try {
const request_data = await req.json();
if (request_data?.userName) {
await insertUser({ name: request_data?.userName });
}
// console.log("===========4", request_data);
try {
if (request_data?.logEntry) {
const regex = /\[(.*)]/g;
const matchResponse = request_data.logEntry.match(regex);
if (matchResponse.length > 0) {
request_data.logToken = getTokenLength(matchResponse[0]);
}
}
} catch (e) {
console.log("[LOG]", "logToken", e);
request_data.logToken = 0;
}
await prisma.logEntry.create({
data: request_data,
});
} catch (e) {
console.log("[LOG]", e);
return NextResponse.json({ status: 0 });
}
return NextResponse.json({ status: 1 });
}
export const GET = handle;
export const POST = handle;
// export const runtime = "edge";