当前位置: 首页 > news >正文

使用Streamlit+Deepseek搭建AI大模型

实现代码

import streamlit as st
import os
from openai import OpenAI
from streamlit import sidebar
import datetime
import jsonst.set_page_config(page_title="AI智能大模型",page_icon="🤖",# 页面布局layout="wide",#控制侧边栏状态initial_sidebar_state="expanded",menu_items={}
)# 保存会话信息
def save_session():# 构建新的会话对象session_data = {"friend_name": st.session_state.friend_name,"friend_nature": st.session_state.friend_nature,"current_session": st.session_state.current_session,"messages": st.session_state.messages}print("保存会话信息:",st.session_state.current_session)if not os.path.exists("sessions"):os.mkdir("sessions")# 保存会话数据with open(f"sessions/{st.session_state.current_session}.json", "w", encoding="utf-8") as f:json.dump(session_data, f, ensure_ascii=False, indent=2)# 加载所有的会话信息
def load_sessions():session_list = []# 加载sessions目录下的所有会话信息if os.path.exists("sessions"):file_list = os.listdir("sessions")for filename in file_list:if filename.endswith(".json"):session_list.append(filename[:-5])session_list.sort(reverse=True)return session_list# 加载指定会话信息
def load_session(session_name):try:if os.path.exists(f"sessions/{session_name}.json"):print("session:"+session_name)# 读取会话数据with open(f"sessions/{session_name}.json","r",encoding="utf-8") as f:session_data = json.load(f)st.session_state.messages = session_data["messages"]st.session_state.friend_name = session_name["friend_name"]st.session_state.friend_nature = session_data["friend_nature"]st.session_state.current_session = session_nameexcept Exception:st.error("加载会话失败!")# 删除指定会话信息
def delete_session(session_name):try:if os.path.exists(f"sessions/{session_name}.json"):os.remove(f"sessions/{session_name}.json")# 如果删除的是当前会话,则更新当前会话列表展示if session_name == st.session_state.current_session:st.session_state.messages = []st.session_state.current_session = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")except Exception:st.error("删除会话失败!")# 大标题
st.title("AI智能大模型")# 调用AI大模型
client = OpenAI(api_key=os.environ.get('DEEPSEEK_API_KEY'),base_url="https://api.deepseek.com")# 系统提示词
system_prompt = ("你是%s,你是用户的真实朋友,请完全代入朋友角色""朋友性格:%s")# 初始化聊天信息
if "messages" not in st.session_state:st.session_state.messages = []if "friend_name" not in st.session_state:st.session_state.friend_name = "天天"if "friend_nature" not in st.session_state:st.session_state.friend_nature = "活泼开朗热情的河北姑娘"# 会话标识
if "current_session" not in st.session_state:now = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")st.session_state.current_session = nowst.text(f"会话名称:{st.session_state.current_session}")
# 展示聊天信息
for message in st.session_state.messages:st.chat_message(message["role"]).write(message["content"])# 左侧侧边栏
with sidebar:# 会话信息管理st.subheader("AI控制面板")# 新建会话if st.button("新建会话",width="stretch",icon="🖋"):# 1、保存当前会话信息if st.session_state.current_session:save_session()# 2、创建新的会话if st.session_state.messages:st.session_state.messages = []st.session_state.current_session = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")save_session()st.rerun()# 会话历史st.text("会话历史")session_list = load_sessions()for session in session_list:col1,col2 = st.columns([4,1])with col1:# 加载会话信息if st.button(session, width="stretch", icon="📄",key=f"load_{session}", type="primary" if session == st.session_state.current_session else "secondary"):st.session_state.current_session = sessionload_session(session)st.rerun()with col2:# 删除会话信息if st.button("",width="stretch",icon="❌",key=f"delete_{session}"):delete_session(session)st.rerun()# 分割线st.divider()st.subheader("朋友信息")friend_name = st.text_input("昵称",placeholder="请输入朋友的昵称",value=st.session_state.friend_name)if friend_name:st.session_state.friend_name = friend_namefriend_nature = st.text_input("性格",placeholder="请输入朋友的性格",value=st.session_state.friend_nature)if friend_nature:st.session_state.friend_nature = friend_nature# 消息输入框
prompt = st.chat_input("请输入您要问的问题")
if prompt:st.chat_message("user").write(prompt)print("调用AI大模型发送的提示词")# 保存用户输入的提示词st.session_state.messages.append({"role": "user", "content": prompt})# 调用AI模型,与其交互response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "system", "content": system_prompt%(st.session_state.friend_name, st.session_state.friend_nature)},# 会话记忆的实现*st.session_state.messages],stream=True)# 流式输出的结果解析方式response_message = st.empty() # 创建一个空的组件,用于展示大模型返回的结果full_response = ""for chunk in response:if chunk.choices[0].delta.content is not None:content = chunk.choices[0].delta.contentfull_response += contentresponse_message.chat_message("assistant").write(full_response)# 保存大模型返回的提示词st.session_state.messages.append({"role": "assistant", "content": full_response})# 保存会话信息save_session()

