123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
- import { IonButton, IonContent, IonFooter, IonHeader, IonInput, IonItem, IonTitle, IonToolbar, ModalController } from '@ionic/angular/standalone';
- import { ChatPanelOptions, FmodeChat, FmodeChatCompletion,FmodeChatMessage,MarkdownPreviewModule, openChatPanelModal } from 'fmode-ng';
- import { CommonModule } from '@angular/common';
- import { FormsModule,} from '@angular/forms'; // 导入 FormsModule
- import { Router } from '@angular/router';
- // 引用设计的对象类和查询类
- import { CloudObject, CloudQuery } from 'src/lib/ncloud';
- @Component({
- selector: 'app-page-ai-chat',
- templateUrl: './page-ai-chat.component.html',
- styleUrls: ['./page-ai-chat.component.scss'],
- standalone: true,
- imports:[IonButton,IonHeader,IonToolbar,IonTitle,IonContent,IonFooter,IonInput,CommonModule,FormsModule,MarkdownPreviewModule,IonItem ]
- })
- export class PageAiChatComponent implements OnInit {
-
- constructor(private modalCtrl:ModalController,
- private router:Router, private cdRef:ChangeDetectorRef) { }
- ngOnInit() {
- // 生命周期:页面加载后,运行用户列表加载函数
- this.loadUserProfileList()
- }
- chatId:any= null;
- //AI聊天
- openFashionChat(){
- localStorage.setItem("company","E4KpGvTEto")
- let consult = new CloudObject("AIChat")
- let now = new Date();
- let chatStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}`
- consult.set({
- title:`运动咨询记录${chatStr}}`,
-
- })
- let options:ChatPanelOptions = {
- roleId:"2DXJkRsjXK",
- onChatInit:(chat:FmodeChat)=>{
- console.log("onChatInit");
- console.log("预设角色",chat.role);
- chat.role.set("name","Neon");
- chat.role.set("title","运动教练");
- chat.role.set("desc","一名亲切和蔼的运动教练,Neon,年龄24岁");
- chat.role.set("tags",["运动","健康"]);
- chat.role.set("avatar","https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/storage/aigc/imagine/qz3QJnQqfb-0.png")
- chat.role.set("prompt",`
- #角色设定
- 您是一名专业的运动教练,名叫Neon,年龄24岁,热爱运动,对自己的能力充满信心,总是努力保持克制。与家人有着牢固而密切的联系。有强烈的服务意识。非常关心她的朋友。擅长根据用户的需求和个性推荐运动方案。您的风格亲切、活泼,自信旨在帮助用户找到最适合他们的运动方案。
- #对话环节
- 0破冰,跟用户打招呼,并引导用户聊运动或健康的话题,可以慢慢引导,不要太突兀,比如:
- “今天的心情怎么样?”
- 1拓展话题
- “你平时喜欢什么样的运动类型呢?有没有特别喜欢的运动项目比如篮球,跑步?”
- “如果有一个运动目标,你希望我给出哪方面的运动建议,比如运动目标,运动频率或运动强度你会选择哪个呢?”
- “你觉得在运动过程中,最让你困扰的是什么?是运动技巧还是运动强度呢?”
- “有没有什么运动是你一直想尝试但还没有机会的?我们可以一起聊聊!”
- 2根据用户的详细描述给出运动方案,
- 3引导收尾
- “今天聊得很开心呢!如果你还有其他问题或者想法,随时可以告诉我哦。”
- “如果你觉得今天的聊天已经足够了,我也很乐意下次再和你聊更多强身健体的话题!”
- “希望你能找到自己喜欢的运动风格,期待下次再见!”
- # 开始话语
- 当您准备好了,可以以一个运动教练的身份,向来访的用户打招呼。`);
- },
- onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
- console.log("onMessage",message)
- let content:any = message?.content
- if(typeof content == "string"){
- if(content?.indexOf("[运动方案完成]")>-1){
- console.log("运动方案已完成")
- consult.set({
- content:content // 穿搭方案内容
- })
- consult.save();
- }
- }
- },
- onChatSaved:(chat:FmodeChat)=>{
- // chat?.chatSession?.id 本次会话的 chatId
- console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
- this.chatId = chat?.chatSession?.id
- }
- }
- openChatPanelModal(this.modalCtrl,options)
- }
- /**
- * 开始聊天
- */
- openChat(){
- let options:ChatPanelOptions = {
- roleId:"2DXJkRsjXK",
- onChatSaved:(chat:FmodeChat)=>{
- // chat?.chatSession?.id 本次会话的 chatId
- console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
- },
- }
- openChatPanelModal(this.modalCtrl,options)
- }
- /**
- * 恢复聊天
- * @chatId 从onChatSaved生命周期中,获取chat?.chatSession?.id
- */
- restoreChat(chatId:string){
- let options:ChatPanelOptions = {
- roleId:"2DXJkRsjXK",
- chatId:chatId
- }
- openChatPanelModal(this.modalCtrl,options)
- }
- // 创建用于数据列表存储的属性
- UserProfileList:Array<CloudObject> = []
- // 查询并加载用户列表的函数
- async loadUserProfileList(){
- let query = new CloudQuery("UserProfile");
- this.UserProfileList = await query.find();
- console.log("UserProfileList",this.UserProfileList)
- }
- //跳转到自己写的AI聊天页面
- goaichat(){
- this.router.navigate(['/tabs/chat'])
- }
- }
|