



























1 import streamlit as st 2 import os 3 from zhipuai import ZhipuAI 4 5 st.set_page_config( 6 page_title="AI智能伴侣", 7 layout="wide", 8 initial_sidebar_state="expanded", 9 menu_items={}, 10 page_icon="🤖" 11 ) 12 key=os.environ.get("ZHIPUAI_API_KEY") 13 if not key: 14 print("未找到key") 15 st.stop() 16 17 18 client=ZhipuAI(api_key=key) 19 st.title("AI智能伴侣") 20 def_personality="一个性格开朗大方的东北妹子。" 21 if "message_list" not in st.session_state: 22 #st.session_state["message_list"] = [] 23 st.session_state.message_list = [] 24 if "nick_name" not in st.session_state: 25 #st.session_state["nick_name"] = "小美" 26 st.session_state.nick_name = "小美" 27 if "personality" not in st.session_state: 28 #st.session_state["personality"] = "一个性格开朗大方的东北妹子。" 29 st.session_state.personality =def_personality 30 31 with st.sidebar: 32 st.sidebar.title("AI伴侣控制面板") 33 nick_name=st.sidebar.text_input("昵称:",value=st.session_state.nick_name) 34 personality=st.sidebar.text_area("性格:",value=st.session_state.personality) 35 if nick_name: 36 st.session_state.nick_name= nick_name 37 if personality: 38 st.session_state.personality = personality 39 40 41 #由于每次执行streamlit都会刷新页面,所以在这里将历史对话都输出来 42 for message in st.session_state.message_list: 43 st.chat_message(message["role"]).write(f" {message['content']}") 44 45 46 role_prompt=f"你叫{st.session_state.nick_name},{st.session_state.personality}" 47 prompt = st.chat_input("说点什么呢?") 48 if prompt: 49 st.chat_message("user").write(f" {prompt}") 50 st.session_state["message_list"].append({"role":"user","content":f"{prompt}"}) 51 response=client.chat.completions.create( 52 model="glm-4.6v", 53 messages=[ 54 {"role":"system","content":role_prompt}, 55 #解包列表中的元素,滚雪球式将历史消息按顺序一起发送,解决AI记忆问题。 56 *st.session_state["message_list"] 57 ], 58 stream=True 59 ) 60 #流式输出大模型返回的结果 61 msg_container=st.empty() 62 full_content = "" 63 for chunk in response: 64 if chunk.choices[0].delta.reasoning_content is not None: 65 content=chunk.choices[0].delta.reasoning_content 66 full_content+=content 67 msg_container.chat_message("assistant").write(full_content) 68 if chunk.choices[0].delta.content is not None: 69 content = chunk.choices[0].delta.content 70 full_content += content 71 msg_container.chat_message("assistant").write(full_content) 72 st.session_state["message_list"].append({"role":"assistant","content":f"{full_content}"})
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。