
? 個人主頁:在線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的阿川![]() ![]() |