generate-prompt.ts 3.6 KB

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