qna.page.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { Component, OnInit } from '@angular/core';
  2. import {
  3. IonTextarea,
  4. IonInput,
  5. IonHeader,
  6. IonToolbar,
  7. IonTitle,
  8. IonContent,
  9. IonBackButton,
  10. IonButtons,
  11. IonButton
  12. } from '@ionic/angular/standalone';
  13. import { CommonModule } from '@angular/common'; // 导入 CommonModule
  14. import { FmodeChatCompletion, MarkdownPreviewModule } from 'fmode-ng';
  15. @Component({
  16. selector: 'app-qna',
  17. templateUrl: './qna.page.html',
  18. styleUrls: ['./qna.page.scss'],
  19. standalone: true,
  20. imports: [
  21. CommonModule, // 添加 CommonModule
  22. MarkdownPreviewModule, // 确保导入 MarkdownPreviewModule
  23. IonTextarea,
  24. IonInput,
  25. IonHeader,
  26. IonToolbar,
  27. IonTitle,
  28. IonContent,
  29. IonBackButton,
  30. IonButtons,
  31. IonButton
  32. ]
  33. })
  34. export class QnaPage implements OnInit {
  35. constructor() {}
  36. ngOnInit() {}
  37. // 用户输入提示词
  38. userPrompt: string = "请输入你的问题:";
  39. promptInput(ev: any) {
  40. this.userPrompt = ev.detail.value;
  41. }
  42. // 属性:组件内用于展示消息内容的变量
  43. responseMsg: any = "";
  44. isComplete: boolean = false; // 定义完成状态属性,用来标记是否补全完成
  45. sendMessage() {
  46. console.log("create");
  47. let PromptTemplate = `
  48. 您作为一名专业的虚拟教师,请您根据用户的问题${this.userPrompt},给出详细的解答。
  49. `;
  50. let completion = new FmodeChatCompletion([
  51. { role: "system", content: "" },
  52. { role: "user", content: PromptTemplate }
  53. ]);
  54. completion.sendCompletion().subscribe((message: any) => {
  55. // 打印消息体
  56. console.log(message.content);
  57. // 赋值消息内容给组件内属性
  58. this.responseMsg = message.content;
  59. if (message?.complete) { // 判断message为完成状态,则设置isComplete为完成
  60. this.isComplete = true;
  61. }
  62. });
  63. // 重置状态以允许再次提问
  64. this.isComplete = false; // 允许再次提问
  65. this.userPrompt = ""; // 清空输入框
  66. }
  67. }