|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import streamlit as st |
|
from streamlit_chat import message |
|
|
|
|
|
def reply(input, history=None, reply_func=lambda input: f'{input}的答案', max_turns=3, container=None): |
|
if history is None: |
|
history = [] |
|
|
|
if container is None: |
|
container = st.container() |
|
|
|
with container: |
|
if len(history) > 0: |
|
for i, (query, response) in enumerate(history[-max_turns + 1:]): |
|
message(query, avatar_style="big-smile", is_user=True, key=str(i) + "_user") |
|
message(response, avatar_style="bottts", is_user=False, key=str(i)) |
|
|
|
message(input, avatar_style="big-smile", is_user=True, key=str(len(history)) + "_user") |
|
|
|
with st.empty(): |
|
response = reply_func(input) |
|
message(response, avatar_style="bottts", is_user=False) |
|
|
|
history.append((input, response)) |
|
return history |
|
|
|
|
|
if __name__ == '__main__': |
|
def display_previous_message(texts=None): |
|
if texts: |
|
for msg in texts: |
|
message(msg, avatar_style="bottts") |
|
|
|
|
|
display_previous_message(["你好!我是你的电影小助手,很高兴为您服务。", "你可以向我提问。"]) |
|
|
|
container = st.container() |
|
text = st.text_area(label="用户输入", height=100, placeholder="请在这儿输入您的问题") |
|
|
|
if st.button("发送", key="predict"): |
|
with st.spinner("AI正在思考,请稍等........"): |
|
history = st.session_state.get('state') |
|
st.session_state["state"] = reply(text, history, container=container) |
|
print(st.session_state['state']) |
|
|