Browse Source

feat:works

惊鸿戏梦 3 months ago
parent
commit
9998a03493

+ 3 - 0
newyouth-app/src/agent/agent.start.ts

@@ -6,6 +6,9 @@ import { AgentTaskStep } from "./agent.task";
       let step=taskStepList[index];
       let result=await step.handle();
       if(result == false){break;}
+      if(step.error){
+        break;
+      }
       if(!step.error){}//任务正常执行,无error
       }
     }

+ 47 - 27
newyouth-app/src/agent/tasks/poem/poem-desc.ts

@@ -3,33 +3,53 @@ import { FmodeChatCompletion } from "fmode-ng";
 import { getUserInput } from "src/agent/agent.input";
 import { AgentTaskStep } from "src/agent/agent.task";
 
-export function TaskPoemPicutreDesc(options:{modalCtrl:ModalController,shareData:any}){
-    let task1=new AgentTaskStep({title:"意境分析",shareData:options.shareData});
-    task1.handle=async()=>{
-      //获取用户输入的诗词
-      let userInput=await getUserInput(options.modalCtrl,{filedsArray:[{name:"诗文内容",type:"text",desc:"诗文内容"}]});
-      console.log("已获取用户输入:",userInput)
-      console.log("已获取诗文内容:",userInput.poem)
+export function TaskPoemPictureDesc(options:{
+  modalCtrl:ModalController
+  shareData:any}
+  ):AgentTaskStep{
+      let task1 = new AgentTaskStep({title:"意境分析",shareData:options.shareData})
+      task1.handle = ()=>{
+          return new Promise(async (resolve,reject)=>{
+              // 获取用户输入的诗词
+              let userInput = await getUserInput(options.modalCtrl,{filedsArray:[
+                  {name:"诗文内容",type:"text",desc:"诗文句子或段落"}
+              ]});
+              console.log("已获取用户输入:",userInput)
+              if(userInput){
+                  console.log("已获取诗文内容:",userInput.poem)
+              }
+              if(!userInput?.poem){
+                  task1.error = "缺少诗文内容,请重新开始"
+                  resolve(false);
+              }
+
+                  // 文本生成
+              let PromptTemplate = `您是一名专业的美术画家,请您根据古诗文的内容,将其描述的画面、场景、人物、物品等用最简短的语言表达,直接写出画面,并且以中国的古风意境为主
+              诗文如下:
+              ${userInput.poem}
+              `
+              let completion = new FmodeChatCompletion([
+                  {role:"system",content:""},
+                  {role:"user",content:PromptTemplate}
+                  ])
+                  completion.sendCompletion().subscribe((message:any)=>{
+                      if(task1.progress < 0.5){
+                          task1.progress += 0.1
+                      }
+                      if(task1.progress >= 0.5){
+                          task1.progress += 0.01
+                      }
+                      // 打印消息体
+                      // console.log(message.content)
+                      // 赋值消息内容给组件内属性
+                      options.shareData.PictureDescResult = message.content
+                      if(message.complete){ // 判断message为完成状态,则设置isComplete为完成
+                          task1.progress = 1
+                          resolve(true)
+                      }
+              })
+          })
 
-    // 文本生成
-    let PromptTemplate = `您是一名专业的美术画家,请您根据古诗文的内容,将其描述的画面、场景、人物、物品等用最简短的语言表达,直接写出画面,并且以中国的古风意境为主
-    诗文如下:${userInput.poem}`
-    let completion = new FmodeChatCompletion([
-      {role:"system",content:""},
-      {role:"user",content:PromptTemplate}
-    ])
-    completion.sendCompletion().subscribe((message:any)=>{
-      // 打印消息体
-      console.log(message.content)
-      // 赋值消息内容给组件内属性
-      options.shareData.PictureDescResult = message.content
-      if(message?.complete){ // 判断message为完成状态,则设置isComplete为完成
-        task1.progress=1
       }
-    })
-      // await this.wait(1000);
-      // console.log("意境分析:执行过程");
-      // task1.progress=1
-      return task1;
-    }
+      return task1
 }

+ 37 - 22
newyouth-app/src/agent/tasks/poem/poem-picture.ts

@@ -3,26 +3,41 @@ import { ModalController } from "@ionic/angular/standalone";
 import { DalleOptions, ImagineWork } from "fmode-ng";
 import { AgentTaskStep } from "src/agent/agent.task";
 
-// export function TaskPoemPictureCreate(options:{modalCtrl:ModalController,shareData:any}){
-//     let task2=new AgentTaskStep({title:"意境绘制",shareData:options.shareData});
-//     task2.handle=async()=>{
-//       //await this.wait(10000);
-//       //let userInput=await getUserInput(this.modalCtrl,{filedsArray:[{name:"绘图要求",type:"text",desc:"画风、构图等"}]});
-//       // console.log("已获取用户输入:",userInput)
-//       // console.log("已获取诗文内容:",userInput.poem)
-//       console.log("意境绘制:执行过程");
-//       let imagineWork = new ImagineWork();
+export function TaskPoemPictureCreate(options:{
+  modalCtrl:ModalController
+  shareData:any}):AgentTaskStep{
+  let task2 = new AgentTaskStep({title:"意境绘制",shareData:options.shareData})
+  task2.handle = ()=>{
+    return new Promise(resolve=>{
+      // let userInput = await getUserInput(options.modalCtrl,{fieldsArray:[
+      //   {name:"绘图要求",type:"text",desc:"画风、构图等等"}
+      // ]});
+      // console.log(userInput)
+      console.log("意境绘制:执行过程")
 
-//       // 图片生成
-//       let PicturePrompt = `${options.shareData.PictureDescResult}\n风格:中国古风。画面不带任何文字。`
-//       let options:DalleOptions = {prompt:PicturePrompt}
-//       imagineWork?.draw(options).subscribe((work:any)=>{
-//           console.log("imagineWork",work?.toJSON())
-//           console.log("images",work?.get("images"))
-//           if(work?.get("images")?.length){
-//             options.shareData.images = work?.get("images");
-//             task2.progress=1
-//           }
-//       })
-//     }
-// }
+      if(!options.shareData.PictureDescResult){
+        task2.error = "缺少古风描述结果,请重新执行。"
+        resolve(false)
+      }
+      let imagineWork = new ImagineWork();
+      // 图片生成
+      let PicturePrompt = `${options.shareData.PictureDescResult}\n风格:中国古风。画面不带任何文字。`
+      let imgOptions:DalleOptions = {prompt:PicturePrompt}
+      let countDownInt = setInterval(()=>{
+        task2.progress += 0.01
+      },1000)
+      imagineWork?.draw(imgOptions).subscribe((work:any)=>{
+          console.log("imagineWork",work?.toJSON())
+          console.log("images",work?.get("images"))
+          if(work?.get("images")?.length){
+            options.shareData.images = work?.get("images");
+            clearInterval(countDownInt);
+            task2.progress = 1
+            resolve(true)
+          }
+      })
+    })
+
+  }
+  return task2
+}

+ 7 - 8
newyouth-app/src/app/tab3/tab3.page.html

@@ -30,21 +30,20 @@
         @if(step.error){
           <ion-icon name="close-circle-outline"></ion-icon>
         }
-        {{step.title}}{{step.progress}}</div>   
+        {{step.title}}  @if(step.progress){<span>{{step.progress * 100 | number:"2.0-0"}}%</span>}
+
+      @if(step.error){
+        <span style="color:red;">{{step.error}}</span>
+      }</div>   
     }
     </ul>
-    <!-- 图片结果 -->
+    <!-- 诗词意境绘画生成结果 -->
     @if(shareData.images) {
       @for(imageUrl of shareData.images;track imageUrl){
         <img [src]="imageUrl" alt="" srcset="">
       }
     }
-<!-- 诗词意境绘画生成结果 -->
-<!-- @if(shareData.images) {
-  @for(imageUrl of shareData.images;track imageUrl){
-    <img [src]="imageUrl" alt="" srcset="">
-  }
-} -->
+
 
 <!-- 问诊报告生成结果 -->
 <!-- @if(shareData.diagResult){

+ 59 - 49
newyouth-app/src/app/tab3/tab3.page.ts

@@ -4,16 +4,23 @@ import { ExploreContainerComponent } from '../explore-container/explore-containe
 import { AgentTaskStep } from 'src/agent/agent.task';
 import { closeCircleOutline,radioButtonOffOutline,reloadOutline,checkmarkCircleOutline} from 'ionicons/icons';
 import { addIcons } from 'ionicons';
+import { startTask } from 'src/agent/agent.start';
+import { TaskPoemPictureDesc } from 'src/agent/tasks/poem/poem-desc';
+import { TaskPoemPictureCreate } from 'src/agent/tasks/poem/poem-picture';
+import { share } from 'rxjs';
 import { DalleOptions, FmodeChatCompletion, ImagineWork } from 'fmode-ng';
 import { getUserInput } from 'src/agent/agent.input';
-import { startTask } from 'src/agent/agent.start';
+import { DecimalPipe } from '@angular/common';
+
 addIcons({radioButtonOffOutline,reloadOutline,checkmarkCircleOutline,closeCircleOutline})
 @Component({
   selector: 'app-tab3',
   templateUrl: 'tab3.page.html',
   styleUrls: ['tab3.page.scss'],
   standalone: true,
-  imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent,IonButton,IonIcon],
+  imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent,IonButton,IonIcon,
+    DecimalPipe
+  ],
 })
 export class Tab3Page {
   constructor(private modalCtrl:ModalController) {
@@ -35,54 +42,57 @@ export class Tab3Page {
 
   // 任务:完成故事意境描述及图像绘制
   doPoemTask(){
-    let task1 = new AgentTaskStep({title:"意境分析",shareData:this.shareData});
-    task1.handle=async()=>{
-      //获取用户输入的诗词
-      let userInput=await getUserInput(this.modalCtrl,{filedsArray:[{name:"诗文内容",type:"text",desc:"诗文内容"}]});
-      console.log("已获取用户输入:",userInput)
-      console.log("已获取诗文内容:",userInput.poem)
-
-    // 文本生成
-    let PromptTemplate = `您是一名专业的美术画家,请您根据古诗文的内容,将其描述的画面、场景、人物、物品等用最简短的语言表达,直接写出画面,并且以中国的古风意境为主
-    诗文如下:${userInput.poem}`
-    let completion = new FmodeChatCompletion([
-      {role:"system",content:""},
-      {role:"user",content:PromptTemplate}
-    ])
-    completion.sendCompletion().subscribe((message:any)=>{
-      // 打印消息体
-      console.log(message.content)
-      // 赋值消息内容给组件内属性
-      this.shareData.PictureDescResult = message.content
-      if(message?.complete){ // 判断message为完成状态,则设置isComplete为完成
-        task1.progress=1
-      }
-    })
-      // await this.wait(1000);
-      // console.log("意境分析")
-  }
+    // 产生: shareData.PictureDescResult 生成后描述
+    let task1=TaskPoemPictureDesc({shareData:this.shareData,modalCtrl:this.modalCtrl});
+  //   let task1 = new AgentTaskStep({title:"意境分析",shareData:this.shareData});
+  //   task1.handle=async()=>{
+  //     //获取用户输入的诗词
+  //     let userInput=await getUserInput(this.modalCtrl,{filedsArray:[{name:"诗文内容",type:"text",desc:"诗文内容"}]});
+  //     console.log("已获取用户输入:",userInput)
+  //     console.log("已获取诗文内容:",userInput.poem)
 
-    let task2=new AgentTaskStep({title:"意境绘制",shareData:this.shareData});
-    task2.handle=async()=>{
-      await this.wait(10000);
-      //let userInput=await getUserInput(this.modalCtrl,{filedsArray:[{name:"绘图要求",type:"text",desc:"画风、构图等"}]});
-      // console.log("已获取用户输入:",userInput)
-      // console.log("已获取诗文内容:",userInput.poem)
-      console.log("意境绘制:执行过程");
-      let imagineWork = new ImagineWork();
+  //   // 文本生成
+  //   let PromptTemplate = `您是一名专业的美术画家,请您根据古诗文的内容,将其描述的画面、场景、人物、物品等用最简短的语言表达,直接写出画面,并且以中国的古风意境为主
+  //   诗文如下:${userInput.poem}`
+  //   let completion = new FmodeChatCompletion([
+  //     {role:"system",content:""},
+  //     {role:"user",content:PromptTemplate}
+  //   ])
+  //   completion.sendCompletion().subscribe((message:any)=>{
+  //     // 打印消息体
+  //     console.log(message.content)
+  //     // 赋值消息内容给组件内属性
+  //     this.shareData.PictureDescResult = message.content
+  //     if(message?.complete){ // 判断message为完成状态,则设置isComplete为完成
+  //       task1.progress=1
+  //     }
+  //   })
+  //     // await this.wait(1000);
+  //     // console.log("意境分析")
+  // }
+    // 产生: shareData.images 渲染后图片
+    let task2 = TaskPoemPictureCreate({shareData:this.shareData,modalCtrl:this.modalCtrl});
+    // let task2=new AgentTaskStep({title:"意境绘制",shareData:this.shareData});
+    // task2.handle=async()=>{
+    //   await this.wait(10000);
+    //   //let userInput=await getUserInput(this.modalCtrl,{filedsArray:[{name:"绘图要求",type:"text",desc:"画风、构图等"}]});
+    //   // console.log("已获取用户输入:",userInput)
+    //   // console.log("已获取诗文内容:",userInput.poem)
+    //   console.log("意境绘制:执行过程");
+    //   let imagineWork = new ImagineWork();
 
-      // 图片生成
-      let PicturePrompt = `${this.shareData.PictureDescResult}\n风格:中国古风。画面不带任何文字。`
-      let options:DalleOptions = {prompt:PicturePrompt}
-      imagineWork?.draw(options).subscribe((work:any)=>{
-          console.log("imagineWork",work?.toJSON())
-          console.log("images",work?.get("images"))
-          if(work?.get("images")?.length){
-            this.shareData.images = work?.get("images");
-            task2.progress=1
-          }
-      })
-    }
+    //   // 图片生成
+    //   let PicturePrompt = `${this.shareData.PictureDescResult}\n风格:中国古风。画面不带任何文字。`
+    //   let options:DalleOptions = {prompt:PicturePrompt}
+    //   imagineWork?.draw(options).subscribe((work:any)=>{
+    //       console.log("imagineWork",work?.toJSON())
+    //       console.log("images",work?.get("images"))
+    //       if(work?.get("images")?.length){
+    //         this.shareData.images = work?.get("images");
+    //         task2.progress=1
+    //       }
+    //   })
+    // }
     
     // 定义任务集
     let PoemTaskList = [task1,task2]
@@ -133,5 +143,5 @@ export class Tab3Page {
     // 开始执行任务
     startTask(InquireServiceTaskList)
   }
-  
+
 }