import { Component, OnInit } from '@angular/core'; import { IonicModule, LoadingController } from '@ionic/angular'; import { FormsModule } from '@angular/forms'; import { Router } from '@angular/router'; import { FmodeChatCompletion, MarkdownPreviewModule } from 'fmode-ng'; import { CompWordEntryComponent } from '../comp-word-entry/comp-word-entry.component'; import { CloudObject, CloudQuery, CloudUser } from '../lib/ncloud'; import { IonHeader, IonToolbar, IonTitle, IonContent, IonButton,IonIcon, ModalController, IonTextarea, IonInput, IonCard, IonCardHeader, IonCardTitle, IonThumbnail, IonCardContent, IonCardSubtitle, IonItem, IonList, IonLabel, IonAvatar, IonSelect, IonSelectOption, AlertController, IonButtons, IonProgressBar, IonText } from '@ionic/angular/standalone'; import { CommonModule } from '@angular/common'; import { AvatarModule, ChatPanelOptions, DalleOptions, FmodeChat, FmodeChatMessage, ImagineWork, openChatPanelModal } from 'fmode-ng'; @Component({ selector: 'app-tool6', templateUrl: './tool6.page.html', styleUrls: ['./tool6.page.scss'], standalone: true, imports: [ IonicModule, FormsModule, MarkdownPreviewModule, CompWordEntryComponent, // IonHeader, // IonToolbar, // IonTitle, // IonContent, // IonButton, // IonTextarea, // IonInput, IonIcon, IonCard, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCardContent, IonThumbnail, IonItem, IonList, CommonModule, IonLabel, IonAvatar, IonSelect, IonSelectOption, // IonButtons, IonProgressBar, IonText ], }) export class Tool6Page implements OnInit { constructor(private router: Router) { this.currentUser = new CloudUser(); } ngOnInit() { } currentUser: CloudUser; // 用户输入提示词 titlel: string = ""; titleInput(ev: any) { console.log(ev.detail.value); this.titlel = ev.detail.value; } style: string = ""; styleInput(ev: any) { this.style = ev.detail.value; } // 生成的小说大纲 generatedOutline: string = ""; // 属性:组件内用于展示消息内容的变量 responseMsg: any = ""; // 方法:实例化completion对象,传入消息数组,并订阅生成的可观察对象。 isComplete: boolean = false; // 定义完成状态属性,用来标记是否补全完成 sendMessage() { console.log("create"); let PromptTemplate = ` 您作为一名专业的小说作者,请您根据用户提供的要求${this.style},给出小说世界架构,要求做到系统性:世界架构应具备完整的系统性,包括政治、经济、文化、社会结构、宗教信仰等各个方面,形成一个相互关联的整体。 逻辑性:世界的规则和设定应具有内在逻辑,确保各种元素之间的关系合理,避免出现不合常理的情况。 丰富性:世界应具有丰富的细节,包括地理环境、历史背景、种族文化等,能够让读者感受到一个生动而多元的世界。 可探索性:好的世界架构应允许角色和读者探索不同的地域、文化和历史,激发好奇心和冒险精神。 一致性:世界设定应在整个故事中保持一致,确保角色的行为和情节的发展符合世界的规则和背景。 动态性:世界应具有动态变化的特性,包括历史的演变、政治的变迁和文化的交融,使故事充满活力。 冲突与张力:世界架构中应包含各种冲突和张力,包括种族之间、国家之间或文化之间的对立,推动情节的发展。 多样性:好的世界架构应包含多种文化、种族和社会形态,反映出人类社会的多样性和复杂性。 角色的影响:角色在世界中的地位和影响力应得到合理体现,角色的行动能够对世界产生实质性的影响。 情感共鸣:世界架构应能够引发读者的情感共鸣,使他们能够与故事中的角色和事件产生联系,增强代入感。但是你不用对于特点进行详细介绍 `; console.log(PromptTemplate); let completion = new FmodeChatCompletion([ { role: "system", content: "" }, { role: "user", content: PromptTemplate } ]); completion.sendCompletion().subscribe((message: any) => { // 打印消息体 console.log(message.content); // 赋值消息内容给组件内属性 this.responseMsg = message.content; if (message?.complete) { // 判断message为完成状态,则设置isComplete为完成 this.isComplete = true; // 将生成的小说大纲放入文本框中 this.generatedOutline = this.responseMsg; } }); } saveNovel() { let consult = new CloudObject("NovelAriticle") let now = new Date(); let dateStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}` // 对象权限的精确指定 let completion = new FmodeChatCompletion([ {role:"system",content:""}, ]) completion.sendCompletion().subscribe((message:any)=>{ // 打印消息体 console.log(message.content) // 赋值消息内容给组件内属性 if (message?.complete ) { consult.set({ user: this.currentUser.toPointer(), username: this.currentUser.data["username"], required: `${this.style}`, content2: `${this.generatedOutline}`, date: dateStr, title :`世界架构`, category: `工具箱内容` }); consult.save(); console.log(consult); } }) } }