35 lines
1.4 KiB
Python
35 lines
1.4 KiB
Python
|
|
import streamlit as st
|
|||
|
|
from gitdb.pack import write_stream_to_pack
|
|||
|
|
|
|||
|
|
from deepseek import get_response_stream
|
|||
|
|
# 会话管理状态:在程序执行过程中,无论代码重新运行多少次,会话状态里面的变量都会保存
|
|||
|
|
|
|||
|
|
st.title("黑马智聊机器人")
|
|||
|
|
|
|||
|
|
# st.session_state 对象,本质就是json对象字典,
|
|||
|
|
if "messages" not in st.session_state:
|
|||
|
|
st.session_state["messages"] = [{"role": "assistant", "content": "你好,我是黑马智聊机器人,有什么可以帮助你的么?"}]
|
|||
|
|
|
|||
|
|
for message in st.session_state.messages:
|
|||
|
|
with st.chat_message(message["role"]):
|
|||
|
|
st.write(message["content"])
|
|||
|
|
# 聊天输入
|
|||
|
|
user_input = st.chat_input() #你好
|
|||
|
|
|
|||
|
|
if user_input:
|
|||
|
|
#1 把用户的输入添加到会话状态里面messages中
|
|||
|
|
st.session_state.messages.append({"role": "user", "content": user_input})
|
|||
|
|
#2 在网页上渲染用户输入
|
|||
|
|
with st.chat_message("user"):
|
|||
|
|
st.write(user_input)
|
|||
|
|
#3 调用deepseek.py中的get_response方法,获取大模型的回复
|
|||
|
|
# 调用get_response_stream方法,流式获取大模型的回复
|
|||
|
|
response = get_response_stream(st.session_state.messages)
|
|||
|
|
with st.chat_message("assistant"):
|
|||
|
|
st.write_stream(response)
|
|||
|
|
|
|||
|
|
#4 把大模型的回复添加到会话状态里面messages中
|
|||
|
|
st.session_state.messages.append({"role": "assistant", "content": response})
|
|||
|
|
|
|||
|
|
|