yuebuzu-creater 7 ヶ月 前
コミット
9e7e1aff9a

BIN
.DS_Store


+ 20 - 0
dream-app/src/app/page-dream-analysis/page-dream-analysis.component 2.html

@@ -0,0 +1,20 @@
+
+<ion-list>
+  <ion-item>
+    梦境标签
+  </ion-item>
+  <ion-item>
+      <app-edit-tag (onTagChange)="setTagsValue($event)"></app-edit-tag>
+  </ion-item>
+  <ion-item>
+    <ion-textarea [value]="dreamDesc" (ionInput)="userInput($event)" label="梦境描述" placeholder="具体描述您的感受、场景、人物、物品、事件" [autoGrow]="true"></ion-textarea>
+  </ion-item>
+  <ion-item>
+      <ion-button expand="block" (click)="analysisDream()">解析梦境</ion-button>
+  </ion-item>
+  <ion-item>
+    {{dreamResult}}
+  </ion-item>
+</ion-list>
+<!-- <div style="font-size: 18px">
+</div> -->

+ 0 - 0
dream-app/src/app/page-dream-analysis/page-dream-analysis.component 2.scss


+ 127 - 0
dream-app/src/app/page-dream-analysis/page-dream-analysis.component 2.ts

@@ -0,0 +1,127 @@
+import { Component, OnInit } from '@angular/core';
+import { EditTagComponent } from '../components/edit-tag/edit-tag.component';
+import { IonList } from '@ionic/angular/standalone';
+import { IonItem, IonTextarea,IonButton } from '@ionic/angular/standalone';
+import { TestChatCompletion } from './test-chat-completion';
+// import { FmodeChatCompletion } from "fmode-ng";
+@Component({
+  selector: 'app-page-dream-analysis',
+  templateUrl: './page-dream-analysis.component.html',
+  styleUrls: ['./page-dream-analysis.component.scss'],
+  imports:[
+    EditTagComponent,
+    IonList,IonItem,IonTextarea,IonButton
+  ],
+  standalone: true,
+})
+export class PageDreamAnalysisComponent  implements OnInit {
+
+
+  // 梦境关键词
+  dreamTags:Array<string> = []
+  setTagsValue(ev:any){
+    this.dreamTags = ev;
+  }
+  // 梦境描述
+  dreamDesc:string = ""
+  userInput(ev:any){
+    this.dreamDesc = ev.detail.value
+  }
+
+  // 梦境结果
+  dreamResult:string = ""
+
+  // 解析梦境
+  async analysisDream(){
+    console.log("关键词",this.dreamTags)
+    console.log("描述",this.dreamDesc)
+    console.log("开始解析梦境")
+    let prompt = `您作为一名专业的梦境解析大师,请帮我解析以下梦境。关键词:${this.dreamTags.join(",")},梦境描述:${this.dreamDesc}`
+
+    let TOKEN = `r:e20ef91b23e2c21d45cb50cd5ec1a122`;
+    localStorage.setItem("token",TOKEN)
+
+    let messageList:any = [
+      {
+        role:"system",content:`${new Date().toLocaleString()}`
+      },
+      {
+        role:"user",content:prompt
+      }
+    ]
+
+    // 创建并发起一条新的消息补全
+    let completion = new TestChatCompletion(messageList)
+    // 持续更新事件推送的消息体内容绑定至消息变量
+    completion.createCompletionByStream()
+
+    setInterval(()=>{
+      console.log(messageList)
+      this.dreamDesc = messageList[messageList.length-1]?.content;
+    },1000)
+    // let bodyJson = {
+    //   "token": `Bearer ${TOKEN}`,
+    //   "messages": messageList,
+    //   "model": "fmode-4.5-128k",
+    //   "temperature": 0.5,
+    //   "presence_penalty": 0,
+    //   "frequency_penalty": 0,
+    //   "top_p": 1,
+    //   "stream":true
+    // };
+  
+    // let response = await fetch("https://test.fmode.cn/api/apig/aigc/gpt/v1/chat/completions", {
+    //   "headers": {
+    //     "accept": "text/event-stream",
+    //   },
+    //   "body": JSON.stringify(bodyJson),
+    //   "method": "POST",
+    //   "mode": "cors",
+    //   "credentials": "omit"
+    // });
+    // if(response && response.body){
+
+    //   let reader = response.body.getReader();
+
+    //   if (!reader) {
+    //     throw new Error("Failed to get the response reader.");
+    //   }
+
+    //   let decoder = new TextDecoder();
+    
+    //   while (true) {
+    //     let { done, value } = await reader.read();
+    //     if (done) {
+    //       break;
+    //     }
+    
+    //     let data = decoder.decode(value);
+    //     /**
+    //       data: {"id":"chatcmpl-AXgfsaapykrm9oEBVQTwRZAVRQHj7","object":"chat.completion.chunk","created":1732592228,"model":"gpt-4o-mini-2024-07-18","system_fingerprint":"fp_0705bf87c0","choices":[{"index":0,"delta":{"content":"!"},"logprobs":null,"finish_reason":null}],"usage":null}
+    //       data: {"id":"chatcmpl-AXgfsaapykrm9oEBVQTwRZAVRQHj7","object":"chat.completion.chunk","created":1732592228,"model":"gpt-4o-mini-2024-07-18","system_fingerprint":"fp_0705bf87c0","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null}
+    //       data: {"id":"chatcmpl-AXgfsaapykrm9oEBVQTwRZAVRQHj7","object":"chat.completion.chunk","created":1732592228,"model":"gpt-4o-mini-2024-07-18","system_fingerprint":"fp_0705bf87c0","choices":[],"usage":{"prompt_tokens":110,"completion_tokens":240,"total_tokens":350,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}}}
+    //       data: [DONE]
+    //      */
+    //     let messages = data.split("\n");
+    //     messages.forEach(message=>{
+    //       console.log(message)
+    //       let dataStr:string = message.split("data: ")[1]
+    //       if(dataStr&&dataStr.startsWith("{")){
+    //         try{
+    //           let json = JSON.parse(dataStr);
+    //           let content = json.choices[0].delta.content
+    //           console.log(content)
+    //           this.dreamResult =  this.dreamResult + content
+    //         }catch(err){}
+    //       }
+    //     })
+
+    //   }
+    // }
+  }
+
+  constructor() { }
+
+  ngOnInit() {}
+
+}

