36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import express from "express";
|
||
import u from "@/utils";
|
||
import { z } from "zod";
|
||
import { success } from "@/lib/responseFormat";
|
||
import { validateFields } from "@/middleware/middleware";
|
||
const router = express.Router();
|
||
|
||
export default router.post(
|
||
"/",
|
||
validateFields({
|
||
content: z.string(),
|
||
}),
|
||
async (req, res) => {
|
||
const { content } = req.body;
|
||
const systemPrompt = `你是一个正则表达式专家。用户会提供一段剧本文本,你需要分析其中的集/章节分隔模式,返回一个JavaScript正则表达式字符串。
|
||
|
||
要求:
|
||
1. 正则必须包含两个捕获组:第一个捕获组匹配集数/章节编号(数字或中文数字),第二个捕获组匹配该集的标题/名称(scriptName)。
|
||
2. 返回格式为 /正则表达式/g,例如:/第\s*([0-9一二三四五六七八九十百千万]+)\s*集\s*([^\n\r]*)/g
|
||
3. 只返回正则表达式字符串本身,不要有任何其他解释文字或markdown格式。
|
||
4. 如果文本中没有明显的章节分隔模式,返回空字符串。`;
|
||
|
||
const resText = await u.Ai.Text("universalAi").invoke({
|
||
system: systemPrompt,
|
||
messages: [
|
||
{
|
||
role: "user",
|
||
content: content.slice(0, 2000),
|
||
},
|
||
],
|
||
});
|
||
const result = (resText.text || "").trim();
|
||
res.status(200).send(success(result));
|
||
},
|
||
);
|