poem-desc.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { AgentTaskStep } from 'src/agent/agent.task';
  2. import { getUserInput } from 'src/agent/agent.input';
  3. import { ModalController } from '@ionic/angular/standalone';
  4. import { FmodeChatCompletion } from 'fmode-ng';
  5. export function TaskPoemPictureDesc(options:{
  6. modalCtrl:ModalController
  7. shareData:any}
  8. ):AgentTaskStep{
  9. let task1 = new AgentTaskStep({title:"意境分析",shareData:options.shareData})
  10. task1.handle = ()=>{
  11. return new Promise(async (resolve,reject)=>{
  12. // 获取用户输入的诗词
  13. let userInput = await getUserInput(options.modalCtrl,{fieldsArray:[
  14. {name:"诗文内容",type:"text",desc:"诗文句子或段落"}
  15. ]});
  16. console.log("已获取用户输入:",userInput)
  17. if(userInput){
  18. console.log("已获取诗文内容:",userInput['诗文内容'])
  19. }
  20. if(!userInput?.['诗文内容']){
  21. task1.error = "缺少诗文内容,请重新开始"
  22. resolve(false);
  23. }
  24. // 文本生成
  25. let PromptTemplate = `您是一名专业的美术画家,请您根据古诗文的内容,将其描述的画面、场景、人物、物品等用最简短的语言表达,直接写出画面,并且以中国的古风意境为主
  26. 诗文如下:
  27. ${userInput['诗文内容']}
  28. `
  29. let completion = new FmodeChatCompletion([
  30. {role:"system",content:""},
  31. {role:"user",content:PromptTemplate}
  32. ])
  33. completion.sendCompletion().subscribe((message:any)=>{
  34. if(task1.progress < 0.5){
  35. task1.progress += 0.1
  36. }
  37. if(task1.progress >= 0.5){
  38. task1.progress += 0.01
  39. }
  40. // 打印消息体
  41. // console.log(message.content)
  42. // 赋值消息内容给组件内属性
  43. options.shareData.PictureDescResult = message.content
  44. if(message.complete){ // 判断message为完成状态,则设置isComplete为完成
  45. task1.progress = 1
  46. resolve(true)
  47. }
  48. })
  49. })
  50. }
  51. return task1
  52. }