ChatGPT UI

[English](./README.md) | [ไธญๆ–‡](./docs/zh/README.md) A ChatGPT web client that supports multiple users, multiple database connections for persistent data storage, supports i18n. Provides Docker images and quick deployment scripts. https://user-images.githubusercontent.com/46235412/227156264-ca17ab17-999b-414f-ab06-3f75b5235bfe.mp4 ## ๐Ÿ“ขUpdates
2023-03-27 ๐Ÿš€ Support gpt-4 model. You can select the model in the "Model Parameters" of the front-end. The GPT-4 model requires whitelist access from OpenAI.
2023-03-23 Added web search capability to generate more relevant and up-to-date answers from ChatGPT! This feature is off by default, you can turn it on in `Chat->Settings` in the admin panel, there is a record `open_web_search` in Settings, set its value to True.
2023-03-15 Add "open_registration" setting option in the admin panel to control whether user registration is enabled. You can log in to the admin panel and find this setting option under `Chat->Setting`. The default value of this setting is `True` (allow user registration). If you do not need it, please change it to `False`.
2023-03-04 **Update to the latest official chat model** `gpt-3.5-turbo` **๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰Provide a shell script that can be used to quickly deploy the service to server** [Quick start](#one-click-depolyment)
2023-02-24 Version 2 is a major update that separates the backend functionality as an independent project, hosted at [chatgpt-ui-server](https://github.com/WongSaang/chatgpt-ui-server). If you still wish to use the old version, please visit the [v1 branch](https://github.com/WongSaang/chatgpt-ui/tree/v1).
## Version 2 introduces the following new features: - ๐Ÿ˜‰ Separation of the frontend and backend, with the backend now using the Python-based Django framework. - ๐Ÿ˜˜ User authentication, supporting multiple users. - ๐Ÿ˜€ Ability to store data in an external database (defaulting to Sqlite). - ๐Ÿ˜Ž Session persistence, allowing the API to answer questions based on your context. ## ๐Ÿš€ One-click deployment Note: This script has only been tested on Ubuntu Server 22.04 LTS. ```bash bash <(curl -Ls https://raw.githubusercontent.com/WongSaang/chatgpt-ui/main/deployment.sh) ``` > If you have a domain name, you can point it to the server's IP address using DNS resolution. Of course, using the server's IP address directly is also possible. > During the script's execution, you will be prompted to enter a domain name. If you do not have a domain name, you can enter the server's IP address directly. ### After the deployment is complete Access `http(s)://your.domain:9000/admin` / IP `http(s)://123.123.123.123:9000/admin` to log in to the administration panel. Default superuser: `admin` Default password: `password` Before you can start chatting, you need to add an OpenAI API key. In the Settings model, add a record with the name `openai_api_key` and the value as your API key. Now you can access the web client at `http(s)://your.domain` or `http://123.123.123.123` to start chatting. ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰ Enjoy it! ## Quick start with Docker Compose ### Run services Below is a docker-compose.yml template: ```yaml version: '3' services: client: image: wongsaang/chatgpt-ui-client:latest environment: - SERVER_DOMAIN=http://backend-web-server depends_on: - backend-web-server ports: - '80:80' networks: - chatgpt_ui_network backend-wsgi-server: image: wongsaang/chatgpt-ui-wsgi-server:latest environment: - APP_DOMAIN=${APP_DOMAIN:-localhost:9000} # CSRF whitelist๏ผŒAdd the address of your chatgpt-ui-web-server here, default is localhost:9000 - SERVER_WORKERS=3 # Number of gunicorn workers, default is 3 #- DB_URL=postgres://postgres:postgrespw@localhost:49153/chatgpt # If this parameter is not set, the built-in Sqlite will be used by default. It should be noted that if you do not connect to an external database, the data will be lost after the container is destroyed. #- OPENAI_API_PROXY=https://openai.proxy.com/v1 # Proxy for https://api.openai.com/v1 - DJANGO_SUPERUSER_USERNAME=admin # default superuser name - DJANGO_SUPERUSER_PASSWORD=password # default superuser password - DJANGO_SUPERUSER_EMAIL=admin@example.com # default superuser email - ACCOUNT_EMAIL_VERIFICATION=none # Determines the e-mail verification method during signup โ€“ choose one of "none", "optional", or "mandatory". Default is "optional". If you don't need to verify the email, you can set it to "none". # If you want to use the email verification function, you need to configure the following parameters # - EMAIL_HOST=SMTP server address # - EMAIL_PORT=SMTP server port # - EMAIL_HOST_USER= # - EMAIL_HOST_PASSWORD= # - EMAIL_USE_TLS=True # - EMAIL_FROM=no-reply@example.com #Default sender email address ports: - '8000:8000' networks: - chatgpt_ui_network backend-web-server: image: wongsaang/chatgpt-ui-web-server:latest environment: - BACKEND_URL=http://backend-wsgi-server:8000 ports: - '9000:80' depends_on: - backend-wsgi-server networks: - chatgpt_ui_network networks: chatgpt_ui_network: driver: bridge ``` ### DB_URL schema | Engine | URL | |----------------------|--------------------------------------------------| | PostgreSQL | ``postgres://USER:PASSWORD@HOST:PORT/NAME`` | | MySQL | ``mysql://USER:PASSWORD@HOST:PORT/NAME`` | | SQLite | ``sqlite:///PATH`` | ### Set API key Access `http(s)://your.domain:9000/admin` / IP `http(s)://123.123.123.123:9000/admin` to log in to the administration panel. Default superuser: `admin` Default password: `password` Before you can start chatting, you need to add an OpenAI API key. In the Settings model, add a record with the name `openai_api_key` and the value as your API key. Now you can access the web client at `http(s)://your.domain` or `http://123.123.123.123` to start chatting. ## Donation > If it is helpful to you, it is also helping me. If you want to support me, Buy me a coffee โค๏ธ [https://www.buymeacoffee.com/WongSaang](https://www.buymeacoffee.com/WongSaang)

## Development ### Setup Make sure to install the dependencies: ```bash # yarn yarn install ``` ### Development Server Start the development server on http://localhost:3000 ```bash yarn dev ``` ### Production Build the application for production: ```bash yarn build ```