character-generator.page.ts 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { Component, OnInit } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { FormsModule } from '@angular/forms';
  4. import { IonHeader, IonToolbar, IonTitle, IonContent, IonButton, IonTextarea, IonInput, IonBackButton, IonButtons, IonCardContent, IonCardTitle, IonCardHeader, IonCard, IonCol, IonRow, IonLabel, IonGrid } from '@ionic/angular/standalone';
  5. import { FmodeChatCompletion, MarkdownPreviewModule } from 'fmode-ng';
  6. @Component({
  7. selector: 'app-character-generator',
  8. templateUrl: './character-generator.page.html',
  9. styleUrls: ['./character-generator.page.scss'],
  10. standalone: true,
  11. imports: [
  12. CommonModule, // 确保 CommonModule 已经导入
  13. FormsModule,
  14. IonHeader, IonToolbar, IonTitle, IonContent, IonButton, IonTextarea, IonInput, IonBackButton, IonButtons,
  15. IonCardContent, IonCardTitle, IonCardHeader, IonCard, IonCol, IonRow, IonLabel, IonGrid,
  16. // 引入fm-markdown-preview组件模块
  17. MarkdownPreviewModule
  18. ],
  19. })
  20. export class CharacterGeneratorPage implements OnInit {
  21. constructor() { }
  22. ngOnInit() { }
  23. types = [
  24. '重生', '都市', '穿越', '玄幻', '系统文', '搞笑轻松', '历史古代', '武侠', '奇幻仙侠', '修仙', '末日求生', '东方玄幻', '异能', '科幻末世', '规则怪谈', '悬疑脑洞', '异世大陆', '种田文', '悬疑推理', '无脑爽文', '战神赘婿', '克苏鲁', '穿书'
  25. ];
  26. selectedType: string = '重生';
  27. selectType(type: string) {
  28. this.selectedType = type;
  29. }
  30. gender = [
  31. '男', '女'
  32. ];
  33. selectedGender: string = '男'; // 修改默认值
  34. selectGender(gender: string) {
  35. this.selectedGender = gender;
  36. }
  37. userPrompt: string = "一个高中生,来自一个神秘的学校。";
  38. promptInput(ev: any) {
  39. this.userPrompt = ev.detail.value;
  40. }
  41. responseMsg: any = "";
  42. isComplete: boolean = false;
  43. sendMessage() {
  44. console.log("create");
  45. let PromptTemplate = `
  46. 您作为一名专业的${this.selectedType}小说作者,请您根据用户提供的期望描述,给出一个性别为${this.selectedGender}、符合${this.selectedType}类型特点的人物描述。
  47. 以下是用户的期望描述:${this.userPrompt}
  48. `;
  49. // 添加系统角色提示
  50. let systemPrompt = `
  51. 你是一名专业的小说作者,擅长各种类型的小说创作。请根据用户提供的信息,生成一个符合特定类型特点的人物描述。
  52. `;
  53. let completion = new FmodeChatCompletion([
  54. { role: "system", content: systemPrompt },
  55. { role: "user", content: PromptTemplate }
  56. ]);
  57. completion.sendCompletion().subscribe((message: any) => {
  58. console.log(message.content);
  59. this.responseMsg = message.content;
  60. if (message?.complete) {
  61. this.isComplete = true;
  62. }
  63. });
  64. }
  65. copyToClipboard() {
  66. const textarea = document.createElement('textarea');
  67. textarea.value = this.responseMsg;
  68. document.body.appendChild(textarea);
  69. textarea.select();
  70. document.execCommand('copy');
  71. document.body.removeChild(textarea);
  72. alert('内容已复制到剪贴板');
  73. }
  74. }