diff --git a/packages/gpt-runner-core/package.json b/packages/gpt-runner-core/package.json index 6c75cdf..1e63a03 100644 --- a/packages/gpt-runner-core/package.json +++ b/packages/gpt-runner-core/package.json @@ -48,7 +48,7 @@ "dependencies": { "@nicepkg/gpt-runner-shared": "workspace:*", "ignore": "^5.2.4", - "langchain": "^0.0.122", + "langchain": "^0.0.123", "unconfig": "^0.3.10", "uuid": "^9.0.0", "zod": "^3.21.4" diff --git a/packages/gpt-runner-core/src/index.ts b/packages/gpt-runner-core/src/index.ts index 27fe445..c065a6c 100644 --- a/packages/gpt-runner-core/src/index.ts +++ b/packages/gpt-runner-core/src/index.ts @@ -1,3 +1,7 @@ +import { addNodejsPolyfill } from '@nicepkg/gpt-runner-shared/node' + +addNodejsPolyfill() + export * from './core' export * from './langchain' diff --git a/packages/gpt-runner-shared/package.json b/packages/gpt-runner-shared/package.json index 0398cca..673a4bc 100644 --- a/packages/gpt-runner-shared/package.json +++ b/packages/gpt-runner-shared/package.json @@ -89,6 +89,8 @@ "minimatch": "*", "socket.io": "*", "socket.io-client": "*", + "undici": "*", + "web-streams-polyfill": "*", "zod": "*", "zod-to-json-schema": "*" }, @@ -108,6 +110,8 @@ "open": "^8.4.2", "socket.io": "^4.7.2", "socket.io-client": "^4.7.2", + "undici": "^5.23.0", + "web-streams-polyfill": "^3.2.1", "zod": "^3.21.4", "zod-to-json-schema": "^3.21.4" }, diff --git a/packages/gpt-runner-shared/src/node/helpers/index.ts b/packages/gpt-runner-shared/src/node/helpers/index.ts index 15e9f80..e1f4110 100644 --- a/packages/gpt-runner-shared/src/node/helpers/index.ts +++ b/packages/gpt-runner-shared/src/node/helpers/index.ts @@ -6,5 +6,6 @@ export * from './get-cache-dir' export * from './get-storage' export * from './network' export * from './path-utils' +export * from './polyfill' export * from './proxy' export * from './request' diff --git a/packages/gpt-runner-shared/src/node/helpers/polyfill.ts b/packages/gpt-runner-shared/src/node/helpers/polyfill.ts new file mode 100644 index 0000000..b4d81d3 --- /dev/null +++ b/packages/gpt-runner-shared/src/node/helpers/polyfill.ts @@ -0,0 +1,15 @@ +import { Headers, Request, Response, fetch } from 'undici' +import { ReadableStream } from 'web-streams-polyfill' +import { canUseNodeFetchWithoutCliFlag } from './check-node-version' + +export function addNodejsPolyfill() { + if (!canUseNodeFetchWithoutCliFlag()) { + console.log('GPT Runner: add polyfill for fetch', process.version) + // polyfill for nodejs < 18.0.0 + globalThis.fetch = fetch as any + globalThis.Headers = Headers as any + globalThis.Request = Request as any + globalThis.Response = Response as any + globalThis.ReadableStream = ReadableStream as any + } +} diff --git a/packages/gpt-runner-web/assets/app-config.json b/packages/gpt-runner-web/assets/app-config.json index 8390143..b450713 100644 --- a/packages/gpt-runner-web/assets/app-config.json +++ b/packages/gpt-runner-web/assets/app-config.json @@ -25,7 +25,7 @@ "notificationConfig": { "createAt": "2023-08-06 18:37:06", "title": "GPT Runner 通知", - "message": "\n### 🚀 新版 v1.2.2 (2023-08-06)\n\n> vscode 用户重启 vscode 后即可在扩展处更新。\n>\n> cli 用户执行 `npm i -g gptr` 即可更新。\n\n1. 针对语言为简体中文的用户提供 OpenAI API key 第三方供应商,也就是你可以白嫖了。\n2. 点击左上角设置,切换供应商即可。\n3. 本次 API Key 由慷慨大方的 `朝云云` 提供,让我们把掌声送给他。\n\n### 💬 交流\n\n1. 想进群交流的加 wechat: `qq2214962083`\n2. 所有捐赠 API Key 的朋友,都可以在这里免费展示 50 字以内的广告直到 API Key 失效,如果你也想捐赠 API Key,可以联系我。\n3. 此处广告仅供展示,与 GPT-Runner 无关,**若有财产交易,请自行承担风险**\n\n### 📢 YunAI - AI驱动的WEB对话应用 (朝云云供应商广告)\n\n🔵 [**点击进入**](https://faschat.zyai.online/)注册即送大量3.5使用次数\n\n如需适配 GPT-Runner 的 4.0-32k 或 Claude 接口服务,可 VX 联系:`YunAi0101`\n\n " + "message": "\n### 🚀 新版 v1.2.2 (2023-08-06)\n\n> vscode 用户重启 vscode 后即可在扩展处更新。\n>\n> cli 用户执行 `npm update -g gptr` 即可更新。\n\n1. 针对语言为简体中文的用户提供 OpenAI API key 第三方供应商,也就是你可以白嫖了。\n2. 点击左上角设置,切换供应商即可。\n3. 本次 API Key 由慷慨大方的 `朝云云` 提供,让我们把掌声送给他。\n\n### 💬 交流\n\n1. 想进群交流的加 wechat: `qq2214962083`\n2. 所有捐赠 API Key 的朋友,都可以在这里免费展示 50 字以内的广告直到 API Key 失效,如果你也想捐赠 API Key,可以联系我。\n3. 此处广告仅供展示,与 GPT-Runner 无关,**若有财产交易,请自行承担风险**\n\n### 📢 YunAI - AI驱动的WEB对话应用 (朝云云供应商广告)\n\n🔵 [**点击进入**](https://faschat.zyai.online/)注册即送大量3.5使用次数\n\n如需适配 GPT-Runner 的 4.0-32k 或 Claude 接口服务,可 VX 联系:`YunAi0101`\n\n " }, "vendorsConfig": { "createAt": "2023-08-06 18:37:22", @@ -41,4 +41,4 @@ "anthropic": [] } } -} \ No newline at end of file +} diff --git a/packages/gpt-runner-web/server/index.ts b/packages/gpt-runner-web/server/index.ts index ec7bccc..c65c220 100644 --- a/packages/gpt-runner-web/server/index.ts +++ b/packages/gpt-runner-web/server/index.ts @@ -3,11 +3,13 @@ import type { Express } from 'express' import express from 'express' import cors from 'cors' import history from 'connect-history-api-fallback' -import { PathUtils, getPort } from '@nicepkg/gpt-runner-shared/node' +import { PathUtils, addNodejsPolyfill, getPort } from '@nicepkg/gpt-runner-shared/node' import { setProxyUrl } from './src/proxy' import { processControllers } from './src/controllers' import { errorHandlerMiddleware, safeCheckMiddleware } from './src/middleware' +addNodejsPolyfill() + export * from './src/helpers/app-config' const dirname = PathUtils.getCurrentDirName(import.meta.url, () => __dirname) diff --git a/packages/gpt-runner-web/server/src/helpers/app-config/notification.config.ts b/packages/gpt-runner-web/server/src/helpers/app-config/notification.config.ts index 2e92057..d5f2d5a 100644 --- a/packages/gpt-runner-web/server/src/helpers/app-config/notification.config.ts +++ b/packages/gpt-runner-web/server/src/helpers/app-config/notification.config.ts @@ -14,7 +14,7 @@ export const cnNotificationConfig: NotificationConfig = { > vscode 用户重启 vscode 后即可在扩展处更新。 > -> cli 用户执行 \`npm i -g gptr\` 即可更新。 +> cli 用户执行 \`npm update -g gptr\` 即可更新。 1. 针对语言为简体中文的用户提供 OpenAI API key 第三方供应商,也就是你可以白嫖了。 2. 点击左上角设置,切换供应商即可。 diff --git a/packages/gpt-runner-web/server/src/proxy.ts b/packages/gpt-runner-web/server/src/proxy.ts index cda582b..4918a3b 100644 --- a/packages/gpt-runner-web/server/src/proxy.ts +++ b/packages/gpt-runner-web/server/src/proxy.ts @@ -1,17 +1,6 @@ -import { canUseNodeFetchWithoutCliFlag, getDefaultProxyUrl } from '@nicepkg/gpt-runner-shared/node' +import { getDefaultProxyUrl } from '@nicepkg/gpt-runner-shared/node' import { bootstrap } from 'global-agent' -import { Headers, ProxyAgent, Request, Response, fetch, setGlobalDispatcher } from 'undici' -import { ReadableStream } from 'web-streams-polyfill/ponyfill' - -if (!canUseNodeFetchWithoutCliFlag()) { - console.log('GPT Runner: add polyfill for fetch', process.version) - // polyfill for nodejs < 18.0.0 - globalThis.fetch = fetch as any - globalThis.Headers = Headers as any - globalThis.Request = Request as any - globalThis.Response = Response as any - globalThis.ReadableStream = ReadableStream as any -} +import { ProxyAgent, setGlobalDispatcher } from 'undici' // global proxy async function startProxy() { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff24739..0f5c96b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -165,8 +165,8 @@ importers: specifier: ^5.2.4 version: 5.2.4 langchain: - specifier: ^0.0.122 - version: 0.0.122(ignore@5.2.4) + specifier: ^0.0.123 + version: 0.0.123(ignore@5.2.4) unconfig: specifier: ^0.3.10 version: 0.3.10 @@ -231,6 +231,12 @@ importers: socket.io-client: specifier: ^4.7.2 version: 4.7.2 + undici: + specifier: ^5.23.0 + version: 5.23.0 + web-streams-polyfill: + specifier: ^3.2.1 + version: 3.2.1 zod: specifier: ^3.21.4 version: 3.21.4 @@ -915,7 +921,7 @@ packages: gensync: 1.0.0-beta.2 json5: 2.2.3 lodash: 4.17.21 - resolve: 1.22.2 + resolve: 1.22.3 semver: 5.7.1 source-map: 0.5.6 transitivePeerDependencies: @@ -1309,7 +1315,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -1325,7 +1331,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: false @@ -1340,7 +1346,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: false @@ -1355,7 +1361,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: true @@ -7021,7 +7027,7 @@ packages: glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.30.0 - resolve: 1.22.2 + resolve: 1.22.3 rollup: 2.79.1 dev: true @@ -7045,7 +7051,7 @@ packages: builtin-modules: 3.3.0 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.3 rollup: 2.79.1 dev: false @@ -7060,7 +7066,7 @@ packages: deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.3 rollup: 2.79.1 dev: true @@ -9281,7 +9287,6 @@ packages: engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 - dev: true /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} @@ -11694,7 +11699,7 @@ packages: dependencies: debug: 3.2.7 is-core-module: 2.12.1 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: true @@ -14199,8 +14204,8 @@ packages: engines: {node: '>= 8'} dev: false - /langchain@0.0.122(ignore@5.2.4): - resolution: {integrity: sha512-M/w6CZH+Y12jrts5ENFLpQF3ZzwI6bluubeL0wjyqz/btd8puXsHyyyt58bKg8bIMZF02Y2Tjr1qyqKQKTaJ0Q==} + /langchain@0.0.123(ignore@5.2.4): + resolution: {integrity: sha512-dMncy/yttMqch11tQUNdygQJlqlKampl8BULFWqZGG1uopzXC1ljqohWpdeLkwAYdKZ7uKcpdaYEXMvhxZsIJQ==} engines: {node: '>=18'} peerDependencies: '@aws-sdk/client-dynamodb': ^3.310.0 @@ -15777,7 +15782,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 + resolve: 1.22.3 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -18119,7 +18124,6 @@ packages: is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} @@ -18982,7 +18986,6 @@ packages: /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - dev: true /strict-event-emitter@0.2.8: resolution: {integrity: sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==} @@ -19848,7 +19851,6 @@ packages: engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 - dev: true /unherit@1.1.3: resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} @@ -20713,7 +20715,6 @@ packages: /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} - dev: true /web-streams-polyfill@4.0.0-beta.3: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}