728x90
반응형
Python Streamlit을 통해서 간단한 ChatGPT Web App 만들어보기
우선, Streamlit 이란?
- https://docs.streamlit.io/
- streamlit는 주로 데이터 사이언스, 머신 러닝 등에서 사용되는 커스터 마이징 가능한 간단하고 쉽게 웹앱을 만들어주는 오픈 소스이다.
사용할 ChatGPT SDK, Reverse Engineered ChatGPT API
revChatGPT repo는 abandod or deprecated 되었습니다.
python OpenAI sdk 사용을 권장 합니다.
Python 패키지 설치
pip install revChatGPT
pip install streamlit
chatgpt_with_streamlit.py 생성 및 실행
- streamlit run chatgpt_with_streamlit.py
import random
import streamlit
from streamlit.commands.page_config import RANDOM_EMOJIS
streamlit.set_page_config(page_title="Raynor ChatGPT", page_icon=random.choice(RANDOM_EMOJIS), menu_items={})
streamlit.title("Demo ChatGPT with Streamlit")
streamlit.sidebar.header("Chatting")
streamlit.sidebar.info("Chat")
def app_main():
user_query = streamlit.text_input("Enter").strip()
app_main()
reversed ChatGPT SDK 연동
- API 인증은 https://github.com/acheong08/ChatGPT 여러 가지 방법에 대해서 제시해주고 있다.
- access_tokne 인증을 선택해서 진행, 현재 계정 Token 가져오기 https://chat.openai.com/api/auth/session
import logging
import random
import streamlit
from revChatGPT.V1 import Chatbot
from streamlit.commands.page_config import RANDOM_EMOJIS
streamlit.set_page_config(page_title="Raynor ChatGPT", page_icon=random.choice(RANDOM_EMOJIS), menu_items={})
streamlit.title("Demo ChatGPT with Streamlit")
streamlit.sidebar.header("Chatting")
streamlit.sidebar.info("Chat")
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
element = streamlit.empty()
# https://chat.openai.com/api/auth/session
def request_to_rev_openai(query):
chatbot = Chatbot(config={
"access_token": "token"
})
prev_text = ""
for data in chatbot.ask(prompt=query):
prev_text = data["message"]
element.write(prev_text, unsafe_allow_html=True)
def app_main():
user_query = streamlit.text_input("Enter").strip()
if user_query is not None and user_query and user_query != "":
request_to_rev_openai(user_query)
app_main()
728x90
반응형
'Python > Open Source' 카테고리의 다른 글
[Python] 파이썬 출력 문자 색 변경하기 (0) | 2023.04.04 |
---|---|
[Locust] 2. Locust를 통한 언어와 프레임워크 별 테스트 (0) | 2023.03.15 |
[Locust] 1. Locust 부하 테스트 툴(load testing tool) (0) | 2023.03.15 |
[Python] Colorful print (0) | 2021.08.12 |
[Python 오픈소스] Diagrams (0) | 2021.01.13 |