38 lines
1.6 KiB
TypeScript
38 lines
1.6 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({
|
||
images: z.array(z.string()),
|
||
}),
|
||
async (req, res) => {
|
||
const { images } = req.body;
|
||
try {
|
||
const resText = await u.Ai.Text("universalAi").invoke({
|
||
system:
|
||
'请根据以下图片数据,提取出图片的画风提示词,用于生成图片时指定风格,要求简洁且具有艺术性,只需要画风提示词,不需要其他内容:"比如:`(画风:2D动漫风格,2d animation style)`,`(画风:照片级真人超写实,photorealistic, lifelike, ultra detailed)`,`(画风:3D国创,Chinese 3D animation style)`等,如果图片风格无法描述,可以返回`无法描述`,多张图片时,只输出一个综合的画风提示词,要求包含所有图片的共同风格特征,输出格式必须严格按照示例中的格式,必须包含`画风`二字,且必须使用括号括起来,括号内必须包含中文和英文的画风描述,并用逗号分隔,英文部分需要翻译成地道的英文提示词',
|
||
messages: [
|
||
{
|
||
role: "user",
|
||
content: [
|
||
...images.map((image: string) => ({
|
||
type: "image" as const,
|
||
image,
|
||
})),
|
||
],
|
||
},
|
||
],
|
||
});
|
||
res.status(200).send(success(resText.text));
|
||
} catch (e) {
|
||
const err = u.error(e);
|
||
res.status(500).send({ message: err.message });
|
||
}
|
||
},
|
||
);
|