import { ModalController } from "@ionic/angular"; import { FmodeChatCompletion } from "fmode-ng"; import { extactAndParseJsonFromString } from "src/agent/agent.json"; import { AgentTaskStep } from "src/agent/agent.task"; export function TaskGeneratePrompt(options: { modalCtrl: ModalController shareData: any } ): AgentTaskStep { let task2 = new AgentTaskStep({ title: "穿搭思路生成", shareData: options.shareData.userProfile }) task2.handle = () => { console.log("任务2:穿搭思路生成(Prompt)执行中..."); return new Promise(async (resolve, reject) => { //获取当前任务集共享数据:userProfile const userProfileJson = options.shareData.userProfileJson; let PromptTemplate = `您是一名专业的服装搭配师,根据客户的身高、体重等数据,为客户推荐适合TA的穿搭方案。 客户的要求如下:${userProfileJson} 结果以JSON格式表示:(以下是JSON格式的参考方案) { "方案名":"方案名(例如:夏日小清新)", "性别":"性别", "年龄":"年龄", ...... (传入的json中有什么属性就翻译一下,补上什么) "schemeList":{ "上衣":["name":"上衣特征描述(简洁,例如:轻薄短袖衬衫)","desc":"穿搭思路描述(具体,例如:选择一款轻薄透气的短袖衬衫,颜色可以是浅蓝色或淡灰色,搭配细条纹或小格纹图案,以增加层次感。衬衫的剪裁要稍微宽松,以便于活动,适合办公室环境。)"], "下装":["name":"下装特征描述","desc":"穿搭思路描述"], ...... } } 1.设计思路一定要有理有逻辑,并且要详细。 2.身上所有的衣服从里到外全部写出来加入schemeList中,例如冬季穿衣较多,从里到外有内衬衣、毛衣、夹克、棉袄、外套等。 这部分你能想得到的都要写出来。但是不要完全不符合逻辑。例如又穿了外套,外套里面又穿了外套,这种不符合逻辑的就不要写。 3.不要写笼统的“上衣”“下装”“配饰”等这种广泛的分类词条,要写例如“裤子”“棉毛衫”“项链”“围巾”等具体的服装类型的词条。 4.一定要注重用户的customDesc自定义描述,他们的意见极度重要,一定要体现出来。 `; let completion = new FmodeChatCompletion([ { role: "system", content: "" }, { role: "user", content: PromptTemplate } ]) completion.sendCompletion().subscribe((message: any) => { if (task2.progress < 0.3) { task2.progress += 0.003 } if (task2.progress >= 0.3 && task2.progress <= 0.8) { task2.progress += 0.002 } if (task2.progress >= 0.8) { task2.progress += 0.001 } // 打印消息 console.log(message.content) // 赋值消息内容给任务集共享数据 if(message.complete){ // 判断message为完成状态,则设置isComplete为完成 options.shareData.designPrompt=extactAndParseJsonFromString(message.content) task2.progress = 1; console.log(options.shareData); resolve(true); } }) }) } return task2; }