Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/GPTGenius/chatgpt-vercel

Create a private ChatGPT website with one-click for free using Vercel -- 通过 Vercel 一键免费创建私有的 ChatGPT 站点
https://github.com/GPTGenius/chatgpt-vercel

chatgpt chatgpt-app chatgpt3 chatgpt4 midjourney openai vercel vercel-deployment

Last synced: 24 days ago
JSON representation

Create a private ChatGPT website with one-click for free using Vercel -- 通过 Vercel 一键免费创建私有的 ChatGPT 站点

Awesome Lists containing this project

README

        

![](assets/preview.png)

ChatGPT-Vercel



GitHub tag (latest by date)

node-current (scoped)

license

English | [简体中文](./README.zh-CN.md)

## Introduction
Create a private ChatGPT website with one-click for free using Vercel, support muti **text** / **images generation** conversations. Powered by OpenAI API GPT-4/3.5 and Vercel.

## Features
- ⚡ Deploy quickly and for free using Vercel
- 💬 Text conversation with the ability to switch models and set context length
- 🎨 Image generation conversation supports the `DALL-E` and `Midjourney` models. It also allows for the adjustment of image size and count.
- 🌈 Multiple preset prompts added to customize AI behavior
- 🌏 Switch between various languages, currently supporting Simplified Chinese and English
- 💭 Local chat history saved with search, import and export functionality

