챗봇 개발자로 일을 하다모면 비개발자분들에게 빠르게 챗봇의 성능을 보여줘야할 때가 있다. 그럴때마다, 임시방편으로 Streamlit 이나 Gradio를 사용하여 임시로 배포를 하곤 했었는데
이번에 Streamlit Cloud 라는 서비스를 알아보니,
정말 쉽게 서버를 잘 모르더라도 할 수 있어서 공유해보고자한다.
Streamlit은 데이터 과학 및 머신 러닝 애플리케이션을 간단하게 만들기 위한 오픈 소스 파이썬 라이브러리입니다. Streamlit을 사용하면 데이터 과학자나 엔지니어가 웹 애플리케이션을 쉽게 만들고 공유할 수 있습니다.
즉, 인공지능 개발자에게 프론트 영역을 그럴싸하고 쉽게 만들어주는 오픈 소스이다.
(조코딩님 유튜브)
참고자료 : https://youtu.be/EWKbZFqiCsE?feature=shared
*주의 : gitignore 추가는 하지말고 되도록이면 기본설정으로 만드시기 바랍니다.
Uploading an existing file 클릭
파일 업로드
main.py
from openai import OpenAI
import streamlit as st
instructions = """
#봇 정보
- 너는 내담자를 위로하고 정신과 치료를 도와주는 심리상담사야
- 너는 내담자의 고민에 깊은 고민을 하고 대답해야해
- 너는 내담자의 고민에 충분히 공감해주고 적절한 해결책을 제시해줘야해
- 너의 대답은 반드시 50자 이하로 해야해
- 내담자를 부르는 호칭은 반드시 "선생님"으로 해야해
#봇 응답 예시
Q: 갑자기 우울이 밀려올 때면 나 자신이 너무 가치 없게 느껴진다.
A: 세상에 가치없는 사람은 없어요 모두 다 가치있고 소중해요 선생님도 소중한 사람이에요 그 사실을 잊지말았으면 좋겠어요
"""
st.title("고민 상담소")
client = OpenAI(api_key=st.secrets["OPENAI_API_KEY"])
st.image("Doctor.png", width=500)
if "openai_model" not in st.session_state:
st.session_state["openai_model"] = "gpt-3.5-turbo"
if "messages" not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
if prompt := st.chat_input("당신의 고민을 말씀해주세요"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
message_placeholder = st.empty()
full_response = ""
messages = [
{"role": m["role"], "content": m["content"]}
for m in st.session_state.messages
]
messages.insert(0, {"role": "system", "content": instructions})
stream = client.chat.completions.create(
model=st.session_state["openai_model"],
messages=messages,
stream=True,
)
for response in stream: # pylint: disable=not-an-iterable
full_response += response.choices[0].delta.content or ""
message_placeholder.markdown(full_response + "▌")
message_placeholder.markdown(full_response)
st.session_state.messages.append({"role": "assistant", "content": full_response})
requirements.txt
openai
streamlit
Doctor.png
업로드 완료
streamlit cloud 접속
반드시 Git 계정으로 로그인하시길 바랍니다.
New app 클릭
저장소를 방금 만들었던 저장소와 연동합니다.
Main file path 는 main.py로 바꿔줍니다.
이 부분이 가장 까다롭습니다.
Advanced settings... 을 클릭하여
파이썬은 3.11 버전으로 바꿔줍니다.
그리고 OPENAI_API_KEY 를 toml 형식으로 넣어줍니다.
여기서 toml 형식은
키이름 = "값"
형식을 의미합니다.
[Save]하고 [Deploy] 버튼을 누르면 링크가 부여되고 해당링크로 접속하면 됩니다.
이제 쉽게 외부에서 접속할 수 있는 나만의 chatGPT 웹 서비스를 streamlit cloud를 통해 빠르게 배포할 수 있습니다.