gpt-assistants-api-ui
- 💬 OpenAI 助手 API 聊天界面
- 🛠️ 只需设置助手 ID 即可轻松使用
- 📁 支持文件上传和文件下载
- 🏃 支持流式 API
- 👥 支持多助手资料同步管理
- 🪟 支持 Azure OpenAI
- ※ 仅在 Azure OpenAI 服务支持流式 API 时可用
🌟 快速开始
-
👤 在 OpenAI 网站上创建一个助手并获取助手 ID (https://platform.openai.com/assistants)
-
🔑 从 OpenAI 获取 API 密钥 (https://platform.openai.com/api-keys)
-
⬇️ 克隆代码库
$ git clone https://github.com/ryo-ma/gpt-assistants-api-ui.git
-
📦 安装依赖
$ poetry install
-
⚙️ 设置环境变量文件
.env
# OpenAI 设置 OPENAI_API_KEY="sk-xxx" APP_ENABLED_FILE_UPLOAD_MESSAGE="上传文件" # 设为空以禁用 AUTHENTICATION_REQUIRED="False" # 如果需要身份验证,必须改为 True # 仅使用一个助手时,设置以下内容,并取消设置 OPENAI_ASSISTANTS 变量。 ASSISTANT_ID="asst_xxx" ASSISTANT_TITLE="Assistants API UI" # 单助手标题 # 使用多个助手时,设置以下内容。 OPENAI_ASSISTANTS='[{"id": "asst_xxx", "title": "Assistants XXX UI"}, {"id": "asst_yyy", "title": "Assistants YYY UI"}]'
如果使用 Azure,请设置
AZURE_OPENAI_ENDPOINT
和AZURE_OPENAI_KEY
-
🔑 设置身份验证配置(可选)
要设置身份验证,请创建一个 secrets 文件
.streamlit/secrets.toml
,如下所示:[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" # 必须是字符串 name = "some_cookie_name"
🏃️ 使用 Streamlit 运行应用
$ poetry shell
$ streamlit run app.py
🐳 使用 Docker 运行应用
-
💽 构建镜像
$ docker compose build
-
🏃️ 运行应用
$ docker compose up
🌐 部署到 Streamlit Cloud
你可以 fork 这个代码库,并将应用部署到 https://share.streamlit.io/。无需在本地运行应用。
在部署过程中别忘了选择 Python 版本 3.10 并在“高级设置”中设置环境变量。
要在 Streamlit Cloud 上使用身份验证,请使用以下 TOML 格式:
# 环境变量
# OpenAI 设置
OPENAI_API_KEY="sk-xxx"
APP_ENABLED_FILE_UPLOAD_MESSAGE="上传文件" # 设为空以禁用
AUTHENTICATION_REQUIRED="False" # 如果需要身份验证,必须改为 True
# 仅使用一个助手时,设置以下内容,并取消设置 OPENAI_ASSISTANTS 变量。
ASSISTANT_ID="asst_xxx"
ASSISTANT_TITLE="Assistants API UI" # 单助手标题
# 使用多个助手时,设置以下内容。
OPENAI_ASSISTANTS='[{"id": "asst_xxx", "title": "Assistants XXX UI"}, {"id": "asst_yyy", "title": "Assistants YYY UI"}]'
# 身份验证秘密
[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" # 必须是字符串
name = "some_cookie_name"