【大模型学习】项目练习:套壳DeepSeek

✨ 个人主页:在线OJ的阿川
💖文章专栏:AI入门到进阶
🌏代码仓库:
写在开头
现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论
📚目录
- 一、设计思路
- 二、具体流程操作
- 三、想说的话
🚀实现套壳DeepSeek
套壳DeepSeek
一、⛳设计思路
本套壳DeepSeek采用模块化设计,主要包含二大核心模块:
- 后端模块:调用LangChain中的DeepSeek R1 0528模型调用对话链获取其回答
- 前端模块:Streamlit前端及部署云和调用后端代码
说明:
本地编译器为Visual Studio code
,Python
版本为3.12,安装库为:
altair==5.5.0
annotated-types==0.7.0
anyio==4.9.0
attrs==25.3.0
blinker==1.9.0
cachetools==6.1.0
certifi==2025.6.15
charset-normalizer==3.4.2
click==8.2.1
colorama==0.4.6
distro==1.9.0
gitdb==4.0.12
GitPython==3.1.44
greenlet==3.2.3
h11==0.16.0
httpcore==1.0.9
httpx==0.28.1
idna==3.10
Jinja2==3.1.6
jiter==0.10.0
jsonpatch==1.33
jsonpointer==3.0.0
jsonschema==4.24.0
jsonschema-specifications==2025.4.1
langchain==0.3.26
langchain-core==0.3.66
langchain-deepseek==0.1.3
langchain-openai==0.3.25
langchain-text-splitters==0.3.8
langsmith==0.4.1
MarkupSafe==3.0.2
narwhals==1.44.0
numpy==2.3.1
openai==1.91.0
orjson==3.10.18
packaging==24.2
pandas==2.3.0
pillow==11.2.1
protobuf==6.31.1
pyarrow==20.0.0
pydantic==2.11.7
pydantic_core==2.33.2
pydeck==0.9.1
python-dateutil==2.9.0.post0
pytz==2025.2
PyYAML==6.0.2
referencing==0.36.2
regex==2024.11.6
requests==2.32.4
requests-toolbelt==1.0.0
rpds-py==0.25.1
six==1.17.0
smmap==5.0.2
sniffio==1.3.1
SQLAlchemy==2.0.41
streamlit==1.46.0
tenacity==9.1.2
tiktoken==0.9.0
toml==0.10.2
tornado==6.5.1
tqdm==4.67.1
typing-inspection==0.4.1
typing_extensions==4.14.0
tzdata==2025.2
urllib3==2.5.0
watchdog==6.0.0
zstandard==0.23.0
二、🎉具体流程操作
2.1 安装虚拟环境
方式一:使用anaconda安装
1.下载anaconda
2.打开
3.创建并进入虚拟环境
4.正常安装相应的库即可
5.删除虚拟环境(可选)
先退出当前虚拟环境,再删除虚拟环境
方式二:在Visual Studio code
创建虚拟环境
1.根据图操作
2.找到Python安装环境配置即可
2.2 安装相应的库
1.打开终端
2.输入
requirements.txt自己把相应的库建出来txt文件
3.导入相应的库(可选)
打开终端,输入:
2.3 后端(backend.py)
主要实现功能:
1.内容获取:使用Langchain中的DeepSeek模型进行调用获取–Langchain文档
from langchain.chains import ConversationChain # 对话链,用于管理对话状态
from langchain_deepseek import ChatDeepSeek # DeepSeek的聊天模型def catch_response(prompt, memory, deepseek_api_key): # 获取聊天响应的函数model = ChatDeepSeek(model="deepseek-reasoner", api_key=deepseek_api_key) # 创建DeepSeek聊天模型实例,指定模型和API密钥chain = ConversationChain(llm=model, memory=memory) # 创建对话链,自动存储记忆和加载记忆response = chain.invoke({"input": prompt}) # 调用对话链获取响应return response["response"] # 可以获取提示词和记忆和响应内容,但这里只要返回内容。
2.4🚀前端(frontend.py)
主要实现功能:
1.前端页面:使用streamlit进行页面布置并调用后端
import streamlit as st # 前端库
from langchain.memory import ConversationBufferMemory # 对话记忆,用于存储对话历史
from backend import catch_response # 导入后端函数,用于获取聊天响应st.title("🤖 套壳DeepSeek AI")with st.sidebar: # 侧边栏,用于输入API密钥deepseek_api_key = st.text_input("请输入DeepSeek API Key:", type="password")st.markdown("[获取DeepSeek API key](https://platform.deepseek.com/api_keys)")if "memory" not in st.session_state: # 如果会话状态中没有记忆,则初始化st.session_state["memory"] = ConversationBufferMemory(return_messages=True) # 返回消息记忆列表st.session_state["messages"] = [{"role": "ai","content": "靓仔,我是喜羊羊,别看我是一只羊,其实我是一只羊,有什么可帮你的吗?"}] # 初始消息for message in st.session_state["messages"]: # 遍历会话状态中的消息st.chat_message(message["role"]).write(message["content"]) # chat_message用于显示不同角色的消息,这里是AI角色
prompt = st.chat_input() # 获取用户输入的提示词
if prompt: # 如果用户输入了提示词if not deepseek_api_key: # 如果没有输入API密钥st.info("请输入你的DeepSeek API Key")st.stop()st.session_state["messages"].append({"role": "human", "content": prompt})st.chat_message("human").write(prompt) # 这里是人类角色的消息with st.spinner("AI正在思考中,请稍等..."): # 显示加载动画response = catch_response(prompt, st.session_state["memory"],deepseek_api_key)msg = {"role": "ai", "content": response} # 保存AI角色的消息st.session_state["messages"].append(msg) # 将AI角色的消息添加到会话状态中st.chat_message("ai").write(response) # 显示AI角色的消息refresh_button = st.button("刷新对话") # 刷新按钮,用于清空会话状态
if refresh_button: # 如果点击了刷新按钮if not deepseek_api_key: # 如果没有输入API密钥st.info("请输入你的DeepSeek API Key")st.stop()st.session_state["messages"] = [{"role": "ai", "content": "靓仔,我是喜羊羊,别看我是一只羊,其实我是一只羊,有什么可帮你的吗?"}] # 重置消息列表st.session_state["memory"] = ConversationBufferMemory(return_messages=True) # 重置记忆st.rerun() # 重新运行应用程序,以清空界面和状态
2.5 本地运行
1.终端运行
2.第一次运行之后,会叫你输入邮箱,输入即可
3.运行成功
2.6 streamlit云部署 (可选)
1.注册并登入github网页
2.新建仓库
3.上传文件
4.提交文件
5.登入streamlit云
6.选择
7.然后选择
8.部署成功
套壳DeepSeek
9.若部署失败,需要删除失败的操作(可选)
三、😉想说的话
3.1 代码现状
个人感兴趣,玩一下,不足之处多多包涵。
主要问题有:
- 功能实现不够多 (可以套壳国外的一些AI,然后进行使用,封装的功能够多,可以进行盈利,自己包车队)
- 变量名起的不够精炼
3.2 改进方案
如何解决:
- 多学习,多练习,熟练度上去后,尝试表达想法。
- 勤注释,换位思考
- 多背单词
3.3 开发困难记录
练习过程中遇到的困难:
- 在实现刷新对话功能,发现需要点击两次才能将之前的消息删除。
- 在实现刷新对话功能时发现不需要输入秘钥,依旧可刷新。
- 在实现刷新功能时,没有欢迎用语了。
3.4 解决方案
如何解决的困难:
- 发现哪怕是重置了messages,但之前旧消息队列还在,应该要立即刷新,要st.rerun
- 增加判断语句
- 在实现刷新功能中加入messages欢迎用语。
3.5代码汇总
个人主页csdn资源
3.6 多说一句
若你能看到看到这篇文章且能看到这,则说明你我有缘,留个关注吧,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……,祝你我变得更强
好的,到此为止啦,祝您变得更强
道阻且长 行则将至 |
---|
个人主页:在线OJ的阿川![]() ![]() |