|
@@ -1,18 +1,65 @@
|
|
import { Component, OnInit } from '@angular/core';
|
|
import { Component, OnInit } from '@angular/core';
|
|
-import {IonHeader, IonToolbar, IonTitle, IonContent,IonButton, IonIcon } from '@ionic/angular/standalone';
|
|
|
|
|
|
+import {IonHeader, IonToolbar, IonTitle,IonInput, IonContent,IonButton, IonIcon } from '@ionic/angular/standalone';
|
|
import { addIcons } from 'ionicons';
|
|
import { addIcons } from 'ionicons';
|
|
import { chevronBack,heart } from 'ionicons/icons';
|
|
import { chevronBack,heart } from 'ionicons/icons';
|
|
import { Router } from '@angular/router';
|
|
import { Router } from '@angular/router';
|
|
|
|
+import { FmodeChatCompletion,MarkdownPreviewModule } from 'fmode-ng';
|
|
|
|
+import { CommonModule } from '@angular/common'; // 添加 CommonModule
|
|
|
|
+import { FormsModule } from '@angular/forms'; // 添加 FormsModule
|
|
|
|
|
|
@Component({
|
|
@Component({
|
|
selector: 'app-page-companion',
|
|
selector: 'app-page-companion',
|
|
templateUrl: './page-companion.component.html',
|
|
templateUrl: './page-companion.component.html',
|
|
styleUrls: ['./page-companion.component.scss'],
|
|
styleUrls: ['./page-companion.component.scss'],
|
|
standalone: true,
|
|
standalone: true,
|
|
- imports:[IonHeader, IonToolbar, IonTitle, IonContent,IonButton, IonIcon]
|
|
|
|
|
|
+ imports:[IonHeader, CommonModule, FormsModule, IonToolbar, IonTitle, IonContent,IonButton,IonInput, IonIcon,MarkdownPreviewModule]
|
|
})
|
|
})
|
|
export class PageCompanionComponent implements OnInit {
|
|
export class PageCompanionComponent implements OnInit {
|
|
|
|
|
|
|
|
+ userInput: string = ''; // 用户输入内容
|
|
|
|
+ messages: { role: string, content: string }[] = []; // 消息列表
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 用户输入变化
|
|
|
|
+ promptInput(ev: any) {
|
|
|
|
+ this.userInput = ev.detail.value;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 方法:实例化completion对象,传入消息数组,并订阅生成的可观察对象。
|
|
|
|
+ isComplete:boolean = false; // 定义完成状态属性,用来标记是否补全完成
|
|
|
|
+
|
|
|
|
+ // 发送消息
|
|
|
|
+ sendMessage() {
|
|
|
|
+ if (!this.userInput.trim()) return; // 确保输入不为空
|
|
|
|
+ this.messages.push({ role: 'user', content: this.userInput });
|
|
|
|
+ // console.log("create")
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 调用 AI 接口
|
|
|
|
+ let promptTemplate = `
|
|
|
|
+ 请你先分析用户的口述,如果是明显需要心理咨询帮助的意思,那么请你作为专业的心理咨询师,根据用户的描述提供情感疏导和建议;如果用户只是简单的日常聊天,比如吐槽、唠嗑,那么请你作为一个朋友的形象,根据的用户的消息提供友好并有情绪价值的回复。
|
|
|
|
+ 以下是用户的口述:${this.userInput}
|
|
|
|
+ `;
|
|
|
|
+
|
|
|
|
+ let completion = new FmodeChatCompletion([
|
|
|
|
+ { role: 'system', content: '' },
|
|
|
|
+ { role: 'user', content: promptTemplate }
|
|
|
|
+ ]);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ completion.sendCompletion().subscribe((message: any) => {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if(message?.complete){ // 判断message为完成状态,则设置isComplete为完成
|
|
|
|
+ this.isComplete = true
|
|
|
|
+ this.messages.push({ role: 'ai', content: message.content });
|
|
|
|
+
|
|
|
|
+ this.userInput = '';
|
|
|
|
+ }
|
|
|
|
+ })}
|
|
|
|
+
|
|
constructor(private router: Router) {
|
|
constructor(private router: Router) {
|
|
addIcons({chevronBack,heart});
|
|
addIcons({chevronBack,heart});
|
|
}
|
|
}
|