π€ Create an assistant on the OpenAI site & Get assistant ID (https://platform.openai.com/assistants)
π Get the API key from OpenAI (https://platform.openai.com/api-keys)
β¬οΈ Clone the repository
$ git clone https://github.com/ryo-ma/gpt-assistants-api-ui.git
π¦ Install dependencies
$ poetry install
βοΈ Set environment variables file .env
# OpenAI settings
OPENAI_API_KEY="sk-xxx"
APP_ENABLED_FILE_UPLOAD_MESSAGE="Upload a file" # Leave empty to disable
AUTHENTICATION_REQUIRED="False" # Must change to True if you require authentication
# When using only one assistant, set the following, unset the OPENAI_ASSISTANTS variable.
ASSISTANT_ID="asst_xxx"
ASSISTANT_TITLE="Assistants API UI" # This is for the single agent title
# When using multiple assistants, set the following.
OPENAI_ASSISTANTS='[{"id": "asst_xxx", "title": "Assistants XXX UI"}, {"id": "asst_yyy", "title": "Assistants YYY UI"}]'
If you use azure instead, set AZURE_OPENAI_ENDPOINT
and AZURE_OPENAI_KEY
π Set Authentication configuration (optional)
To set up authentication, create a secrets file .streamlit/secrets.toml
as below:
[credentials]
usernames = { jsmith = {failed_login_attempts = 0, logged_in = false, name = "John Smith", password = "abc"}, rbriggs = {failed_login_attempts = 0, logged_in = false, name = "R Briggs", password = "abc"}}
[cookie]
expiry_days = 30
key = "some_signature_key" # Must be string
name = "some_cookie_name"
Reference: Deploying Streamlit-Authenticator via Streamlit Community Cloud
$ poetry shell
$ streamlit run app.py
π½ Build image
$ docker compose build
πβοΈ Run the app
$ docker compose up
Access to http://localhost:8501.
You can fork this repository and deploy the app to https://share.streamlit.io/. No need to run the app on your local machine.
Don't forget to choose 3.10 as the Python version and set environment variables in the "Advanced settings" during deployment.
To use authentication with Streamlit Cloud, please use this TOML format:
# Environment variables
# OpenAI settings
OPENAI_API_KEY="sk-xxx"
APP_ENABLED_FILE_UPLOAD_MESSAGE="Upload a file" # Leave empty to disable
AUTHENTICATION_REQUIRED="False" # Must change to True if you require authentication
# When using only one assistant, set the following, unset the OPENAI_ASSISTANTS variable.
ASSISTANT_ID="asst_xxx"
ASSISTANT_TITLE="Assistants API UI" # This is for the single agent title
# When using multiple assistants, set the following.
OPENAI_ASSISTANTS='[{"id": "asst_xxx", "title": "Assistants XXX UI"}, {"id": "asst_yyy", "title": "Assistants YYY UI"}]'
# Authentication secrets
[credentials]
usernames = { jsmith = {failed_login_attempts = 0, logged_in = false, name = "John Smith", password = "abc"}, rbriggs = {failed_login_attempts = 0, logged_in = false, name = "R Briggs", password = "abc"}}
[cookie]
expiry_days = 30
key = "some_signature_key" # Must be string
name = "some_cookie_name"