47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import time
|
|
|
|
import streamlit as st
|
|
from agent.react_agent import ReactAgent
|
|
|
|
st.title("智扫通智能机器人客服")
|
|
st.divider()
|
|
|
|
if "agent" not in st.session_state:
|
|
st.session_state["agent"] = ReactAgent()
|
|
|
|
if "message" not in st.session_state:
|
|
st.session_state["message"] = []
|
|
|
|
history = st.session_state["message"]
|
|
agent = st.session_state["agent"]
|
|
|
|
for message in history:
|
|
st.chat_message(message["role"]).write(message["content"])
|
|
|
|
# 要求用胡输入提示词
|
|
prompt = st.chat_input()
|
|
|
|
if prompt:
|
|
st.chat_message("user").write(prompt)
|
|
history.append({"role": "user", "content": prompt})
|
|
|
|
response_messages = []
|
|
with st.spinner("思考中"):
|
|
stream = agent.excute_stream(prompt)
|
|
|
|
def capture(generator, cache_list):
|
|
for chunk in generator:
|
|
cache_list.append(chunk)
|
|
for char in chunk:
|
|
time.sleep(0.05)
|
|
yield char
|
|
|
|
|
|
st.chat_message("assistant").write_stream(
|
|
capture(stream, response_messages)
|
|
)
|
|
history.append({"role": "assistant", "content": response_messages[-1]})
|
|
st.rerun()
|
|
|
|
|