프론트앤드
- 사용자에게 입력을 받아 백앤드에 요청사항을 보내고 리턴된 응답값을 사용자에게 보여줌
- 개발방안 : 파이썬의 streamlit 라이브러리를 사용
app실행 명령어 : streamlit run [파일명]
import streamlit as st
from streamlit_chat import message
import requests
if 'messages' not in st.session_state:
st.session_state['messages'] = []
# [{"role": "user", "content": "blahblahblah"},
# {"role": "assistant", "content": "blahblahblah"}, ...]
chat_url = "http://localhost:8000/chat"
def chat(text):
user_turn = {"role": "user", "content": text}
messages = st.session_state['messages']
resp = requests.post(chat_url, json={"messages": messages + [user_turn]})
assistant_turn = resp.json()
st.session_state['messages'].append(user_turn)
st.session_state['messages'].append(assistant_turn)
st.title("챗봇 서비스")
row1 = st.container()
row2 = st.container()
with row2:
input_text = st.text_input("You")
if input_text:
chat(input_text)
with row1:
for i, msg_obj in enumerate(st.session_state['messages']):
msg = msg_obj['content']
is_user = False
if i % 2 == 0:
is_user = True
message(msg, is_user=is_user, key=f"chat_{i}")
반응형