Commit c7067e16 authored by 周成波's avatar 周成波

分镜角色优化

parent 895b3a86
...@@ -201,8 +201,9 @@ const onAdaptRolesKeywords = async () => { ...@@ -201,8 +201,9 @@ const onAdaptRolesKeywords = async () => {
// const adapt_attribute_restrict_en = `你现在扮演专业的英语翻译的角色。请将这段文字“${keywords}”翻译为英语。\n要求:只返回英语即可,不要返回其他内容。`; // const adapt_attribute_restrict_en = `你现在扮演专业的英语翻译的角色。请将这段文字“${keywords}”翻译为英语。\n要求:只返回英语即可,不要返回其他内容。`;
// let keywords_en = await text2videoService.submitLLM(adapt_attribute_restrict_en, role_keywords_llm.api); // let keywords_en = await text2videoService.submitLLM(adapt_attribute_restrict_en, role_keywords_llm.api);
let keywords_en = await text2videoService.submitTranslateToEn(keywords); let keywords_en = await text2videoService.submitTranslateToEn(keywords);
console.log(keywords_en) // console.log(keywords_en)
keywords_en = utils.filterChineseAndPunctuation(keywords_en.replace(/"/g, '')); // keywords_en = utils.filterChineseAndPunctuation(keywords_en.replace(/"/g, ''));
keywords_en = keywords_en.replace(/"/g, '');
one_role.角色关键词英文 = keywords_en; one_role.角色关键词英文 = keywords_en;
} }
} }
...@@ -255,6 +256,7 @@ const onAdapt = async () => { ...@@ -255,6 +256,7 @@ const onAdapt = async () => {
"本镜配图": "src/assets/waiting.png", "本镜配图": "src/assets/waiting.png",
"local_image_path": "", "local_image_path": "",
"info": "", "info": "",
"roles": [],
}); });
} }
console.log(form.adapt_result_json) console.log(form.adapt_result_json)
...@@ -329,7 +331,8 @@ const onAdaptOneScene = async (item: any) => { ...@@ -329,7 +331,8 @@ const onAdaptOneScene = async (item: any) => {
// const keywords_en = await text2videoService.submitLLM(adapt_restrict_en, tuili_llm.api); // const keywords_en = await text2videoService.submitLLM(adapt_restrict_en, tuili_llm.api);
let keywords_en = await text2videoService.submitTranslateToEn(keywords); let keywords_en = await text2videoService.submitTranslateToEn(keywords);
// console.log(keywords_en) // console.log(keywords_en)
item.场景关键词英文 = utils.filterChineseAndPunctuation(keywords_en); // item.场景关键词英文 = utils.filterChineseAndPunctuation(keywords_en.replace(/"/g, ''));
item.场景关键词英文 = keywords_en.replace(/"/g, '');
} catch (error) { } catch (error) {
ElMessage({ ElMessage({
message: String(error), message: String(error),
...@@ -399,13 +402,30 @@ const onAdaptOneSceneRoles = async (item: any) => { ...@@ -399,13 +402,30 @@ const onAdaptOneSceneRoles = async (item: any) => {
// 总角色不为空 // 总角色不为空
// const adapt_role_restrict = `请理解这个故事:“${form.chatgpt_answer}”,针对其中的这个场景:“${item.场景描述}”,从所有角色:“${form.all_roles}”中选择本场景的角色,多个角色以逗号分隔。`; // const adapt_role_restrict = `请理解这个故事:“${form.chatgpt_answer}”,针对其中的这个场景:“${item.场景描述}”,从所有角色:“${form.all_roles}”中选择本场景的角色,多个角色以逗号分隔。`;
const adapt_role_restrict = `整个故事(“${form.chatgpt_answer}),\n\n本章节(${item.场景描述}),\n\n角色列表(${form.all_roles}),\n\n请返回给本章节出现的角色。注意:不要发挥想象,必须从角色列表中选出本章节出现过的角色,如果多个用逗号隔开。`; const adapt_role_restrict = `整个故事(“${form.chatgpt_answer}),\n\n本章节(${item.场景描述}),\n\n角色列表(${form.all_roles}),\n\n请返回给本章节出现的角色。注意:不要发挥想象,必须从角色列表中选出本章节出现过的角色,如果多个用逗号隔开。`;
const item_roles = await text2videoService.submitLLM(adapt_role_restrict, tuili_keyword_llm.api); const item_roles_answer = await text2videoService.submitLLM(adapt_role_restrict, tuili_keyword_llm.api);
console.log(`==============${item.编号}===============`) console.log(`==============${item.编号}===============`)
// console.log(adapt_role_restrict) // console.log(adapt_role_restrict)
console.log(`推理返回:${item_roles}`) item.info = `推理返回:${item_roles_answer}`
item.info = `推理返回:${item_roles}` const item_roles_answer_list = item_roles_answer.trim().split(/[,,、]/);
item.角色 = item_roles.trim(); // 过滤推理出来的角色,都要在总角色里
item.roles = ['无角色'];
for (const y of form.chatgpt_answer_roles) { item.roles.push(y.角色); }
item.角色 = '无角色';
let filter_result = '';
for (const x of item_roles_answer_list) {
for (const y of form.chatgpt_answer_roles) {
if (x == y.角色) {
filter_result += x+',';
// 下拉列表添加项目
// item.roles.push(x);
}
}
}
if (filter_result.endsWith(',')) {
filter_result = filter_result.slice(0, -1); // 去掉结尾的逗号
}
if (filter_result) {item.角色 = filter_result;}
////// 加一段逻辑,本镜角色有且只能有一个,且尽量不与之前相同。【begin】 ////// 加一段逻辑,本镜角色有且只能有一个,且尽量不与之前相同。【begin】
const temp_arr = item.角色.split(/[,,、]/); const temp_arr = item.角色.split(/[,,、]/);
const temp_arr_length = temp_arr.length; const temp_arr_length = temp_arr.length;
...@@ -436,7 +456,7 @@ const onAdaptOneSceneRoles = async (item: any) => { ...@@ -436,7 +456,7 @@ const onAdaptOneSceneRoles = async (item: any) => {
if (remainingValues.length >= 1) { if (remainingValues.length >= 1) {
item.角色 = remainingValues[remainingValues.length - 1]; item.角色 = remainingValues[remainingValues.length - 1];
} else { } else {
item.角色 = item_roles.trim(); item.角色 = item_roles_answer.trim();
} }
console.log(`lalalalala item.角色 = ${item.角色}`) console.log(`lalalalala item.角色 = ${item.角色}`)
} }
...@@ -485,6 +505,22 @@ const onAdaptOneSceneRoles = async (item: any) => { ...@@ -485,6 +505,22 @@ const onAdaptOneSceneRoles = async (item: any) => {
} }
}; };
const onItemRolesChange = (item: any) => {
console.log(item.编号, item.角色);
if (item.角色 == "无角色") {
item.角色关键词 = "";
item.角色关键词英文 = "";
} else {
for (const y of form.chatgpt_answer_roles) {
if (item.角色 == y.角色) {
item.角色关键词 = y.角色关键词;
item.角色关键词英文 = y.角色关键词英文;
break;
}
}
}
}
const onDraw = async () => { const onDraw = async () => {
if (!form.adapt_result_json || form.adapt_result_json.length == 0) { if (!form.adapt_result_json || form.adapt_result_json.length == 0) {
...@@ -679,8 +715,8 @@ const onChangeScreen = (val: string) => { ...@@ -679,8 +715,8 @@ const onChangeScreen = (val: string) => {
form.final_video = default_data.vertical_data.final_video; form.final_video = default_data.vertical_data.final_video;
} }
marketing_template.if_need_product_pic = 'true'; // marketing_template.if_need_product_pic = 'true';
marketing_template.if_need_cover_pic = 'true'; // marketing_template.if_need_cover_pic = 'true';
} }
marketing_template.product_name = default_data.marketing_template.product_name; marketing_template.product_name = default_data.marketing_template.product_name;
...@@ -1154,7 +1190,14 @@ const onMarketingTemplateSubmitGpt = async () => { ...@@ -1154,7 +1190,14 @@ const onMarketingTemplateSubmitGpt = async () => {
</el-table-column> </el-table-column>
<el-table-column prop="角色" label="角色"> <el-table-column prop="角色" label="角色">
<template v-slot="scope"> <template v-slot="scope">
<el-text class="mx-1" size="small">{{ scope.row.角色 }}<br />{{ scope.row.info }}</el-text> <el-text class="mx-1" size="small">{{ scope.row.info }}</el-text>
<hr style="border: none; border-top: 1px dashed #999; margin: 5px 0;">
<el-select v-model="scope.row.角色" placeholder="" @change="onItemRolesChange(scope.row)">
<el-option v-for="item in scope.row.roles" :key="item" :label="item" :value="item">
<span style="float: left">{{ item }}</span>
</el-option>
</el-select>
<!-- <el-text class="mx-1" size="small">{{ scope.row.角色 }}<br />{{ scope.row.info }}</el-text> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="角色关键词" label="角色关键词"> <el-table-column prop="角色关键词" label="角色关键词">
......
...@@ -180,6 +180,7 @@ const onAdapt = async () => { ...@@ -180,6 +180,7 @@ const onAdapt = async () => {
"本镜配图": "src/assets/loading.gif", "本镜配图": "src/assets/loading.gif",
"local_image_path": "", "local_image_path": "",
"info": "", "info": "",
"roles": [],
}); });
} }
console.log(form.adapt_result_json) console.log(form.adapt_result_json)
......
...@@ -29,6 +29,7 @@ declare namespace Wm { ...@@ -29,6 +29,7 @@ declare namespace Wm {
"本镜配图": string, "本镜配图": string,
"local_image_path": string, "local_image_path": string,
"info": string, "info": string,
"roles": String[],
} }
interface GenVideo { interface GenVideo {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment