基于DeepSeek的Api本地部署聊天助手
·
陈牧函
核心功能总结
基于 Streamlit 框架开发了一个网页版 AI 聊天应用,命名为“WEP_AI助手”,核心功能是对接 DeepSeek 大模型(通过 OpenAI 兼容的 API),实现用户与 AI 的实时对话,并持久化保存单次会话内的聊天历史。
一.整体代码呈现
import sys
from platform import system
import streamlit as st
import os
from openai import OpenAI
st.set_page_config(
page_title="WEP_AI助手",
page_icon=".venv/web/yonngxuan/c77b2ddaf0eb023c3fcbf4bf000b746a.jpg",
layout="wide",
initial_sidebar_state="expanded",
menu_items={
'About': "@古方路杰出青年 2026"
}
)
st.title("WEP_AI助手")
st.subheader("@古方路杰出青年")
st.logo(".venv/web/yonngxuan/c77b2ddaf0eb023c3fcbf4bf000b746a.jpg")
import streamlit as st
system_prompt = """
You are a helpful assistant.
"""
prompt=st.chat_input("请说点什么吧")
#初始化聊天消息
if 'messages' not in st.session_state:
st.session_state.messages = []
#展示聊天消息
for message in st.session_state.messages:
if message["role"] == "user":
st.chat_message("user").write(message["content"])
else:
st.chat_message("assistant").write(message["content"])
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com")
if prompt:
st.chat_message("user").write(prompt)
st.write("WEP_AI正在思考中...")
# 保存用户提示词
st.session_state.messages.append({"role": "user", "content": prompt})
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": system_prompt},
*st.session_state.messages
],
stream=False
)
st.chat_message("assistant").write(response.choices[0].message.content)
st.session_state.messages.append({"role": "assistant", "content": response.choices[0].message.content})
# 打印调用大模型信息
print("---------->调用大模型", prompt)
print("---------->大模型返回结果",response.choices[0].message.content)
二.代码逐模块详细解释
1. 模块导入
import sys
from platform import system
import streamlit as st
import os
from openai import OpenAI
- sys/platform.system:导入但未实际使用,属于预留的系统相关依赖;
- streamlit as st:核心依赖,用于快速搭建网页界面(无需前端开发);
- os:用于读取系统环境变量(获取 API 密钥);
- openai.OpenAI:OpenAI 官方客户端,这里兼容调用 DeepSeek 的 API(非 OpenAI 官方模型)。
2. 页面基础
st.set_page_config(
page_title="WEP_AI助手",
page_icon=".venv/web/yonngxuan/c77b2ddaf0eb023c3fcbf4bf000b746a.jpg",
layout="wide",
initial_sidebar_state="expanded",
menu_items={'About': "@古方路杰出青年 2026"}
)
- 配置网页标题、图标(指定本地图片路径)、布局(宽屏显示)、侧边栏默认展开;
- 自定义“关于”菜单的说明文字。
3. 页面视觉元素
st.title("WEP_AI助手")
st.subheader("@古方路杰出青年")
st.logo(".venv/web/yonngxuan/c77b2ddaf0eb023c3fcbf4bf000b746a.jpg")
- 展示应用主标题、副标题,以及指定路径的 logo 图片。
4. 聊天基础配置
system_prompt = """You are a helpful assistant."""
prompt=st.chat_input("请说点什么吧")
- system_prompt:定义 AI 的系统角色(设定为“乐于助人的助手”),决定 AI 的基础行为;
- st.chat_input:创建聊天输入框,用户输入的内容会赋值给 prompt 变量。
5. 聊天历史初始化与展示
# 初始化聊天消息(会话级持久化)
if 'messages' not in st.session_state:
st.session_state.messages = []
# 遍历并展示所有历史消息
for message in st.session_state.messages:
if message["role"] == "user":
st.chat_message("user").write(message["content"])
else:
st.chat_message("assistant").write(message["content"])
- st.session_state:Streamlit 的会话状态对象,用于保存单次会话内的聊天记录(刷新页面不丢失);
- 遍历历史消息列表,按“用户(user)”/“助手(assistant)”角色,以不同样式的聊天气泡展示内容。
6. DeepSeek 客户端初始化
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com"
)
- 创建 OpenAI 客户端实例,但实际对接 DeepSeek 接口:
- api_key:从系统环境变量 DEEPSEEK_API_KEY 读取(避免硬编码密钥);
- base_url:指定 DeepSeek 的 API 地址(兼容 OpenAI 接口格式)。
7. 处理用户输入与调用 AI
if prompt: # 当用户输入内容时
# 展示用户输入的内容
st.chat_message("user").write(prompt)
st.write("WEP_AI正在思考中...")
# 保存用户消息到历史记录
st.session_state.messages.append({"role": "user", "content": prompt})
# 调用DeepSeek模型
response = client.chat.completions.create(
model="deepseek-chat", # DeepSeek对话模型
messages=[
{"role": "system", "content": system_prompt}, # 系统提示词
*st.session_state.messages # 所有历史聊天消息
],
stream=False # 非流式输出(等待完整回复后展示)
)
# 展示AI回复并保存到历史记录
st.chat_message("assistant").write(response.choices[0].message.content)
st.session_state.messages.append({"role": "assistant", "content": response.choices[0].message.content})
# 控制台打印调试信息
print("---------->调用大模型", prompt)
print("---------->大模型返回结果",response.choices[0].message.content)
- 核心逻辑:用户输入内容后,先展示输入、保存到历史,再调用 DeepSeek 模型获取回复,最后展示回复并保存到历史;
- stream=False:表示一次性获取完整回复(若设为 True 则为实时流式输出,更贴近ChatGPT的体验);
- 控制台打印程序日志:方便开发者调试,查看用户输入和 AI 回复。
三.总结
- 核心功能:基于 Streamlit 快速搭建网页版 AI 聊天应用,对接 DeepSeek 大模型实现对话;
- 关键特性:支持会话级聊天历史保存、宽屏布局、自定义页面样式,API 密钥通过环境变量读取(更安全);
- 核心依赖:Streamlit(网页框架)+OpenAI 客户端(兼容调用 DeepSeek API)。
更多推荐




所有评论(0)