with open("resources/user.txt","w",encoding="utf-8") as f:
json.dump(user,f,ensure_ascii=False,indent=2)
效果如下
复制代码
会话管理:
首先就是 st.subheader("AI控制面板")
而新建会话这个按钮怎么办 st.button
保存当前会话信息
复制代码
if st.session_state.current_session:
# 构建容器
session_date = {
"current_session": st.session_state.current_session,
"nick_name": st.session_state.nick_name,
"character": st.session_state.character,
"messages": st.session_state.messages
}
# 创建一个session 目录不存在则创建
if not os.path.exists("session"):
os.mkdir("session")
# 保存会话数据
with open(f"session/{st.session_state.current_session}.json", "w", encoding="utf-8") as f:
json.dump(session_date, f, ensure_ascii=False, indent=2)
序列化的前提是Python数据类型,最基本的就是字典,列表之类的
然后严谨一点,如果没有这个文件我们就创建一下,为了避免名字重复我们应该可以是使用时间名字
复制代码
if "current_session" not in st.session_state:
st.session_state.current_session = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
可以是一时间为名字,strfitime是指定的格式
复制代码
if st.button("😃新建会话",width="stretch"):
#保存当前会话信息
save_session() 这个函数就是上面那段
st.button 如果点击,返回的是True,否则就False
创建一个新的会话
创建一个新的会话,我们每次点击一下,就会保存会话,然后就是
复制代码
if st.button("😃新建会话",width="stretch"):
#保存当前会话信息
save_session()
# 2.创建新的会话
st.session_state.messages=[]
st.session_state.current_session=generate_session_id()
save_session()
# 加载所有会话列表信息
def load_session():
session_list = []
if os.path.exists("session"):
for filename in os.listdir("session"): listdir 是查看这个目录下所有的文件
if filename.endswith(".json"): 我们找到的是以json为末尾的文件
session_list.append(filename[:-5])
return session_list
复制代码
#会话历史
st.text("会话历史")
session_list = load_session()
for session in session_list:
col1,col2=st.columns([4,1])
with col1:
#加载会话信息
if st.button(session,icon="😃"):
pass
with col2:
if st.button("",icon="❌",key=f"delete_{session}"):
pass