+ 22 - 0
dream-app/src/app/page-dream-analysis/page-dream-analysis.component.spec 2.ts

@@ -0,0 +1,22 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+
+import { PageDreamAnalysisComponent } from './page-dream-analysis.component';
+
+describe('PageDreamAnalysisComponent', () => {
+  let component: PageDreamAnalysisComponent;
+  let fixture: ComponentFixture<PageDreamAnalysisComponent>;
+
+  beforeEach(waitForAsync(() => {
+    TestBed.configureTestingModule({
+      imports: [PageDreamAnalysisComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(PageDreamAnalysisComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  }));
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 98 - 0
dream-app/src/app/page-dream-analysis/test-chat-completion 2.ts

@@ -0,0 +1,98 @@
+export interface TestChatMessage{
+    role:string
+    content:string
+}
+export class TestChatCompletion{
+messageList:Array<TestChatMessage>
+constructor(messageList:Array<TestChatMessage>){
+    this.messageList = messageList
+}
+async createCompletionByStream() {
+
+let token = localStorage.getItem("token");
+let bodyJson = {
+  "token": `Bearer ${token}`,
+  "messages": this.messageList,
+  "model": "fmode-4.5-128k",
+  "temperature": 0.5,
+  "presence_penalty": 0,
+  "frequency_penalty": 0,
+  "top_p": 1,
+  "stream":true
+};
+
+let response = await fetch("https://test.fmode.cn/api/apig/aigc/gpt/v1/chat/completions", {
+  "headers": {
+    "accept": "text/event-stream",
+    "sec-fetch-dest": "empty",
+    "sec-fetch-mode": "cors",
+    "sec-fetch-site": "same-site"
+  },
+  "referrer": "https://ai.fmode.cn/",
+  "body": JSON.stringify(bodyJson),
+  "method": "POST",
+  "mode": "cors",
+  "credentials": "omit"
+});
+
+let messageAiReply = ""
+let messageIndex = this.messageList.length
+let reader = response.body?.getReader();
+if (!reader) {
+  throw new Error("Failed to get the response reader.");
+}
+
+let decoder = new TextDecoder();
+let buffer = "";
+
+while (true) {
+  let { done, value } = await reader.read();
+  if (done) {
+    break;
+  }
+
+  buffer += decoder.decode(value);
+
+  // Split the buffer by newlines to get individual messages
+  let messages = buffer.split("\n");
+
+  // Process each message
+  for (let i = 0; i < messages.length - 1; i++) {
+    let message = messages[i];
+
+    // Process the message as needed
+    /**
+     * data: {"id":"chatcmpl-y2PLKqPDnwAFJIj2L5aqdH5TWK9Yv","object":"chat.completion.chunk","created":1696770162,"model":"fmode-4.5-128k","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
+     * data: {"id":"chatcmpl-y2PLKqPDnwAFJIj2L5aqdH5TWK9Yv","object":"chat.completion.chunk","created":1696770162,"model":"fmode-4.5-128k","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
+     * data: [DONE]
+     */
+    let dataText = message.replace("data:\ ","")
+    if(dataText.startsWith("{")){
+      try{
+        let dataJson = JSON.parse(dataText)
+        console.log(dataJson)
+        messageAiReply += dataJson?.choices?.[0]?.delta?.content || ""
+        this.messageList[messageIndex] = {
+          role:"assistant",
+          content:messageAiReply
+        }
+      }catch(err){}
+    }
+    if(dataText.startsWith("[")){
+      console.log(message)
+      console.log("完成")
+      this.messageList[messageIndex] = {
+        role:"assistant",
+        content:messageAiReply
+      }
+      messageAiReply = ""
+    }
+    // Parse the message as JSON
+    // let data = JSON.parse(message);
+
+    // Clear the processed message from the buffer
+    buffer = buffer.slice(message.length + 1);
+  }
+}
+}
+}

+ 3 - 0
dream-app/src/app/page-rxjs/page-rxjs.component 2.html

@@ -0,0 +1,3 @@
+<p>
+  page-rxjs works!
+</p>

+ 0 - 0
dream-app/src/app/page-rxjs/page-rxjs.component 2.scss


+ 19 - 0
dream-app/src/app/page-rxjs/page-rxjs.component 2.ts

@@ -0,0 +1,19 @@
+import { Component, OnInit } from '@angular/core';
+// import { from } from "rxjs"
+@Component({
+  selector: 'app-page-rxjs',
+  templateUrl: './page-rxjs.component.html',
+  styleUrls: ['./page-rxjs.component.scss'],
+  standalone: true,
+})
+export class PageRxjsComponent  implements OnInit {
+
+  constructor() { }
+
+  ngOnInit() {}
+
+  testRxjs(){
+    // from
+  }
+
+}

+ 22 - 0
dream-app/src/app/page-rxjs/page-rxjs.component.spec 2.ts

@@ -0,0 +1,22 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+
+import { PageRxjsComponent } from './page-rxjs.component';
+
+describe('PageRxjsComponent', () => {
+  let component: PageRxjsComponent;
+  let fixture: ComponentFixture<PageRxjsComponent>;
+
+  beforeEach(waitForAsync(() => {
+    TestBed.configureTestingModule({
+      imports: [PageRxjsComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(PageRxjsComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  }));
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 0 - 0
dream-app/src/app/page-test/page-test.component 2.scss