## Live Demo
- [chatgpt-vercel-sample](https://chatgpt-vercel-sample.vercel.app/)
- [chatgpt-vercel-zh-sample](https://chatgpt-vercel-zh-sample.vercel.app/)

## User Guide
You can access the online demo above or deploy it privately for experience.

### Conversation
Click the icon at the top left to add a conversation, which has two types:
- Text conversation:
- The model is switchable, [supported models](https://platform.openai.com/docs/models/model-endpoint-compatibility)
- By default, it is a continuous conversation, and each sending will carry part of context.
- Supports adding preset prompts, type `/` or click the button at the bottom left to add.
- Supports model configuration, click the settings icon at the top right to configure.
- Image generation conversation:
- The model is switchable, supports the OpenAI `DALL·E` model and `Midjourney`
- Does not support continuous conversation, and each sending will not carry the context.
- Directly input the image effect you want, for example: `a cat`.
- For model `DALL-E`, expend `OpenAI` tokens. The effective access time for the image link is `2` hours. Please make sure to save it in time if necessary.
- For model `Midjourney`, depending on the `Discord` configurations, image generation may take a while, with a default timeout of `5` minutes. Please be patient and wait.

### History record
When `Save all conversations` is enabled in the global settings, it will be saved to local cache. By default, it will not be saved.

### Operation
- Press `Enter` to send
- Press `Shift`+`Enter` to line break
- Enter `/` to add preset prompts, and searching is also supported.

### All settings
see [Configurations](#Configurations)

## Getting Started

### 1. Create Project
Create Vercel project from a github forked project(recommand) or the following **Deploy** button.

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/GPTGenius/chatgpt-vercel&env=OPENAI_API_KEY)

### 2. Set OPENAI_API_KEY
There are three ways to set your OpenAI API Key:
- Set Vercel Environment Variables **OPENAI_API_KEY**
- Rename your `.env.expample` file to `.env` and set **OPENAI_API_KEY**
- Set **OPENAI_API_KEY** within the page

> Attention: For Vercel, all environment variables need to be redeployed to take effect.

### 3. Set Midjourney (optional)
If you want to use the AI drawing feature of `Midjourney`, you can configure the relevant `Discord` settings , including the following fields:
- `DISCORD_SERVER_ID`
- `DISCORD_CHANNEL_ID`
- `DISCORD_TOKEN`

How to get ids and token:
- [How to find ids](https://docs.statbot.net/docs/faq/general/how-find-id/)
- [Get discord token](https://www.androidauthority.com/get-discord-token-3149920/)

You can visit [midjourney-cookbook](https://gptgenius.github.io/midjourney-cookbook/) to get some samples about `Midjourney` prompts.

### 4. Keep code synchronized (optional)
see [Sync Fork](docs/sync.md)

## Other deployment methods
Run `pnpm build` and `pnpm run server`. Refer: [astro-node](https://docs.astro.build/en/guides/integrations-guide/node/#standalone)

## Configurations
### Deployment Configurations
All deployment configurations could be configured in the `.env` file or in **Environment Variables** of Vercel

| Configuration | Default Value | Description |
| ------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| PASSWORD | - | Website access password |
| OPENAI_API_KEY | - | Key for API request, multiple keys are supported, separated by commas, [how to generate](https://platform.openai.com/account/api-keys)|
| LANGUAGE | en | The default language of the website, including prompts. Supported languages: **zh**/**en** |
| API_KEY_STRATEGY | random | The scheduling strategy mode for multiple keys: **polling**/**random** |
| OPENAI_API_BASE_URL | api.openai.com | The default address of the requested api |
| DISCORD_SERVER_ID | - | Discord server id |
| DISCORD_CHANNEL_ID | - | Discord channel id |
| DISCORD_TOKEN | - | Discord token |
| DISCORD_IMAGE_PROXY | - | Discord image proxy url |

### Global Configurations
All global configurations will be stored locally

| Configuration | Default Value | Description |
| ------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------- |
| OpenAI Api Key | - | Only a single key is supported. If it is configured on the page, the key in the environment variable will not be used |
| Language | en | The language of the website, including prompts. Supported languages: **zh**/**en** |
| Save all conversations | true | The conversation won't be lost after the page is refreshed |
| Temperature | 1 | The larger the value, the more random the answer, with a range of 0-2 |
| Text Conversation Model | gpt-3.5-turbo | Model used in api request, [supported models](https://platform.openai.com/docs/models/model-endpoint-compatibility) |
| Continuous conversations | true | Carry the context for the conversations |
| Number of historical messages carried | 4 | For continuous conversations, the number of historical messages carried |
| Image Generation Conversation Model | DALL-E | Supported models: **DALL-E** / **Midjourney** / **Replicate** |
| Number of generated images | 1 | The number of images generated in a single image generation conversation |
| Size of generated images | 256x256 | The size of a single image in image generation conversation |
| Discord Server Id | - | If it is configured on the page, the key in the environment variable will not be used |
| Discord Channel Id | - | Ditto |
| Discord Token | - | Ditto |

## Planned Features
- [ ] Export functionality to export as markdown and images
- [ ] Theme color switching support, currently defaulting to gradient purple
- [ ] Audio conversation support
- [x] Image generation using other models

These are some of the planned features to be developed. Collaborations are welcome, and feel free to suggest other ideas by submitting issues.

## Development
Requirements:
- **NodeJS** `v18` or higher
- **pnpm** `v7` or higher

Proxy
- By default, a custom proxy is used to request openapi locally, and `LOCAL_PROXY` needs to be set in `.env`. There is currently no default proxy, so if you choose to set up a proxy, you assume the associated risks.
- If there is no need for a proxy, you can disable local proxy by setting `DISABLE_LOCAL_PROXY=true` in the `.env` file. At this point, `api.openai.com` will be directly requested.

Development:
- Run `pnpm dev`
- Expose port, for example, when using in cloud ide, run `pnpm start`

Build:
- Run `pnpm build`

## Contribution
Any contributions are highly appreciated. Here are some tips:
- To improve the translation or add a new language, modify the `lang` directory. If adding a new language, you will also need to modify `src/utils/i18n.ts`.
- To improve or add new preset prompts, modify the `prompts` directory.
- To optimize the API, modify the `src/pages/api` directory.
- To optimize page interactions, modify the `src/modules` directory.
- For new feature support, please open an issue directly.

## Credits
- English prompts are modified from [awesome-chatgpt-prompts](https://github.com/f/awesome-chatgpt-prompts)
- Chinese prompts are modified from [awesome-chatgpt-prompts-zh](https://github.com/PlexPt/awesome-chatgpt-prompts-zh)

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=GPTGenius/chatgpt-vercel&type=Date)](https://star-history.com/#GPTGenius/chatgpt-vercel&Date)

## License
Based on [MIT License](./LICENSE)