From f40048fb085a05cd7c8a7383ac75a38aee4ffe31 Mon Sep 17 00:00:00 2001 From: Redon <790348264@qq.com> Date: Tue, 21 Feb 2023 15:26:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=20accessToken=20?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=20web=20api=20=E8=B0=83=E7=94=A8=20(#80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 支持 markdown 格式和图片 * perf: 重载的时候滚动条保持 * chore: version 2.5.2 * feat: 添加文字换行 * chore: 添加新封面 * chore: 更新 cover * feat: 支持 web api 的形式 * feat: 支持新模型和调整超时 * feat: 添加反向代理 * chore: 更新 README.md * feat: 添加超时和反向代理显示 * chore: version 2.6.0 * chore: update README --- .env | 2 + .vscode/settings.json | 1 + CHANGELOG.md | 10 ++++ README.md | 68 +++++++++++++++++++++--- docs/docker.png | Bin 0 -> 110879 bytes package.json | 2 +- service/.env | 9 ++++ service/package.json | 2 +- service/pnpm-lock.yaml | 8 +-- service/src/chatgpt.ts | 48 +++++++++++++---- service/src/index.ts | 12 ++++- src/api/index.ts | 6 +++ src/components/common/Setting/index.vue | 67 +++++++++++++++++++++++ src/components/common/index.ts | 3 +- src/typings/env.d.ts | 1 + src/utils/request/axios.ts | 2 +- src/views/chat/layout/sider/Footer.vue | 19 +++++++ src/views/chat/layout/sider/index.vue | 11 +--- 18 files changed, 236 insertions(+), 35 deletions(-) create mode 100644 docs/docker.png create mode 100644 src/components/common/Setting/index.vue create mode 100644 src/views/chat/layout/sider/Footer.vue diff --git a/.env b/.env index 1977a1e..4d00c89 100644 --- a/.env +++ b/.env @@ -2,3 +2,5 @@ VITE_GLOB_API_URL=/api VITE_APP_API_BASE_URL=http://localhost:3002/ + +VITE_GLOB_API_TIMEOUT=100000 diff --git a/.vscode/settings.json b/.vscode/settings.json index 5b084f7..5d48163 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -25,6 +25,7 @@ "chatgpt", "chenzhaoyu", "commitlint", + "davinci", "dockerhub", "esno", "GPTAPI", diff --git a/CHANGELOG.md b/CHANGELOG.md index d67631a..847ed0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +## v2.6.0 + +`2023-02-21` +### Feature +- 新增对 `网页 accessToken` 调用 `ChatGPT`,更智能不过不太稳定 [#51](https://github.com/Chanzhaoyu/chatgpt-web/issues/51) +- 前端页面设置按钮显示查看当前后端服务配置 + +### Enhancement +- 新增 `TIMEOUT_MS` 环境变量设定后端超时时常(单位:毫秒)[#62](https://github.com/Chanzhaoyu/chatgpt-web/issues/62) + ## v2.5.2 `2023-02-21` diff --git a/README.md b/README.md index 3c2143b..2ce4626 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,43 @@ # ChatGPT Web -使用 express 和 vue3 搭建的 ChartGPT 演示网页 +使用 `express` 和 `vue3` 搭建的支持 `ChatGPT` 双模型演示网页 ![cover](./docs/cover.png) ![cover2](./docs/cover2.png) -> 提示:目前 `OpenAI` 开放的模型最高只有 `GPT-3`,和现在网页所使用的 `GPT-3.5` 或 `GPT-4` 有很大差距,需要等官方开放最新的模型接口。 +## 介绍 + +支持双模型,提供了两种非官方 `ChatGPT API` 方法 + +| 方式 | 免费? | 可靠性 | 质量 | +| ---- | ---- | ---- | ---- | +| `ChatGPTAPI(GPT-3)` | 否 | 可靠 | 较笨 | +| `ChatGPTUnofficialProxyAPI(网页 accessToken)` | 是 | 不可靠 | 聪明 | + +***Note:*** 网页 `accessToken` 存在大约 8 小时,而且国内地区网络问题更推荐使用 `GPT-3` 的方式 + +对比: +1. `ChatGPTAPI` 使用 `text-davinci-003` 通过官方`OpenAI`补全`API`模拟`ChatGPT`(最稳健的方法,但它不是免费的,并且没有使用针对聊天进行微调的模型) +2. `ChatGPTUnofficialProxyAPI` 使用非官方代理服务器访问 `ChatGPT` 的后端`API`,绕过`Cloudflare`(使用真实的的`ChatGPT`,非常轻量级,但依赖于第三方服务器,并且有速率限制) + +切换方式: +1. 进入 `service/.env` 文件 +2. 使用 `OpenAI API Key` 请填写 `OPENAI_API_KEY` 字段 [(获取 apiKey)](https://platform.openai.com/overview) +3. 使用 `Web API` 请填写 `OPENAI_ACCESS_TOKEN` 字段 [(获取 accessToken)](https://chat.openai.com/api/auth/session) +4. 同时存在时以 `OpenAI API Key` 优先 + +反向代理: + +`ChatGPTUnofficialProxyAPI`时可用 [详情](https://github.com/transitive-bullshit/chatgpt-api#reverse-proxy) + +```shell +# service/.env +API_REVERSE_PROXY= +``` ## 待实现路线 +[✓] 双模型 + [✓] 多会话储存和上下文逻辑 [✓] 对代码等消息类型的格式化美化处理 @@ -34,12 +64,17 @@ node -v npm install pnpm -g ``` -### OpenAI API Key -注册并获取 [OpenAI API key](https://platform.openai.com/overview) 并填写到本地环境变量 +### 填写密钥 +获取 `Openai Api Key` 或 `accessToken` 并填写本地环境变量 [跳转](#介绍) + ``` # service/.env 文件 -OPENAI_API_KEY='Your key' +# OpenAI API Key - https://platform.openai.com/overview +OPENAI_API_KEY= + +# change this to an `accessToken` extracted from the ChatGPT site's `https://chat.openai.com/api/auth/session` response +OPENAI_ACCESS_TOKEN= ``` ## 安装依赖 @@ -60,7 +95,7 @@ pnpm install pnpm bootstrap ``` -## 运行 +## 测试环境运行 ### 后端服务 进入文件夹 `/service` 运行以下命令 @@ -69,7 +104,7 @@ pnpm bootstrap pnpm start ``` -### 网页 +### 前端网页 根目录下运行以下命令 ```shell pnpm dev @@ -78,6 +113,16 @@ pnpm dev ## 打包 ### 使用 Docker + +### Docker 参数示例 + +- `OPENAI_API_KEY` 二选一 +- `OPENAI_ACCESS_TOKEN` 二选一,同时存在时,`OPENAI_API_KEY` 优先 +- `API_REVERSE_PROXY` 可选,设置 `OPENAI_ACCESS_TOKEN` 时可用 [参考](#介绍) +- `TIMEOUT_MS` 超时,单位毫秒,可选 + +![docker](./docs/docker.png) + ### Docker build & Run ```bash @@ -106,7 +151,14 @@ services: ports: - 3002:3002 environment: + # 二选一 OPENAI_API_KEY: xxxxxx + # 二选一 + OPENAI_ACCESS_TOKEN: xxxxxx + # 反向代理,可选 + API_REVERSE_PROXY: xxx + # 超时,单位毫秒,可选 + TIMEOUT_MS: 60000 ``` @@ -129,7 +181,7 @@ pnpm prod PS: 不进行打包,直接在服务器上运行 `pnpm start` 也可 -### 前端打包 +### 前端网页 1、修改根目录下 `.env` 内 `VITE_APP_API_BASE_URL` 为你的实际后端接口地址 diff --git a/docs/docker.png b/docs/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..660c05de27da8b15dd44fad57609553c2d320b49 GIT binary patch literal 110879 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

-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", diff --git a/service/.env b/service/.env index 1c3f2e6..0bb4ad6 100644 --- a/service/.env +++ b/service/.env @@ -1,2 +1,11 @@ # OpenAI API Key - https://platform.openai.com/overview OPENAI_API_KEY= + +# change this to an `accessToken` extracted from the ChatGPT site's `https://chat.openai.com/api/auth/session` response +OPENAI_ACCESS_TOKEN= + +# Reverse Proxy +API_REVERSE_PROXY= + +# timeout +TIMEOUT_MS=60000 diff --git a/service/package.json b/service/package.json index 9b168b7..054a07b 100644 --- a/service/package.json +++ b/service/package.json @@ -23,7 +23,7 @@ "common:cleanup": "rimraf node_modules && rimraf pnpm-lock.yaml" }, "dependencies": { - "chatgpt": "^4.7.1", + "chatgpt": "^4.7.2", "dotenv": "^16.0.3", "esno": "^0.16.3", "express": "^4.18.2", diff --git a/service/pnpm-lock.yaml b/service/pnpm-lock.yaml index b67e754..e4800ef 100644 --- a/service/pnpm-lock.yaml +++ b/service/pnpm-lock.yaml @@ -4,7 +4,7 @@ specifiers: '@antfu/eslint-config': ^0.35.2 '@types/express': ^4.17.17 '@types/node': ^18.14.0 - chatgpt: ^4.7.1 + chatgpt: ^4.7.2 dotenv: ^16.0.3 eslint: ^8.34.0 esno: ^0.16.3 @@ -15,7 +15,7 @@ specifiers: typescript: ^4.9.5 dependencies: - chatgpt: 4.7.1 + chatgpt: 4.7.2 dotenv: 16.0.3 esno: 0.16.3 express: 4.18.2 @@ -878,8 +878,8 @@ packages: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: true - /chatgpt/4.7.1: - resolution: {integrity: sha512-FRXfpjn//Y4gUMcUo60W5byJ0CbFhC1Xp3PCm2qcBthBYFbC+LyRrwxvSVTdNwgQywHV4Pc5SFkaZ72f5rCNdQ==} + /chatgpt/4.7.2: + resolution: {integrity: sha512-c5CNqvB98IMEz/Byopwu5FlXGS3w/3iNiZITdDlcZLue4VSjEfzMRWrOrdGidzcE+ud2My6nO8/sSnY7W04WJA==} engines: {node: '>=14'} hasBin: true dependencies: diff --git a/service/src/chatgpt.ts b/service/src/chatgpt.ts index c3fca55..4e8bebc 100644 --- a/service/src/chatgpt.ts +++ b/service/src/chatgpt.ts @@ -1,27 +1,46 @@ import * as dotenv from 'dotenv' import 'isomorphic-fetch' import type { ChatGPTAPI, SendMessageOptions } from 'chatgpt' +import { ChatGPTUnofficialProxyAPI } from 'chatgpt' import { sendResponse } from './utils' +dotenv.config() + +let apiModel: 'ChatGPTAPI' | 'ChatGPTUnofficialProxyAPI' | undefined + export interface ChatContext { conversationId?: string parentMessageId?: string } -dotenv.config() +const timeoutMs: number = !isNaN(+process.env.TIMEOUT_MS) ? +process.env.TIMEOUT_MS : 30 * 1000 -const apiKey = process.env.OPENAI_API_KEY +if (!process.env.OPENAI_API_KEY && !process.env.OPENAI_ACCESS_TOKEN) + throw new Error('Missing OPENAI_API_KEY or OPENAI_ACCESS_TOKEN environment variable') -if (apiKey === undefined) - throw new Error('OPENAI_API_KEY is not defined') - -let api: ChatGPTAPI +let api: ChatGPTAPI | ChatGPTUnofficialProxyAPI // To use ESM in CommonJS, you can use a dynamic import (async () => { // More Info: https://github.com/transitive-bullshit/chatgpt-api const { ChatGPTAPI } = await import('chatgpt') - api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY }) + + if (process.env.OPENAI_API_KEY) { + api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY }) + apiModel = 'ChatGPTAPI' + } + else { + let options = {} + + if (process.env.API_REVERSE_PROXY) + options = { apiReverseProxyUrl: process.env.API_REVERSE_PROXY } + + api = new ChatGPTUnofficialProxyAPI({ + accessToken: process.env.OPENAI_ACCESS_TOKEN, + ...options, + }) + apiModel = 'ChatGPTUnofficialProxyAPI' + } })() async function chatReply( @@ -32,7 +51,7 @@ async function chatReply( return sendResponse({ type: 'Fail', message: 'Message is empty' }) try { - let options: SendMessageOptions = { timeoutMs: 30 * 1000 } + let options: SendMessageOptions = { timeoutMs } if (lastContext) options = { ...lastContext } @@ -46,4 +65,15 @@ async function chatReply( } } -export { chatReply } +async function chatConfig() { + return sendResponse({ + type: 'Success', + data: { + apiModel, + reverseProxy: process.env.API_REVERSE_PROXY, + timeoutMs, + }, + }) +} + +export { chatReply, chatConfig } diff --git a/service/src/index.ts b/service/src/index.ts index c723db6..01faf4a 100644 --- a/service/src/index.ts +++ b/service/src/index.ts @@ -1,6 +1,6 @@ import express from 'express' import type { ChatContext } from './chatgpt' -import { chatReply } from './chatgpt' +import { chatConfig, chatReply } from './chatgpt' const app = express() const router = express.Router() @@ -26,6 +26,16 @@ router.post('/chat', async (req, res) => { } }) +router.post('/config', async (req, res) => { + try { + const response = await chatConfig() + res.send(response) + } + catch (error) { + res.send(error) + } +}) + app.use('', router) app.use('/api', router) diff --git a/src/api/index.ts b/src/api/index.ts index 47fafd2..1d3811f 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -12,3 +12,9 @@ export function fetchChatAPI( signal, }) } + +export function fetchChatConfig() { + return post({ + url: '/config', + }) +} diff --git a/src/components/common/Setting/index.vue b/src/components/common/Setting/index.vue new file mode 100644 index 0000000..0fcb4a1 --- /dev/null +++ b/src/components/common/Setting/index.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/components/common/index.ts b/src/components/common/index.ts index 47dbe5a..16b6d10 100644 --- a/src/components/common/index.ts +++ b/src/components/common/index.ts @@ -2,5 +2,6 @@ import HoverButton from './HoverButton/index.vue' import NaiveProvider from './NaiveProvider/index.vue' import SvgIcon from './SvgIcon/index.vue' import UserAvatar from './UserAvatar/index.vue' +import Setting from './Setting/index.vue' -export { HoverButton, NaiveProvider, SvgIcon, UserAvatar } +export { HoverButton, NaiveProvider, SvgIcon, UserAvatar, Setting } diff --git a/src/typings/env.d.ts b/src/typings/env.d.ts index ca60025..54408d7 100644 --- a/src/typings/env.d.ts +++ b/src/typings/env.d.ts @@ -2,5 +2,6 @@ interface ImportMetaEnv { readonly VITE_GLOB_API_URL: string; + readonly VITE_GLOB_API_TIMEOUT: string; readonly VITE_APP_API_BASE_URL: string; } diff --git a/src/utils/request/axios.ts b/src/utils/request/axios.ts index cde4e73..06f993c 100644 --- a/src/utils/request/axios.ts +++ b/src/utils/request/axios.ts @@ -2,7 +2,7 @@ import axios, { type AxiosResponse } from 'axios' const service = axios.create({ baseURL: import.meta.env.VITE_GLOB_API_URL, - timeout: 30 * 1000, + timeout: !isNaN(+import.meta.env.VITE_GLOB_API_TIMEOUT) ? Number(import.meta.env.VITE_GLOB_API_TIMEOUT) : 60 * 1000, }) service.interceptors.request.use( diff --git a/src/views/chat/layout/sider/Footer.vue b/src/views/chat/layout/sider/Footer.vue new file mode 100644 index 0000000..4dda2d6 --- /dev/null +++ b/src/views/chat/layout/sider/Footer.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/views/chat/layout/sider/index.vue b/src/views/chat/layout/sider/index.vue index 3fb3b70..b8f47c0 100644 --- a/src/views/chat/layout/sider/index.vue +++ b/src/views/chat/layout/sider/index.vue @@ -3,7 +3,7 @@ import type { CSSProperties } from 'vue' import { computed, watch } from 'vue' import { NButton, NLayoutSider } from 'naive-ui' import List from './List.vue' -import { HoverButton, SvgIcon, UserAvatar } from '@/components/common' +import Footer from './Footer.vue' import { useAppStore, useChatStore } from '@/store' import { useBasicLayout } from '@/hooks/useBasicLayout' @@ -67,14 +67,7 @@ watch( -
- - - - - - -
+