新增深度思考,修复:分割符,修正报错提醒

This commit is contained in:
ACT丶流星雨 2026-04-13 00:53:51 +08:00
parent 6b9d9eb583
commit 202843aedd
12 changed files with 131 additions and 164 deletions

View File

@ -401,14 +401,18 @@ async function consumeFullStream(
} else if (chunk.type === "text-delta") {
text.append(chunk.text);
fullResponse += chunk.text;
} else if (chunk.type === "error") {
throw chunk.error;
}
}
text.complete();
msg.complete();
} catch (err: any) {
thinking?.complete();
text.complete();
msg.stop();
const errMsg = err?.message ?? String(err);
text.append(errMsg);
text.error();
msg.error();
throw err;
}

View File

@ -111,7 +111,7 @@ function createSubAgent(parentCtx: AgentContext) {
parentCtx.msg.complete();
const subMsg = resTool.newMessage("assistant", name);
const { fullStream } = await u.Ai.Text("scriptAgent", parentCtx.thinkConfig.think, parentCtx.thinkConfig.thinlLevel ).stream({
const { fullStream } = await u.Ai.Text("scriptAgent", parentCtx.thinkConfig.think, parentCtx.thinkConfig.thinlLevel).stream({
system,
messages: messages ?? [{ role: "user", content: prompt }],
abortSignal,
@ -260,14 +260,18 @@ async function consumeFullStream(
} else if (chunk.type === "text-delta") {
text.append(chunk.text);
fullResponse += chunk.text;
} else if (chunk.type === "error") {
throw chunk.error;
}
}
text.complete();
msg.complete();
} catch (err: any) {
thinking?.complete();
text.complete();
msg.stop();
const errMsg = err?.message ?? String(err);
text.append(errMsg);
text.error();
msg.error();
throw err;
}

File diff suppressed because one or more lines are too long

10
src/lib/vendor.json Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,4 @@
<<<<<<< HEAD
// @routes-hash 4d6cbfaad479bdfafe13bc61e7550f55
=======
// @routes-hash e4baae699964f90e2e79664131c1c486
>>>>>>> 00fb3993f5cea32d192ac8db82c2a1ae690e09a3
// @routes-hash 0693afa45240a846389e06cf3b11dc91
import { Express } from "express";
import route1 from "./routes/agents/clearMemory";
@ -53,50 +49,50 @@ import route45 from "./routes/novel/getNovelEventState";
import route46 from "./routes/novel/getNovelIndex";
import route47 from "./routes/novel/updateNovel";
import route48 from "./routes/other/deleteAllData";
import route49 from "./routes/other/getModelDetails";
import route50 from "./routes/other/getVersion";
import route51 from "./routes/production/assets/batchGenerateAssetsImage";
import route52 from "./routes/production/assets/deleteAssetsDireve";
import route53 from "./routes/production/assets/getAssetsData";
import route54 from "./routes/production/assets/pollingImage";
import route55 from "./routes/production/assets/updateAssetsUrl";
import route56 from "./routes/production/editImage/generateFlowImage";
import route57 from "./routes/production/editImage/getImageDefaultModle";
import route58 from "./routes/production/editImage/getImageFlow";
import route59 from "./routes/production/editImage/saveImageFlow";
import route60 from "./routes/production/editImage/updateImageFlow";
import route61 from "./routes/production/editImage/uploadImage";
import route62 from "./routes/production/getFlowData";
import route63 from "./routes/production/getStoryboardData";
import route64 from "./routes/production/saveFlowData";
import route65 from "./routes/production/storyboard/addStoryboard";
import route66 from "./routes/production/storyboard/batchAddStoryboardInfo";
import route67 from "./routes/production/storyboard/batchGenerateImage";
import route68 from "./routes/production/storyboard/downPreviewImage";
import route69 from "./routes/production/storyboard/editStoryboardInfo";
import route70 from "./routes/production/storyboard/getStoryboardData";
import route71 from "./routes/production/storyboard/pollingImage";
import route72 from "./routes/production/storyboard/previewImage";
import route73 from "./routes/production/storyboard/removeFrame";
import route74 from "./routes/production/storyboard/updateStoryboardUrl";
import route75 from "./routes/production/workbench/addTrack";
import route76 from "./routes/production/workbench/deleteTrack";
import route77 from "./routes/production/workbench/delVideo";
import route78 from "./routes/production/workbench/generateVideo";
import route79 from "./routes/production/workbench/generateVideoPrompt";
import route80 from "./routes/production/workbench/getGenerateData";
import route81 from "./routes/production/workbench/getVideoList";
import route82 from "./routes/production/workbench/selectVideo";
import route83 from "./routes/production/workbench/updateVideoPrompt";
import route84 from "./routes/project/addDirectorManual";
import route85 from "./routes/project/addProject";
import route86 from "./routes/project/addVisualManual";
import route87 from "./routes/project/deleteDirectorManual";
import route88 from "./routes/project/deleteVisualManual";
import route89 from "./routes/project/delProject";
import route90 from "./routes/project/editDirectorlManual";
import route91 from "./routes/project/editProject";
import route92 from "./routes/project/editVisualManual";
import route49 from "./routes/other/getVersion";
import route50 from "./routes/production/assets/batchGenerateAssetsImage";
import route51 from "./routes/production/assets/deleteAssetsDireve";
import route52 from "./routes/production/assets/getAssetsData";
import route53 from "./routes/production/assets/pollingImage";
import route54 from "./routes/production/assets/updateAssetsUrl";
import route55 from "./routes/production/editImage/generateFlowImage";
import route56 from "./routes/production/editImage/getImageDefaultModle";
import route57 from "./routes/production/editImage/getImageFlow";
import route58 from "./routes/production/editImage/saveImageFlow";
import route59 from "./routes/production/editImage/updateImageFlow";
import route60 from "./routes/production/editImage/uploadImage";
import route61 from "./routes/production/getFlowData";
import route62 from "./routes/production/getStoryboardData";
import route63 from "./routes/production/saveFlowData";
import route64 from "./routes/production/storyboard/addStoryboard";
import route65 from "./routes/production/storyboard/batchAddStoryboardInfo";
import route66 from "./routes/production/storyboard/batchGenerateImage";
import route67 from "./routes/production/storyboard/downPreviewImage";
import route68 from "./routes/production/storyboard/editStoryboardInfo";
import route69 from "./routes/production/storyboard/getStoryboardData";
import route70 from "./routes/production/storyboard/pollingImage";
import route71 from "./routes/production/storyboard/previewImage";
import route72 from "./routes/production/storyboard/removeFrame";
import route73 from "./routes/production/storyboard/updateStoryboardUrl";
import route74 from "./routes/production/workbench/addTrack";
import route75 from "./routes/production/workbench/deleteTrack";
import route76 from "./routes/production/workbench/delVideo";
import route77 from "./routes/production/workbench/generateVideo";
import route78 from "./routes/production/workbench/generateVideoPrompt";
import route79 from "./routes/production/workbench/getGenerateData";
import route80 from "./routes/production/workbench/getVideoList";
import route81 from "./routes/production/workbench/selectVideo";
import route82 from "./routes/production/workbench/updateVideoPrompt";
import route83 from "./routes/project/addDirectorManual";
import route84 from "./routes/project/addProject";
import route85 from "./routes/project/addVisualManual";
import route86 from "./routes/project/deleteDirectorManual";
import route87 from "./routes/project/deleteVisualManual";
import route88 from "./routes/project/delProject";
import route89 from "./routes/project/editDirectorlManual";
import route90 from "./routes/project/editProject";
import route91 from "./routes/project/editVisualManual";
import route92 from "./routes/project/getModelDetails";
import route93 from "./routes/project/getProject";
import route94 from "./routes/project/getVisualManual";
import route95 from "./routes/project/queryDirectorManual";
@ -199,50 +195,50 @@ export default async (app: Express) => {
app.use("/api/novel/getNovelIndex", route46);
app.use("/api/novel/updateNovel", route47);
app.use("/api/other/deleteAllData", route48);
app.use("/api/other/getModelDetails", route49);
app.use("/api/other/getVersion", route50);
app.use("/api/production/assets/batchGenerateAssetsImage", route51);
app.use("/api/production/assets/deleteAssetsDireve", route52);
app.use("/api/production/assets/getAssetsData", route53);
app.use("/api/production/assets/pollingImage", route54);
app.use("/api/production/assets/updateAssetsUrl", route55);
app.use("/api/production/editImage/generateFlowImage", route56);
app.use("/api/production/editImage/getImageDefaultModle", route57);
app.use("/api/production/editImage/getImageFlow", route58);
app.use("/api/production/editImage/saveImageFlow", route59);
app.use("/api/production/editImage/updateImageFlow", route60);
app.use("/api/production/editImage/uploadImage", route61);
app.use("/api/production/getFlowData", route62);
app.use("/api/production/getStoryboardData", route63);
app.use("/api/production/saveFlowData", route64);
app.use("/api/production/storyboard/addStoryboard", route65);
app.use("/api/production/storyboard/batchAddStoryboardInfo", route66);
app.use("/api/production/storyboard/batchGenerateImage", route67);
app.use("/api/production/storyboard/downPreviewImage", route68);
app.use("/api/production/storyboard/editStoryboardInfo", route69);
app.use("/api/production/storyboard/getStoryboardData", route70);
app.use("/api/production/storyboard/pollingImage", route71);
app.use("/api/production/storyboard/previewImage", route72);
app.use("/api/production/storyboard/removeFrame", route73);
app.use("/api/production/storyboard/updateStoryboardUrl", route74);
app.use("/api/production/workbench/addTrack", route75);
app.use("/api/production/workbench/deleteTrack", route76);
app.use("/api/production/workbench/delVideo", route77);
app.use("/api/production/workbench/generateVideo", route78);
app.use("/api/production/workbench/generateVideoPrompt", route79);
app.use("/api/production/workbench/getGenerateData", route80);
app.use("/api/production/workbench/getVideoList", route81);
app.use("/api/production/workbench/selectVideo", route82);
app.use("/api/production/workbench/updateVideoPrompt", route83);
app.use("/api/project/addDirectorManual", route84);
app.use("/api/project/addProject", route85);
app.use("/api/project/addVisualManual", route86);
app.use("/api/project/deleteDirectorManual", route87);
app.use("/api/project/deleteVisualManual", route88);
app.use("/api/project/delProject", route89);
app.use("/api/project/editDirectorlManual", route90);
app.use("/api/project/editProject", route91);
app.use("/api/project/editVisualManual", route92);
app.use("/api/other/getVersion", route49);
app.use("/api/production/assets/batchGenerateAssetsImage", route50);
app.use("/api/production/assets/deleteAssetsDireve", route51);
app.use("/api/production/assets/getAssetsData", route52);
app.use("/api/production/assets/pollingImage", route53);
app.use("/api/production/assets/updateAssetsUrl", route54);
app.use("/api/production/editImage/generateFlowImage", route55);
app.use("/api/production/editImage/getImageDefaultModle", route56);
app.use("/api/production/editImage/getImageFlow", route57);
app.use("/api/production/editImage/saveImageFlow", route58);
app.use("/api/production/editImage/updateImageFlow", route59);
app.use("/api/production/editImage/uploadImage", route60);
app.use("/api/production/getFlowData", route61);
app.use("/api/production/getStoryboardData", route62);
app.use("/api/production/saveFlowData", route63);
app.use("/api/production/storyboard/addStoryboard", route64);
app.use("/api/production/storyboard/batchAddStoryboardInfo", route65);
app.use("/api/production/storyboard/batchGenerateImage", route66);
app.use("/api/production/storyboard/downPreviewImage", route67);
app.use("/api/production/storyboard/editStoryboardInfo", route68);
app.use("/api/production/storyboard/getStoryboardData", route69);
app.use("/api/production/storyboard/pollingImage", route70);
app.use("/api/production/storyboard/previewImage", route71);
app.use("/api/production/storyboard/removeFrame", route72);
app.use("/api/production/storyboard/updateStoryboardUrl", route73);
app.use("/api/production/workbench/addTrack", route74);
app.use("/api/production/workbench/deleteTrack", route75);
app.use("/api/production/workbench/delVideo", route76);
app.use("/api/production/workbench/generateVideo", route77);
app.use("/api/production/workbench/generateVideoPrompt", route78);
app.use("/api/production/workbench/getGenerateData", route79);
app.use("/api/production/workbench/getVideoList", route80);
app.use("/api/production/workbench/selectVideo", route81);
app.use("/api/production/workbench/updateVideoPrompt", route82);
app.use("/api/project/addDirectorManual", route83);
app.use("/api/project/addProject", route84);
app.use("/api/project/addVisualManual", route85);
app.use("/api/project/deleteDirectorManual", route86);
app.use("/api/project/deleteVisualManual", route87);
app.use("/api/project/delProject", route88);
app.use("/api/project/editDirectorlManual", route89);
app.use("/api/project/editProject", route90);
app.use("/api/project/editVisualManual", route91);
app.use("/api/project/getModelDetails", route92);
app.use("/api/project/getProject", route93);
app.use("/api/project/getVisualManual", route94);
app.use("/api/project/queryDirectorManual", route95);

View File

@ -141,7 +141,7 @@ export default router.post("/", validateFields(requestSchema), async (req, res)
state: "已完成",
filePath: imagePath,
type: item.type,
model: model.split(":")[1],
model: model.split(/:(.+)/)[1],
resolution,
});

View File

@ -123,7 +123,7 @@ export default router.post("/", validateFields(requestSchema), async (req, res)
state: "已完成",
filePath: imagePath,
type,
model: model.split(":")[1],
model: model.split(/:(.+)/)[1],
resolution,
});

View File

@ -8,11 +8,12 @@ const router = express.Router();
export default router.post(
"/",
validateFields({
key: z.string().optional(),
key: z.enum(["scriptAgent", "productionAgent"]),
}),
async (req, res) => {
const { key } = req.body;
const [id, modelName] = key ? key.split(":") : [];
const data = await u.db("o_agentDeploy").select("o_agentDeploy.*").where("o_agentDeploy.key", key).first();
const [id, modelName] = data ? data.modelName.split(/:(.+)/) : [];
const models = await u.vendor.getModelList(id);
const model = models.find((m) => m.modelName === modelName);
if (!model) return res.status(400).send(error("未找到模型"));

View File

@ -78,10 +78,7 @@ export default (nsp: Namespace) => {
await agent.runDecisionAI(ctx);
} catch (err: any) {
if (err.name !== "AbortError" && !currentController.signal.aborted) {
const errorMsg = u.error(err).message;
console.error("[productionAgent] chat error:", errorMsg);
ctx.msg.text(errorMsg).complete();
ctx.msg.error();
console.error("[productionAgent] chat error:", u.error(err).message);
}
} finally {
if (abortController === currentController) {

View File

@ -41,9 +41,9 @@ export default (nsp: Namespace) => {
let abortController: AbortController | null = null;
const thinkConfig: agent.AgentContext["thinkConfig"] = {
think:false,
think: false,
thinlLevel: 0,
}
};
socket.on("chat", async (data: { content: string }) => {
const { content } = data;
@ -67,10 +67,7 @@ export default (nsp: Namespace) => {
await agent.runDecisionAI(ctx);
} catch (err: any) {
if (err.name !== "AbortError" && !currentController.signal.aborted) {
const errorMsg = u.error(err).message;
console.error("[scriptAgent] chat error:", errorMsg);
ctx.msg.text(errorMsg).complete();
ctx.msg.error();
console.error("[scriptAgent] chat error:", u.error(err).message);
}
} finally {
if (abortController === currentController) {

View File

@ -1,41 +1,6 @@
<<<<<<< HEAD
// @db-hash 9248d7bcfe0a1bc57e5b9bc33d8c7d83
=======
// @db-hash 418553a1e8e732a796c512008db61467
>>>>>>> 00fb3993f5cea32d192ac8db82c2a1ae690e09a3
//该文件由脚本自动生成,请勿手动修改
export interface _o_project_old_20260404 {
'artStyle'?: string | null;
'createTime'?: number | null;
'directorManual'?: string | null;
'id'?: number | null;
'imageModel'?: string | null;
'imageQuality'?: string | null;
'intro'?: string | null;
'mode'?: string | null;
'name'?: string | null;
'projectType'?: string | null;
'type'?: string | null;
'userId'?: number | null;
'videoModel'?: string | null;
'videoRatio'?: string | null;
}
export interface _o_prompt_old_20260406 {
'data'?: string | null;
'id'?: number;
'name'?: string | null;
'type'?: string | null;
'useData'?: string | null;
}
export interface _o_prompt_old_20260406_1 {
'data'?: string | null;
'id'?: number;
'name'?: string | null;
'TEXT'?: any | null;
'type'?: string | null;
'useData'?: string | null;
}
export interface memories {
'content': string;
'createTime': number;
@ -264,9 +229,6 @@ export interface o_videoTrack {
}
export interface DB {
"_o_project_old_20260404": _o_project_old_20260404;
"_o_prompt_old_20260406": _o_prompt_old_20260406;
"_o_prompt_old_20260406_1": _o_prompt_old_20260406_1;
"memories": memories;
"o_agentDeploy": o_agentDeploy;
"o_agentWorkData": o_agentWorkData;

View File

@ -105,6 +105,7 @@ class AiText {
...(input.tools && { stopWhen: stepCountIs(Object.keys(input.tools).length * 50) }),
...input,
model: await this.resolveModel(),
temperature: 2,
} as Parameters<typeof generateText>[0]);
}
async stream(input: Omit<Parameters<typeof streamText>[0], "model">) {
@ -112,6 +113,9 @@ class AiText {
...(input.tools && { stopWhen: stepCountIs(Object.keys(input.tools).length * 50) }),
...input,
model: await this.resolveModel(extractReasoningMiddleware({ tagName: "reasoning_content", separator: "\n" })),
topP: 1,
temperature: 2,
maxOutputTokens: 9999999999,
} as Parameters<typeof streamText>[0]);
}
}
@ -151,7 +155,7 @@ class AiImage {
const modelName = await resolveModelName(this.key);
const exec = async (mn: `${string}:${string}`) => {
const fn = await getVendorTemplateFn("imageRequest", mn);
await referenceList2imageBase642(mn.split(":")[0], input);
await referenceList2imageBase642(mn.split(/:(.+)/)[0], input);
this.result = await fn(input);
if (this.result.startsWith("http")) this.result = await urlToBase64(this.result);
return this;
@ -195,7 +199,7 @@ class AiVideo {
const modelName = await resolveModelName(this.key);
const exec = async (mn: `${string}:${string}`) => {
const fn = await getVendorTemplateFn("videoRequest", mn);
await referenceList2imageBase642(mn.split(":")[0], input);
await referenceList2imageBase642(mn.split(/:(.+)/)[0], input);
this.result = await fn(input);
if (this.result.startsWith("http")) this.result = await urlToBase64(this.result);
return this;
@ -220,7 +224,7 @@ class AiAudio {
const modelName = await resolveModelName(this.key);
const exec = async (mn: `${string}:${string}`) => {
const fn = await getVendorTemplateFn("ttsRequest", mn);
await referenceList2imageBase642(mn.split(":")[0], input);
await referenceList2imageBase642(mn.split(/:(.+)/)[0], input);
this.result = await fn(input);
if (this.result.startsWith("http")) this.result = await urlToBase64(this.result);
return this;