实现效果

image

image

左侧侧边栏可以设置AI的角色,灵活性较强

http://www.jsqmd.com/news/445960/

相关文章:

  • FLUX.1金融科技:数据可视化图表生成方案
  • 2026年探讨选代理记账公司哪家优,杭州靠谱之选大揭秘 - myqiye
  • 2026 企业智能 BI 本地私有化部署实力厂商盘点:企业知识库方案商、Deepseek 服务商、AI 知识资产中枢服务商全包含 - 品牌2026
  • LongCat-Image-Editn部署教程:星图平台资源弹性伸缩配置应对流量高峰
  • 2026 年企业知识库部署核心厂商推荐:AI 知识库方案商、Deepseek 部署服务商、智能 BI 私有化本地部署厂商全覆盖 - 品牌2026
  • 2026黑龙江地区好用的变速箱异响维修厂推荐,团队专业很靠谱 - 工业推荐榜
  • 靠谱的AI推广专业公司推荐,苏州蓝戈链企能解决合规风险吗? - 工业品网
  • 为什么提示"Fatal error: Unable to read *** bytes"?
  • 2026 企业知识资产建设核心服务商推荐:企业知识库、AI 知识库、Deepseek 部署、智能 BI 私有化本地部署厂商全涵盖 - 品牌2026
  • OFA-iic/ofa_visual-entailment_snli-ve_large_en部署教程:模型缓存路径自定义配置
  • 2026上海宠物口腔服务升级,靠谱医生就在身边,猫咪牙结石/牙科专科/狗狗牙结石/猫咪口炎,宠物口腔医生排名前十 - 品牌推荐师
  • 聊聊2026年高品质P84除尘滤袋的选购要点与靠谱厂家 - 工业品牌热点
  • 2026年上海徐汇区靠谱家政公司排名,美臣国际家政值得推荐 - mypinpai
  • MathType公式转LaTeX:通义千问1.5-1.8B模型实现格式转换与校对
  • MogFace-large部署指南:ARM64架构(如Mac M2)原生支持部署方案
  • 帝国cms后台登录无法显示验证码EmpireCMS
  • NEURAL MASK 用于PS插件开发:扩展Photoshop的AI功能
  • 2026年选航天洁净室工程公司看洁净室净化车间厂家排名怎么选 - myqiye
  • 2026年成都地区价格合理的环保板材生产厂推荐与选购指南 - 工业推荐榜
  • 2026门窗品牌性价比排名,博雅敏格门窗规模大不大环保性能达标不 - 工业设备
  • .NET 开发 MCP 服务器完全指南:打造智能数据库查询助手 - 详解
  • 2026电动调节阀批发攻略:优质厂家一览,自力式调节阀/自力式压力调节阀/气动调节阀/电动调节阀,电动调节阀制造企业排行 - 品牌推荐师
  • 2026年北京新能源换电加盟企业推荐哪家比较好 - 工业品牌热点
  • 说说山西断桥铝门窗靠谱供应商,老战友门窗值得选吗? - 工业品网
  • 2026年裁断机选购指南,推荐江西等地口碑好的靠谱厂家 - mypinpai
  • 分析2026年常州绍鼎密封科技有限公司口碑,选哪家好 - 工业设备
  • 探讨好用的跨境电商税务咨询企业如何选择 - myqiye
  • mmyolo与官方yolo,在背景数据集上的注意事项
  • 帝国cms为什么生成后的页面都是空白内容?EmpireCMS
  • 2026年德阳口碑好的塑钢门窗型材材料生产厂排名,售后好厂家揭秘 - 工业推荐榜