-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
52 lines (33 loc) · 1.14 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import streamlit as st
from streamlit_chat import message
import requests
from langchain.callbacks.base import BaseCallbackHandler
if "msg" not in st.session_state:
st.session_state["msg"] = []
url = "http://localhost:8000/chatbot"
def chat_bot(text):
user_turn = {"msg": text}
msg = st.session_state["msg"]
resp = requests.post(url, json=user_turn)
assistant_turn = resp.json()
st.session_state["msg"].append(user_turn)
st.session_state["msg"].append(assistant_turn)
st.title("Hybrid Chatbot")
row1 = st.container()
row2 = st.container()
class StreamHandler(BaseCallbackHandler):
def __init__(self, container, initial_text=""):
self.container = container
self.text=initial_text
def on_llm_new_token(self, token: str, **kwargs) -> None:
self.text+=token
self.container.markdown(self.text)
input_text = st.chat_input("입력해주세요")
if input_text:
chat_bot(text = input_text)
for i, msg_obj in enumerate(st.session_state["msg"]):
msg = msg_obj["msg"]
is_user = False
if i % 2 == 0:
is_user = True
message(msg, is_user=is_user, key=f"chat_{i}")