x1ongzhu 3 년 전
부모
커밋
c86a3aa9df
5개의 변경된 파일20개의 추가작업 그리고 10개의 파일을 삭제
  1. 2 1
      package.json
  2. 2 2
      src/chatapi/chatgpt-api.ts
  3. 1 1
      src/chatapi/chatgpt-unofficial-proxy-api.ts
  4. 6 2
      src/openai/openai.service.ts
  5. 9 4
      yarn.lock

+ 2 - 1
package.json

@@ -23,6 +23,7 @@
   "dependencies": {
     "@alicloud/dysmsapi20170525": "2.0.23",
     "@dqbd/tiktoken": "^1.0.6",
+    "@esm2cjs/p-timeout": "^6.0.0",
     "@nestjs/common": "^9.3.3",
     "@nestjs/config": "^2.3.1",
     "@nestjs/core": "^9.3.3",
@@ -52,7 +53,7 @@
     "passport": "^0.6.0",
     "passport-http-bearer": "^1.0.1",
     "passport-jwt": "^4.0.1",
-    "quick-lru": "^6.1.1",
+    "quick-lru": "^5.0.0",
     "randomstring": "^1.2.3",
     "reflect-metadata": "^0.1.13",
     "rimraf": "^4.1.2",

+ 2 - 2
src/chatapi/chatgpt-api.ts

@@ -1,5 +1,6 @@
 import * as Keyv from 'keyv'
-import QuickLRU from 'quick-lru'
+import pTimeout from '@esm2cjs/p-timeout'
+import * as QuickLRU from 'quick-lru'
 import { v4 as uuidv4 } from 'uuid'
 import * as tokenizer from './tokenizer'
 import * as types from './types'
@@ -306,7 +307,6 @@ export class ChatGPTAPI {
                     abortController.abort()
                 }
             }
-            const pTimeout = (await import('p-timeout')).default
             return pTimeout(responseP, {
                 milliseconds: timeoutMs,
                 message: 'OpenAI timed out waiting for response'

+ 1 - 1
src/chatapi/chatgpt-unofficial-proxy-api.ts

@@ -1,4 +1,4 @@
-import pTimeout from 'p-timeout'
+import pTimeout from '@esm2cjs/p-timeout'
 import { v4 as uuidv4 } from 'uuid'
 
 import * as types from './types'

+ 6 - 2
src/openai/openai.service.ts

@@ -6,16 +6,20 @@ export class OpenaiService {
     constructor() {}
 
     public async chat(req, res) {
-        const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY })
+        res.setHeader('Content-type', 'application/octet-stream')
+        const api = new ChatGPTAPI({ apiKey: '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' })
 
         const prompt = 'Write a python version of bubble sort. Do not include example usage.'
 
         console.log(prompt)
+        let firstChunk = true
         const result = await api.sendMessage(prompt, {
             onProgress: (partialResponse) => {
-                console.log(partialResponse.text)
+                res.write(firstChunk ? JSON.stringify(partialResponse) : `\n${JSON.stringify(partialResponse)}`)
+                firstChunk = false
             }
         })
         console.log(result.text)
+        res.end()
     }
 }

+ 9 - 4
yarn.lock

@@ -466,6 +466,11 @@
   resolved "https://registry.npmmirror.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892"
   integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==
 
+"@esm2cjs/p-timeout@^6.0.0":
+  version "6.0.0"
+  resolved "https://registry.npmmirror.com/@esm2cjs/p-timeout/-/p-timeout-6.0.0.tgz#6d5c9a28f3479bb5d45cfa571d51113c9dc0e18e"
+  integrity sha512-pGJ/8I7UfSfLZhw0JbwKGta8inZf1FYStEHyKIV9lK3c5rTIP5QZNZkPDB2O5u4LuxNd2bNB3iTOJCY35LQeog==
+
 "@humanwhocodes/config-array@^0.11.8":
   version "0.11.8"
   resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
@@ -4979,10 +4984,10 @@ queue-microtask@^1.2.2:
   resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
   integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
 
-quick-lru@^6.1.1:
-  version "6.1.1"
-  resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.1.tgz#f8e5bf9010376c126c80c1a62827a526c0e60adf"
-  integrity sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==
+quick-lru@^5.0.0:
+  version "5.1.1"
+  resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
+  integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
 
 randombytes@2.0.3:
   version "2.0.3"