Skip to content

Commit

Permalink
feat: close ChatGPTNextWeb#663 allow disable user api key input
Browse files Browse the repository at this point in the history
  • Loading branch information
Yidadaa committed May 3, 2023
1 parent b1ea264 commit 074bd9f
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 23 deletions.
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel.

[演示](https://chat-gpt-next-web.vercel.app/) / [反馈](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [QQ 群](https://user-images.githubusercontent.com/16968934/234462588-e8eff256-f5ca-46ef-8f5f-d7db6d28735a.jpg) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg)


[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web&env=OPENAI_API_KEY&env=CODE&project-name=chatgpt-next-web&repository-name=ChatGPT-Next-Web)

[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yidadaa/ChatGPT-Next-Web)
Expand Down Expand Up @@ -50,6 +49,7 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel.
- UI text customize

## What's New

- 🚀 v2.0 is released, now you can create prompt templates, turn your ideas into reality! Read this: [ChatGPT Prompt Engineering Tips: Zero, One and Few Shot Prompting](https://www.allabtai.com/prompt-engineering-tips-zero-one-and-few-shot-prompting/).

## 主要功能
Expand Down Expand Up @@ -80,9 +80,8 @@ One-Click to deploy well-designed ChatGPT web UI on Vercel.
- 用户登录、账号管理、消息云同步

## 最新动态
- 🚀 v2.0 已经发布,现在你可以使用面具功能快速创建预制对话了! 了解更多: [ChatGPT 提示词高阶技能:零次、一次和少样本提示](https://github.com/Yidadaa/ChatGPT-Next-Web/issues/138)


- 🚀 v2.0 已经发布,现在你可以使用面具功能快速创建预制对话了! 了解更多: [ChatGPT 提示词高阶技能:零次、一次和少样本提示](https://github.com/Yidadaa/ChatGPT-Next-Web/issues/138)

## Get Started

Expand Down Expand Up @@ -163,6 +162,12 @@ Override openai api request base url.

Specify OpenAI organization ID.

### `HIDE_USER_API_KEY` (optional)

> Default: Empty
If you do not want users to input their own API key, set this environment variable to 1.

## Development

> [简体中文 > 如何进行二次开发](./README_CN.md#开发)
Expand Down Expand Up @@ -249,7 +254,6 @@ bash <(curl -s https://raw.githubusercontent.com/Yidadaa/ChatGPT-Next-Web/main/s
[@WingCH](https://github.com/WingCH)
[@jtung4](https://github.com/jtung4)


### Contributor

[Contributors](https://github.com/Yidadaa/ChatGPT-Next-Web/graphs/contributors)
Expand Down
12 changes: 9 additions & 3 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
- 在 Vercel 重新选择并部署,[请查看详细教程](./docs/vercel-cn.md#如何新建项目)

### 打开自动更新

> 如果你遇到了 Upstream Sync 执行错误,请手动 Sync Fork 一次!
当你 fork 项目之后,由于 Github 的限制,需要手动去你 fork 后的项目的 Actions 页面启用 Workflows,并启用 Upstream Sync Action,启用之后即可开启每小时定时自动更新:
Expand Down Expand Up @@ -89,6 +90,10 @@ OpenAI 接口代理 URL,如果你手动配置了 openai 接口代理,请填

指定 OpenAI 中的组织 ID。

### `HIDE_USER_API_KEY` (可选)

如果你不想让用户自行填入 API Key,将此环境变量设置为 1 即可。

## 开发

> 强烈不建议在本地进行开发或者部署,由于一些技术原因,很难在本地配置好 OpenAI API 代理,除非你能保证可以直连 OpenAI 服务器。
Expand All @@ -106,15 +111,16 @@ OPENAI_API_KEY=<your api key here>
### 本地开发

1. 安装 nodejs 18 和 yarn,具体细节请询问 ChatGPT;
2. 执行 `yarn install && yarn dev` 即可。⚠️注意:此命令仅用于本地开发,不要用于部署!
2. 执行 `yarn install && yarn dev` 即可。⚠️ 注意:此命令仅用于本地开发,不要用于部署!
3. 如果你想本地部署,请使用 `yarn install && yarn start` 命令,你可以配合 pm2 来守护进程,防止被杀死,详情询问 ChatGPT。

## 部署

### 容器部署 (推荐)

> Docker 版本需要在 20 及其以上,否则会提示找不到镜像。
> ️注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现“存在更新”的提示,属于正常现象。
> ️ 注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现“存在更新”的提示,属于正常现象。
```shell
docker pull yidadaa/chatgpt-next-web
Expand Down Expand Up @@ -146,7 +152,7 @@ docker run -d -p 3000:3000 \
bash <(curl -s https://raw.githubusercontent.com/Yidadaa/ChatGPT-Next-Web/main/scripts/setup.sh)
```

️注意:如果你安装过程中遇到了问题,请使用 docker 部署。
️ 注意:如果你安装过程中遇到了问题,请使用 docker 部署。

## 鸣谢

Expand Down
5 changes: 2 additions & 3 deletions app/api/config/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,15 @@ const serverConfig = getServerSideConfig();
// 警告!不要在这里写入任何敏感信息!
const DANGER_CONFIG = {
needCode: serverConfig.needCode,
hideUserApiKey: serverConfig.hideUserApiKey,
};

declare global {
type DangerConfig = typeof DANGER_CONFIG;
}

export async function POST() {
return NextResponse.json({
needCode: serverConfig.needCode,
});
return NextResponse.json(DANGER_CONFIG);
}

export const runtime = "edge";
28 changes: 15 additions & 13 deletions app/components/settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -466,19 +466,21 @@ export function Settings() {
<></>
)}

<ListItem
title={Locale.Settings.Token.Title}
subTitle={Locale.Settings.Token.SubTitle}
>
<PasswordInput
value={accessStore.token}
type="text"
placeholder={Locale.Settings.Token.Placeholder}
onChange={(e) => {
accessStore.updateToken(e.currentTarget.value);
}}
/>
</ListItem>
{!accessStore.hideUserApiKey ? (
<ListItem
title={Locale.Settings.Token.Title}
subTitle={Locale.Settings.Token.SubTitle}
>
<PasswordInput
value={accessStore.token}
type="text"
placeholder={Locale.Settings.Token.Placeholder}
onChange={(e) => {
accessStore.updateToken(e.currentTarget.value);
}}
/>
</ListItem>
) : null}

<ListItem
title={Locale.Settings.Usage.Title}
Expand Down
1 change: 1 addition & 0 deletions app/components/sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ export function SideBar(props: { className?: string }) {
onClick={() => {
if (config.dontShowMaskSplashScreen) {
chatStore.newSession();
navigate(Path.Chat);
} else {
navigate(Path.NewChat);
}
Expand Down
2 changes: 2 additions & 0 deletions app/config/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ declare global {
CODE?: string;
PROXY_URL?: string;
VERCEL?: string;
HIDE_USER_API_KEY?: string; // disable user's api key input
}
}
}
Expand Down Expand Up @@ -38,5 +39,6 @@ export const getServerSideConfig = () => {
needCode: ACCESS_CODES.size > 0,
proxyUrl: process.env.PROXY_URL,
isVercel: !!process.env.VERCEL,
hideUserApiKey: !!process.env.HIDE_USER_API_KEY,
};
};
6 changes: 6 additions & 0 deletions app/store/access.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export interface AccessControlStore {
token: string;

needCode: boolean;
hideUserApiKey: boolean;
openaiUrl: string;

updateToken: (_: string) => void;
Expand All @@ -25,6 +26,7 @@ export const useAccessStore = create<AccessControlStore>()(
token: "",
accessCode: "",
needCode: true,
hideUserApiKey: false,
openaiUrl: "/api/openai/",

enabledAccessControl() {
Expand Down Expand Up @@ -55,6 +57,10 @@ export const useAccessStore = create<AccessControlStore>()(
.then((res: DangerConfig) => {
console.log("[Config] got config from server", res);
set(() => ({ ...res }));

if ((res as any).botHello) {
BOT_HELLO.content = (res as any).botHello;
}
})
.catch(() => {
console.error("[Config] failed to fetch config");
Expand Down
14 changes: 14 additions & 0 deletions next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@ const nextConfig = {
experimental: {
appDir: true,
},
async rewrites() {
const ret = [];

const apiUrl = process.env.API_URL;
if (apiUrl) {
console.log("[Next] using api url ", apiUrl);
ret.push({
source: "/api/:path*",
destination: `${apiUrl}/:path*`,
});
}

return ret;
},
webpack(config) {
config.module.rules.push({
test: /\.svg$/,
Expand Down

0 comments on commit 074bd9f

Please sign in to comment.