Commit 39f8ae56 authored by 周成波's avatar 周成波

llm改为kimi,bug修复

parent cc2501e1
......@@ -55,6 +55,7 @@ export const useManyValues = () => {
baichuan: {'api': 'langchain', 'name':'本地baichuan2-7b'},
qwen_local: {'api': 'langchain', 'name':'本地Qwen-7B-Chat'},
chatgpt: {'api': 'gpt', 'name':'chatgpt'},
kimi: {'api': 'kimi', 'name':'kimi'},
};
const horizontal_data = {
......@@ -70,52 +71,100 @@ export const useManyValues = () => {
const vertical_data = {
task_id: "20240220181602687",
chatgpt_prompt: `生成一个50字的科幻小故事,阿凡达系列`,
chatgpt_answer: `在宁静的森林里。一场奇特的食物大战正在上演。`,
chatgpt_answer: `森林里的美味秘密是什么呢?在葱郁的绿林中,一只机敏的小松鼠和一只温顺的大熊结伴而行,他们跨越山涧,攀爬树木,只为寻找传说中的金巧蒂。这不仅仅是一种美食,而是一段由新鲜、柔软、香酥编织的传奇。狡猾的狐狸也觊觎这份美味,但在小松鼠和大熊的智勇合作下,美味得以保全。他们分享了这份酥香,友谊也在森林中流传开来。`,
chatgpt_answer_roles: [
{
"角色": "森林里的动物们",
"角色关键词": "动物们:松鼠,鹿,狐狸,熊,体型各异,色彩斑斓,四肢灵活,五官敏锐,皮毛浓密",
"角色关键词英文": "Animals. Squirrel. Deer. Fox. Bear. Different sizes. Colors. Agile limbs. Five officers are sharp. The fur is thick. ",
"角色": "小松鼠",
"角色关键词": "",
"角色关键词英文": "",
"属性": "动物"
},
{
"角色": "大熊",
"角色关键词": "",
"角色关键词英文": "",
"属性": "动物"
},
{
"角色": "狐狸",
"角色关键词": "",
"角色关键词英文": "",
"属性": "动物"
}
],
adapt_result_json: [
{
"编号": "1",
"场景描述": "在宁静的森林里",
"场景关键词": "静谧的森林深处,层林尽染,鸟鸣声若隐若现,阳光斑驳洒落,生机盎然中弥漫着神秘与未知。",
"场景关键词英文": "♪ Deep in the quiet forest ♪ It's all over the forest. Birds sound like birds. ♪ Sunshine pours down ♪ There's a mystery in life. And unknown. ",
"角色": "无角色",
"场景描述": "森林里的美味秘密是什么呢",
"场景关键词": "",
"场景关键词英文": "",
"角色": "",
"角色关键词": "",
"角色关键词英文": "",
"画面描述词": "♪ Deep in the quiet forest ♪ It's all over the forest. Birds sound like birds. ♪ Sunshine pours down ♪ There's a mystery in life. And unknown. ,",
"本镜配图": "http://wm-tools-backend.frp.wmdigit.com:8888/assets/outputs/20240220181602687/img/1_resized.png?v=20240317121638794",
"local_image_path": "assets/outputs/20240220181602687/img/1_resized.png",
"info": "推理返回:由于本章节描述为“在宁静的森林里”,并没有明确指出具体出现了哪些动物,所以无法从角色列表(森林里的动物们)中挑选出本章节中出现过的具体角色。",
"roles": [
"无角色",
"森林里的动物们"
]
"画面描述词": "",
"本镜配图": "src/assets/waiting.png",
"local_image_path": "",
"info": "",
"roles": []
},
{
"编号": "2",
"场景描述": "一场奇特的食物大战正在上演",
"场景关键词": "宁静森林中,各类食物化身为生动角色,激烈交锋,面包掷飞镖,水果射弹珠,糖果舞动绸带,薯片挥剑,上演了一场妙趣横生的食物大战。",
"场景关键词英文": "# In the quiet forest # All kinds of food is a living angle. Colour It's a tough fight. Bread toss dart. Fruit shoots marbles. Candy-dancing silk ribbons. The chips swing the sword. There's been an interesting performance. Food war. ",
"角色": "森林里的动物们",
"角色关键词": "动物们:松鼠,鹿,狐狸,熊,体型各异,色彩斑斓,四肢灵活,五官敏锐,皮毛浓密",
"角色关键词英文": "Animals. Squirrel. Deer. Fox. Bear. Different sizes. Colors. Agile limbs. Five officers are sharp. The fur is thick. ",
"画面描述词": "# In the quiet forest # All kinds of food is a living angle. Colour It's a tough fight. Bread toss dart. Fruit shoots marbles. Candy-dancing silk ribbons. The chips swing the sword. There's been an interesting performance. Food war. ,Animals. Squirrel. Deer. Fox. Bear. Different sizes. Colors. Agile limbs. Five officers are sharp. The fur is thick. ",
"本镜配图": "http://wm-tools-backend.frp.wmdigit.com:8888/assets/outputs/20240220181602687/img/2_resized.png?v=20240317121651990",
"local_image_path": "assets/outputs/20240220181602687/img/2_resized.png",
"info": "推理返回:森林里的动物们",
"roles": [
"无角色",
"森林里的动物们"
]
"场景描述": "在葱郁的绿林中,一只机敏的小松鼠和一只温顺的大熊结伴而行,他们跨越山涧,攀爬树木,只为寻找传说中的金巧蒂",
"场景关键词": "",
"场景关键词英文": "",
"角色": "",
"角色关键词": "",
"角色关键词英文": "",
"画面描述词": "",
"本镜配图": "src/assets/waiting.png",
"local_image_path": "",
"info": "",
"roles": []
},
{
"编号": "3",
"场景描述": "这不仅仅是一种美食,而是一段由新鲜、柔软、香酥编织的传奇",
"场景关键词": "",
"场景关键词英文": "",
"角色": "",
"角色关键词": "",
"角色关键词英文": "",
"画面描述词": "",
"本镜配图": "src/assets/waiting.png",
"local_image_path": "",
"info": "",
"roles": []
},
{
"编号": "4",
"场景描述": "狡猾的狐狸也觊觎这份美味,但在小松鼠和大熊的智勇合作下,美味得以保全",
"场景关键词": "",
"场景关键词英文": "",
"角色": "",
"角色关键词": "",
"角色关键词英文": "",
"画面描述词": "",
"本镜配图": "src/assets/waiting.png",
"local_image_path": "",
"info": "",
"roles": []
},
{
"编号": "5",
"场景描述": "他们分享了这份酥香,友谊也在森林中流传开来",
"场景关键词": "",
"场景关键词英文": "",
"角色": "",
"角色关键词": "",
"角色关键词英文": "",
"画面描述词": "",
"本镜配图": "src/assets/waiting.png",
"local_image_path": "",
"info": "",
"roles": []
}
],
all_roles: "森林里的动物们",
all_roles: "小松鼠, 大熊, 狐狸",
final_video: ``,
};
......
<script setup lang="ts">
import { onMounted, reactive, ref, nextTick } from "vue";
import { Sunny, UploadFilled, Delete, Download, Plus, ZoomIn } from "@element-plus/icons-vue";
import { Sunny, UploadFilled, Delete, Download, Plus, ZoomIn, Files } from "@element-plus/icons-vue";
import {
ElMessage, genFileId,
type UploadInstance,
......@@ -34,11 +34,11 @@ const sd_model = default_data.sd_paras.juggernautXL_v9Rdphoto2Lightning;
const sd_prompt_prefix = sd_model.sd_prompt_prefix;
const sd_negative_prompt_prefix = default_data.sd_negative_prompt_prefix;
const wen_an_llm = default_data.llms.tyqw_online;
const role_llm = default_data.llms.tyqw_online;
const role_keywords_llm = default_data.llms.tyqw_online;
const tuili_llm = default_data.llms.tyqw_online;
const tuili_keyword_llm = default_data.llms.tyqw_online;
const wen_an_llm = default_data.llms.kimi;
const role_llm = default_data.llms.kimi;
const role_keywords_llm = default_data.llms.kimi;
const tuili_llm = default_data.llms.kimi;
const tuili_keyword_llm = default_data.llms.kimi;
// const fanyi_llm = default_data.llms.tyqw_online;
const voice_rate = ref(0)
......@@ -405,18 +405,22 @@ const onAdaptOneSceneRoles = async (item: any) => {
const adapt_role_restrict = `整个故事(“${form.chatgpt_answer}),\n\n本章节(${item.场景描述}),\n\n角色列表(${form.all_roles}),\n\n请返回给本章节出现的角色。注意:不要发挥想象,必须从角色列表中选出本章节出现过的角色,如果多个用逗号隔开。`;
const item_roles_answer = await text2videoService.submitLLM(adapt_role_restrict, tuili_keyword_llm.api);
console.log(`==============${item.编号}===============`)
// console.log(adapt_role_restrict)
console.log('form.all_roles = ', form.all_roles)
item.info = `推理返回:${item_roles_answer}`
const item_roles_answer_list = item_roles_answer.trim().split(/[,,、]/);
let item_roles_answer_list = item_roles_answer.trim().split(/[,,、]/);
item_roles_answer_list = item_roles_answer_list.map(item => item.trim());
// 过滤推理出来的角色,都要在总角色里
item.roles = ['无角色'];
for (const y of form.chatgpt_answer_roles) { item.roles.push(y.角色); }
item.角色 = '无角色';
let filter_result = '';
console.log('item_roles_answer_list = ', item_roles_answer_list)
for (const x of item_roles_answer_list) {
for (const y of form.chatgpt_answer_roles) {
if (x == y.角色) {
filter_result += x+',';
console.log('filter_result = ', filter_result)
// 下拉列表添加项目
// item.roles.push(x);
}
......@@ -426,6 +430,7 @@ const onAdaptOneSceneRoles = async (item: any) => {
filter_result = filter_result.slice(0, -1); // 去掉结尾的逗号
}
if (filter_result) {item.角色 = filter_result;}
console.log('过滤后 item.角色 = ', item.角色)
////// 加一段逻辑,本镜角色有且只能有一个,且尽量不与之前相同。【begin】
const temp_arr = item.角色.split(/[,,、]/);
......@@ -750,18 +755,17 @@ const onChangeScreen = (val: string) => {
marketing_template.product_pic_titles = default_data.marketing_template.product_pic_titles;
marketing_template.product_pic_speech = default_data.marketing_template.product_pic_speech;
marketing_template.cover_pic_titles = default_data.marketing_template.cover_pic_titles;
marketing_template.product_pic = default_data.marketing_template.product_pic;
marketing_template.product_pic_local = default_data.marketing_template.product_pic_local;
marketing_template.product_pic_with_text = default_data.marketing_template.product_pic_with_text;
marketing_template.product_pic_with_text_local = default_data.marketing_template.product_pic_with_text_local;
// marketing_template.product_pic = default_data.marketing_template.product_pic;
// marketing_template.product_pic_local = default_data.marketing_template.product_pic_local;
// marketing_template.product_pic_with_text = default_data.marketing_template.product_pic_with_text;
// marketing_template.product_pic_with_text_local = default_data.marketing_template.product_pic_with_text_local;
marketing_template.cover_pic = default_data.marketing_template.cover_pic;
marketing_template.cover_pic_local = default_data.marketing_template.cover_pic_local;
marketing_template.cover_pic_with_text = default_data.marketing_template.cover_pic_with_text;
marketing_template.cover_pic_with_text_local = default_data.marketing_template.cover_pic_with_text_local;
// marketing_template.cover_pic = default_data.marketing_template.cover_pic;
// marketing_template.cover_pic_local = default_data.marketing_template.cover_pic_local;
// marketing_template.cover_pic_with_text = default_data.marketing_template.cover_pic_with_text;
// marketing_template.cover_pic_with_text_local = default_data.marketing_template.cover_pic_with_text_local;
}
......@@ -840,6 +844,41 @@ const handleUploadError = (error: Error) => {
});
}
const handleBeforeUpload = async (file: any) => {
const isLt1M = file.size / 1024 / 1024 <= 1;
if (!isLt1M) {
ElMessage.error('上传图片大小不能超过 1MB!')
return false
}
return new Promise((resolve, reject) => {
let is_size_ok = false;
const reader = new FileReader();
reader.onload = (e:any) => {
const dataURL = e.target.result;
const img = new Image();
img.onload = () => {
console.log('文件宽度:', img.width);
console.log('文件高度:', img.height);
if ((form.screen == '竖屏' && img.height >= img.width) ||
(form.screen == '横屏' && img.width >= img.height)) {
is_size_ok = true;
}
if (is_size_ok) {
resolve(true); // 尺寸符合要求
} else {
reject('竖屏请上传竖屏图片,横屏请上传横屏图片!');
}
};
img.src = dataURL;
};
reader.readAsDataURL(file);
}).catch(error => {
console.log('Error:', error);
ElMessage.error(error);
return false;
});
}
const onClearOnePic = (item: any) => {
item.本镜配图 = "";
item.local_image_path = "";
......@@ -1240,7 +1279,8 @@ const onMarketingTemplateSubmitGpt = async () => {
<el-upload ref="upload" :show-file-list="false" :limit="1"
accept=".png,.PNG,.jpg,.JPG,.jpeg,.JPEG,.gif,.GIF,.bmp,.BMP"
:action="actionUrl" :on-success="handleUploadSuccess" :on-exceed="handleUploadExceed"
:on-error="handleUploadError" :data="{ width: form.img_size.width, height: form.img_size.height }">
:on-error="handleUploadError" :data="{ width: form.img_size.width, height: form.img_size.height }"
:before-upload="handleBeforeUpload">
<el-button type="primary" size="small" @click="onClickUpload(scope.row)">上传图片</el-button>
</el-upload>
<!-- <div style="margin: 5px 0"><el-button plain size="small" @click="onClearOnePic(scope.row)">清除图片</el-button></div> -->
......@@ -1275,7 +1315,8 @@ const onMarketingTemplateSubmitGpt = async () => {
<el-upload ref="upload_cover" :show-file-list="false" :limit="1"
accept=".png,.PNG,.jpg,.JPG,.jpeg,.JPEG,.gif,.GIF,.bmp,.BMP"
:action="actionUrl" :on-success="MarketingTemplateUploadCoverPicSuccess" :on-exceed="handleMarketingTemplateUploadCoverPicExceed"
:on-error="handleUploadError" :data="{ width: form.img_size.width, height: form.img_size.height }">
:on-error="handleUploadError" :data="{ width: form.img_size.width, height: form.img_size.height }"
:before-upload="handleBeforeUpload">
<el-button type="primary" size="small">上传图片</el-button>
</el-upload>
<el-button type="danger" size="small" @click="onClearMarketingTemplatePic('cover')" style="margin-left: 30px;">清除图片</el-button>
......@@ -1318,7 +1359,8 @@ const onMarketingTemplateSubmitGpt = async () => {
<el-upload ref="upload_product" :show-file-list="false" :limit="1"
accept=".png,.PNG,.jpg,.JPG,.jpeg,.JPEG,.gif,.GIF,.bmp,.BMP"
:action="actionUrl" :on-success="MarketingTemplateUploadProductPicSuccess" :on-exceed="handleMarketingTemplateUploadProductPicExceed"
:on-error="handleUploadError" :data="{ width: form.img_size.width, height: form.img_size.height }">
:on-error="handleUploadError" :data="{ width: form.img_size.width, height: form.img_size.height }"
:before-upload="handleBeforeUpload">
<el-button type="primary" size="small">上传图片</el-button>
</el-upload>
<el-button type="danger" size="small" @click="onClearMarketingTemplatePic('product')" style="margin-left: 30px;">清除图片</el-button>
......
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