| 
					
				 | 
			
			
				@@ -1,24 +1,102 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { CommonModule } from '@angular/common'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { Component, OnInit } from '@angular/core'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { FormsModule } from '@angular/forms'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { NavController } from '@ionic/angular'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { IonButtons, IonHeader, IonToolbar,IonButton, IonIcon, IonTitle, IonInput, IonFooter } from '@ionic/angular/standalone'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { IonButtons, IonHeader, IonToolbar,IonButton, IonIcon, IonTitle, IonInput, IonFooter, IonContent, AlertController } from '@ionic/angular/standalone'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { FmodeChatCompletion } from 'fmode-ng'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { addIcons } from 'ionicons'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { chevronBackSharp, ellipsisHorizontal, happyOutline, micCircleOutline, paperPlane } from 'ionicons/icons'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 addIcons({ chevronBackSharp,ellipsisHorizontal,micCircleOutline,happyOutline,paperPlane }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+interface Window { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SpeechRecognition: any; // 声明 SpeechRecognition 属性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  webkitSpeechRecognition: any; // 声明 webkitSpeechRecognition 属性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Component({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   selector: 'app-ai-chat-component', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   templateUrl: './ai-chat-component.component.html', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   styleUrls: ['./ai-chat-component.component.scss'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   standalone: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   imports: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    IonHeader,IonToolbar,IonButtons,IonButton,IonIcon,IonTitle,IonInput,IonFooter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    IonHeader,IonToolbar,IonButtons,IonButton,IonIcon,IonTitle,IonInput,IonFooter,CommonModule,IonContent, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    FormsModule 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export class AiChatComponentComponent  implements OnInit { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  constructor(private navCtrl: NavController) { } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  messages: { text: string, sender: string }[] = []; // 存储聊天消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  userMessage: string = ''; // 用于用户输入内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  aiMessage: string = ''; // 用于存储AI的回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  initialPrompt: string = ''; // 用于存储初始化提示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  recognition: any; // 用于存储语音识别实例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  constructor(private navCtrl: NavController,private alertController: AlertController) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 初始化语音识别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.initSpeechRecognition(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 初始化语音识别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  initSpeechRecognition() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (SpeechRecognition) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.recognition = new SpeechRecognition(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.recognition.lang = 'zh-CN'; // 设置语言为中文 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.recognition.interimResults = false; // 不返回中间结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.recognition.maxAlternatives = 1; // 最大替代结果数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.recognition.onresult = (event: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const transcript = event.results[0][0].transcript; // 获取识别结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log("识别到的内容:", transcript); // 打印识别到的内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.confirmSpeechInput(transcript); // 调用确认输入方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.recognition.onerror = (event: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.error('语音识别错误:', event.error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('该浏览器不支持语音识别'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 启动语音输入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  startVoice() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.recognition) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.recognition.start(); // 启动语音识别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('语音识别启动...'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 确认语音输入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async confirmSpeechInput(transcript: string) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const alert = await this.alertController.create({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      header: '确认语音输入', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message: `识别到的内容是: "${transcript}",是否确认?`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      buttons: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          text: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          role: 'cancel', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handler: () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log('用户取消输入'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          text: '确定', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handler: () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.userMessage = transcript; // 将识别结果赋值给用户消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log("已确认输入:", this.userMessage); // 打印确认后的内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await alert.present(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   goBack() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.navCtrl.back(); // 返回上一页 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -29,15 +107,57 @@ export class AiChatComponentComponent  implements OnInit { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     console.log("打开选项菜单"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ngOnInit() {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ngOnInit() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 发送初始化消息给AI 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.initializeChat(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//初始化聊天,将提示词添加到历史中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  initializeChat() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.initialPrompt = ` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#角色设定 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+您是一名时尚顾问,名叫小马,年龄28岁,热爱时尚,擅长根据用户的需求和个性推荐穿搭方案。您的风格亲切、幽默,旨在帮助用户找到最适合他们的服装搭配。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  startVoice() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 启动语音输入的逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    console.log("开始语音输入"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#对话环节 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+0破冰,跟用户打招呼,并引导用户聊穿搭话题,可以慢慢引导,不要太突兀,比如: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“今天的心情怎么样?” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+1拓展话题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“你平时喜欢什么样的穿搭风格呢?有没有特别喜欢的颜色或者品牌?” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“如果有一个场合,你希望我帮你推荐搭配,比如约会、工作或休闲,你会选择哪个呢?” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“你觉得在穿搭上,最让你困扰的是什么?是搭配技巧还是风格选择呢?” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“有没有什么服装是你一直想尝试但还没有机会的?我们可以一起聊聊!” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2根据用户的详细描述给出穿搭方案, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+3引导收尾 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“今天聊得很开心呢!如果你还有其他问题或者想法,随时可以告诉我哦。” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“如果你觉得今天的聊天已经足够了,我也很乐意下次再和你聊更多时尚的话题!” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+“希望你能找到自己喜欢的穿搭风格,期待下次再见!” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 开始话语 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+当您准备好了,可以以一个时尚顾问的身份,向来访的用户打招呼。`; // 提示词 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 构建对话历史,不将提示词添加到消息数组中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const conversationHistory = this.messages.map(msg => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      role: msg.sender === 'user' ? 'user' : 'assistant', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      content: msg.text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 将系统消息直接添加到对话历史 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    conversationHistory.unshift({ role: 'user', content: this.initialPrompt }); // 添加系统消息到历史 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let completion = new FmodeChatCompletion(conversationHistory); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 发送初始化消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    completion.sendCompletion().subscribe((message: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (message?.complete) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log("AI初始化回复:", message.content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.messages.push({ text: message.content, sender: 'ai' }); // 添加AI的初始化回复 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   openEmojiPicker() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 打开表情选择器的逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     console.log("打开表情选择器"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -45,7 +165,43 @@ export class AiChatComponentComponent  implements OnInit { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   sendMessage() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 发送消息的逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    console.log("发送消息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.userMessage.trim()) { // 确保消息不为空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 构建对话历史 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const conversationHistory = this.messages.map(msg => ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        role: msg.sender === 'user' ? 'user' : 'assistant', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: msg.text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 将提示词直接添加到对话历史 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    conversationHistory.unshift({ role: 'user', content: this.initialPrompt }); // 添加系统消息到历史 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.messages.push({ text: this.userMessage, sender: 'user' }); // 添加用户消息到数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log("发送消息:", this.messages); // 调试输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 将用户消息添加到对话历史 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      conversationHistory.push({ role: 'user', content: this.userMessage }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let completion = new FmodeChatCompletion(conversationHistory); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.userMessage = ''; // 清空输入框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      completion.sendCompletion().subscribe((message: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 打印消息体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(message.content); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (message?.complete) { // 判断message为完成状态,则设置ai内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.aiMessage = message.content; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.aiMessage) { // 判断ai内容不为空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log("AI:" + this.aiMessage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.messages.push({ text: this.aiMessage, sender: 'ai' }); // 添加消息到数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.aiMessage = ''; // 清空ai内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log("发送消息:", this.messages); // 调试输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log("历史对话"+conversationHistory[0].content+" "+conversationHistory[1].content+" "+conversationHistory[2].content) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |