Giter Club home page Giter Club logo

gpt-assistants-api-ui's Introduction

gpt-assistants-api-ui

  • πŸ’¬ OpenAI Assistants API chat UI
  • πŸ› οΈ It works easily by setting the ASSISTANT IDs
  • πŸ“ Supports file upload and file download
  • πŸƒ Supports Streaming API
  • πŸ‘₯ Supports multiple Assistant profiles in one place
  • πŸͺŸ Support to Azure OpenA
    • β€» Cannot be used until Azure OpenAI Service supports Streaming API
γ‚Ήγ‚―γƒͺγƒΌγƒ³γ‚·γƒ§γƒƒγƒˆ 2023-11-20 2 23 51

🌟 Quick Start

  1. πŸ‘€ Create an assistant on the OpenAI site & Get assistant ID (https://platform.openai.com/assistants)

  2. πŸ”‘ Get the API key from OpenAI (https://platform.openai.com/api-keys)

  3. ⬇️ Clone the repository

    $ git clone https://github.com/ryo-ma/gpt-assistants-api-ui.git
  4. πŸ“¦ Install dependencies

    $ poetry install
  5. βš™οΈ 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

  6. πŸ”‘ 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

πŸƒβ€οΈ Run the app using Streamlit

$ poetry shell
$ streamlit run app.py

🐳 Run the app using Docker

  1. πŸ’½ Build image

    $ docker compose build
  2. πŸƒβ€οΈ Run the app

    $ docker compose up

Access to http://localhost:8501.

🌐 Deploy to Streamlit Cloud

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"

gpt-assistants-api-ui's People

Contributors

ryo-ma avatar resivalex avatar vietnguyengit avatar mhupfauer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.