Skip to content

Commit

Permalink
add gpt studio
Browse files Browse the repository at this point in the history
  • Loading branch information
jamiesun committed Dec 3, 2023
1 parent 4ebc9c0 commit a48aff0
Show file tree
Hide file tree
Showing 7 changed files with 228 additions and 0 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/docker-gptstudio-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: GPTStudio Build and Publish

on:
# run it on push to the default repository branch
push:
branches: [main]
# run it during pull request
pull_request:

jobs:
# define job to build and publish docker image
build-and-push-docker-image:
name: Build Docker image and push to repositories
# run only when code is compiling and tests are passing
runs-on: ubuntu-latest

# steps to perform in job
steps:
- name: Checkout code
uses: actions/checkout@v3

# setup Docker buld action
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2

- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build image and push to Docker Hub and GitHub Container Registry
uses: docker/build-push-action@v2
with:
# 指向带有 Dockerfile 的源代码所在位置的相对路径
context: ./
file: ./Dockerfile.gptstudio
# Note: tags has to be all lower-case
tags: |
talkincode/gptstudio:latest
# build on feature branches, push only on main branch
push: ${{ github.ref == 'refs/heads/main' }}

- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}
44 changes: 44 additions & 0 deletions Dockerfile.gptstudio
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
FROM condaforge/mambaforge:latest

ENV DEBIAN_FRONTEND=noninteractive

RUN echo "Asia/Shanghai" > /etc/timezone && \
ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
apt-get update && \
apt-get install -y tzdata && \
dpkg-reconfigure --frontend noninteractive tzdata


# 安装 Tesseract-OCR、Graphviz 和字体
RUN apt-get update && \
apt-get install -y \
tesseract-ocr \
tesseract-ocr-chi-sim \
graphviz \
fonts-wqy-microhei \
fonts-noto && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

# Set up a working directory
WORKDIR /

# Copy the project files to the working directory
COPY ./GPTStudio.py /GPTStudio.py
COPY ./pages /pages
COPY ./libs /libs
COPY ./requirements-gptstudio.txt /requirements.txt



# Install project dependencies
RUN pip install --no-cache-dir -r requirements.txt


# Expose the port
EXPOSE 80

ENV PYTHONUNBUFFERED=1

# Set the launch command
CMD ["streamlit","run", "/GPTStudio.py"]
88 changes: 88 additions & 0 deletions GPTStudio.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import streamlit as st


def sidebar():
st.sidebar.markdown("""
# 🦜GPTStudio
- [GPTStudio Github](https://github.com/terateams/GPTService)
- [Streamlit Website](https://streamlit.io)
""")
if st.sidebar.button('登出'):
st.session_state['authenticated'] = False
st.rerun()


def show_page():
sidebar()
st.title("🦜GPTStudio")
st.markdown("""
GPTStudio 是一个基于 GPT (Generative Pre-trained Transformer) 的工具库,旨在为开发者和数据科学家提供强大且易于使用的 GPT 功能。本工具库结合了知识库管理、GPT 测试能力,以及一个基于 AI 的工具集合,使其成为任何涉及 AI 和大模型的项目的理想选择。
## 主要特性
### 管理知识库
- **知识库上传和维护**:用户可以轻松上传和维护自己的知识库,使 GPT 模型能够访问和利用这些专门的知识。
- **知识库检索**:提供高效的检索工具,帮助用户快速找到知识库中的相关信息。
### GPT 测试
- **模型能力测试**:允许用户测试GPT模型在知识库辅助下的性能和能力。
- **实时反馈**:提供实时反馈,帮助用户了解模型的响应和准确性。
### AI 工具集合
- **广泛的 AI 工具**:包括但不限于文本生成、语言理解、数据分析等多种 AI 相关工具。
- **大模型支持**:支持与其他大型 AI 模型集成,扩展应用的能力和范围。
### 基于 Streamlit 的应用实现
- **直观的界面**:利用 Streamlit 创建的用户界面,直观易用,无需编程经验即可操作。
- **快速部署**:快速部署 AI 应用,便于展示和共享结果。
## 贡献
我们欢迎各种形式的贡献,包括但不限于新功能的建议、代码改进、文档补充等。请阅读我们的贡献指南来了解如何开始贡献。
## 许可证
GPTStudio 是在 MIT 许可证下发布的。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
---
""")


# 假设这是从数据库或环境变量中获取的用户凭据
VALID_USERNAME = "admin"
VALID_PASSWORD = "password"


def verify_credentials(username, password):
"""验证用户名和密码"""
return username == VALID_USERNAME and password == VALID_PASSWORD


def show_login_page():
"""显示登录界面"""
st.title("登录")
username = st.text_input("用户名")
password = st.text_input("密码", type='password')
if st.button('登录'):
if verify_credentials(username, password):
st.session_state['authenticated'] = True
st.success("登录成功!")
st.rerun()
else:
st.error("登录失败,请检查你的用户名和密码。")


def main():
"""主应用"""
if 'authenticated' not in st.session_state:
st.session_state['authenticated'] = False

if st.session_state['authenticated']:
show_page()
else:
show_login_page()


if __name__ == "__main__":
main()
24 changes: 24 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,32 @@ services:
networks:
gptservice_network:

gptstudio:
container_name: "gptstudio"
image: talkincode/gptstudio:latest
logging:
driver: "json-file"
options:
max-size: "50m"
environment:
- OPENAI_API_TYPE=${OPENAI_API_TYPE}
- AZURE_OPENAI_API_VERSION=${AZURE_OPENAI_API_VERSION}
- AZURE_OPENAI_API_BASE=${AZURE_OPENAI_API_BASE}
- AZURE_OPENAI_API_KEY=${AZURE_OPENAI_API_KEY}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- QDRANT_URL=${QDRANT_URL}
- DATA_DIR=/data
volumes:
- gptstudio-volume:/data
ports:
- "8898:80"
command: ["streamlit","run", "/GPTStudio.py"]
networks:
gptservice_network:

networks:
gptservice_network:

volumes:
gptservice-volume:
gptstudio-volume:
Empty file added libs/__init__.py
Empty file.
13 changes: 13 additions & 0 deletions pages/02_Knowledge_Search.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import streamlit as st

# 在其他页面
if 'authenticated' not in st.session_state or not st.session_state['authenticated']:
st.error("请先登录。")
st.stop() # 阻止未认证的用户访问页面内容

st.sidebar.markdown("# 知识库搜索")

st.title("知识库搜索")
st.subheader("搜索知识库内容")
st.divider()

13 changes: 13 additions & 0 deletions requirements-gptstudio.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
pydantic
python-dotenv
tiktoken
openai
PyMuPDF
langchain
qdrant-client
python-multipart
pytesseract
pillow
graphviz
jinja2
streamlit

0 comments on commit a48aff0

Please sign in to comment.