【大模型學習】項目練習:套殼DeepSeek

這里是阿川的博客,祝您變得更強

? 個人主頁:在線OJ的阿川
💖文章專欄:AI入門到進階
🌏代碼倉庫:


寫在開頭

現在您看到的是我的結論或想法但在這背后凝結了大量的思考、經驗和討論


在這里插入圖片描述

在這里插入圖片描述

📚目錄

  • 一、設計思路
  • 二、具體流程操作
  • 三、想說的話

🚀實現套殼DeepSeek

套殼DeepSeek

在這里插入圖片描述

一、?設計思路

本套殼DeepSeek采用模塊化設計,主要包含二大核心模塊:

  1. 后端模塊:調用LangChain中的DeepSeek R1 0528模型調用對話鏈獲取其回答
  2. 前端模塊:Streamlit前端及部署云和調用后端代碼

說明:
本地編譯器為Visual Studio codePython版本為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 代碼現狀

個人感興趣,玩一下,不足之處多多包涵。

主要問題有:
  1. 功能實現不夠多 (可以套殼國外的一些AI,然后進行使用,封裝的功能夠多,可以進行盈利,自己包車隊)
  2. 變量名起的不夠精煉

3.2 改進方案

如何解決:

  1. 多學習,多練習,熟練度上去后,嘗試表達想法。
  2. 勤注釋,換位思考
  3. 多背單詞

3.3 開發困難記錄

練習過程中遇到的困難:

  1. 在實現刷新對話功能,發現需要點擊兩次才能將之前的消息刪除。
  2. 在實現刷新對話功能時發現不需要輸入秘鑰,依舊可刷新。
  3. 在實現刷新功能時,沒有歡迎用語了。

3.4 解決方案

如何解決的困難:

  1. 發現哪怕是重置了messages,但之前舊消息隊列還在,應該要立即刷新,要st.rerun
  2. 增加判斷語句
  3. 在實現刷新功能中加入messages歡迎用語。

3.5代碼匯總

個人主頁csdn資源


3.6 多說一句

若你能看到看到這篇文章且能看到這,則說明你我有緣留個關注吧,后面還會接著計算機408、底層原理、開源項目、以及數據、后端研發相關、實習、筆試/面試、秋招/春招、各種競賽相關、簡歷相關、考研、學術相關……,祝你我變得更強

好的,到此為止啦,祝您變得更強

在這里插入圖片描述

在這里插入圖片描述

道阻且長 行則將至
個人主頁:在線OJ的阿川大佬的支持和鼓勵,將是我成長路上最大的動力 在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88443.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88443.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88443.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

筆記03:布線-過孔的調用與添加

布線-過孔的調用與添加 (1)在進行PCB設計時,都必須使用到過孔,對走線進行換層處理。在走線進行打過孔之前,必須先要添加過孔,這樣在PCB布線時才可以使用過孔。 (2)需要使用pad des…

在vscode中,Python程序的內置對象、關鍵字、自定義函數名/類名、字符串進行著色,說明分別是什么顏色?

在 VS Code 中,Python 代碼的著色完全取決于你當前使用的主題。不同主題(如 Dark, Monokai, Solarized Dark, Light, Quiet Light 等)對不同類型的代碼元素會使用不同的顏色。 一、Default Dark(默認的深色主題) impo…

Visual Studio 中使用 AddressSanitizer 指南

Visual Studio 中使用 AddressSanitizer 指南 基于 Microsoft Visual Studio 2022,支持 MSVC 和 Clang 編譯器鏈,本文詳細說明如何在 VS 中配置和使用 AddressSanitizer,用于檢測內存誤用,如消息釋放后訪問、超界讀寫等類型錯誤。…

Flink Sink函數深度解析:從原理到實踐的全流程探索

在Flink的數據流處理體系中,Sink函數作為數據處理的最終出口,肩負著將處理后的數據寫入外部存儲引擎的關鍵使命。它如同數據旅程的終點站,決定著數據的最終歸宿與應用價值。深入理解Sink函數的工作原理、核心概念及實現方式,對構建…

Codex+ 自建中轉 API 部署教程(Windows 版)

📌 一、前置環境準備 安裝 Node.js 和 Codex CLI: npm install -g openai/codex準備 OpenAI API Key 確保你已有的中轉接口兼容 OpenAI 格式, 📌 二、設置 PowerShell 環境變量 # 設置你的 API Key(使用哪家的看你的…

Centos 7離線部署Nginx 高效省時

給腳本執行權限:chmod x install_nginx.sh以root用戶運行:sudo ./install_nginx.sh 腳本如下: #!/bin/bash # Nginx一鍵化部署腳本(修復版本開機自啟) # 需要以root權限運行set -e # 任何命令失敗時立即退出腳本# 定…

P7915 [CSP-S 2021] 回文

題目描述 給定正整數 n n n 和整數序列 a 1 , a 2 , … , a 2 n a_1, a_2, \ldots, a_{2 n} a1?,a2?,…,a2n?,在這 2 n 2 n 2n 個數中, 1 , 2 , … , n 1, 2, \ldots, n 1,2,…,n 分別各出現恰好 2 2 2 次。現在進行 2 n 2 n 2n 次操作&#xf…

小智AI -- ESP32-S3 DIY面包板WIFI-LCD彩屏

DIY 所需硬件 開發板:ESP32-S3-DevKitC-1(選擇 WROOM N16R8 模組) Goouuu ESP32-S3-N16R8開發板數字麥克風:INMP441 INMP441全向麥克風模塊功放:MAX98357A MAX98357 I2S 音頻放大器模塊腔體喇叭:8Ω 2~3W 或…

家用網絡進行DNS優選

家用網絡進行DNS優選的好處主要體現在以下幾個方面: 提升網絡訪問速度: DNS優選通過選擇響應時間更快的DNS服務器,減少域名解析的延遲,從而加快網頁加載和應用訪問速度。尤其在訪問國內外網站時,選擇合適的DNS服務器可…

刷題 | 牛客 - js中等題-下 (更ing)45/54知識點解答

JS45 數組去重 描述 為 Array 對象添加一個去除重復項的方法 示例1 輸入: [false, true, undefined, null, NaN, 0, 1, {}, {}, a, a, NaN] 復制輸出: [false, true, undefined, null, NaN, 0, 1, {}, {}, a] Array.prototype.uniq function () …

vue3使用krpano1.22

官方文檔鏈接 https://krpano.com/docu/js/#top 例子 https://krpano.com/releases/1.22/viewer/examples/javascript-interface/js-api-examples.html https://krpano.com/viewsource.html?releases/1.22/viewer/examples/javascript-interface/js-api-examples.html 注…

2025年AI面試推薦榜單,數字化招聘轉型優選

一、AI面試為何成為2025招聘標配? 2025年企業對AI面試的需求從“效率工具”升級為“戰略級招聘伙伴”。數據顯示,超7成企業計劃年內全面引入AI面試,其中技術崗、全球化招聘及藍領用工場景需求增速顯著。以下以綜合技術實力、行業口碑及落地能…

人機協作新篇章:艾利特按摩機器人如何重塑健康生活

引言:按摩機器人的需求爆發 在快節奏的現代生活中,亞健康人群比例持續攀升。據《全球健康產業白皮書》顯示: 85%的都市人群存在肌肉勞損問題專業理療師供需缺口達1:3200精準按摩服務成本年均增長18% 這一背景下,按摩…

從代碼學習深度學習 - 情感分析:使用循環神經網絡 PyTorch版

文章目錄 前言1. 加載與預處理數據集數據讀取與詞元化構建詞匯表截斷、填充與數據迭代器2. 構建循環神經網絡模型雙向RNN模型(BiRNN)詳解權重初始化3. 加載預訓練詞向量構建詞向量加載器將預訓練向量注入模型4. 訓練與評估模型定義訓練函數可視化訓練過程5. 模型預測編寫預測…

化于無形的 lambda 語法

針對數據集合的每個成員進行計算是很常見的任務,用循環語句當然能實現,但比較麻煩,算個簡單的求和都要寫很多句代碼。 編程語言經常把這些運算封裝成函數,比如 Python 的 sum 函數,求訂單價格總和是這樣寫的&#xff…

day42

1. 回調函數:把一個函數當成“任務清單”交給另一個函數,等后者干完活,就按清單執行這個函數。比如點外賣后留電話,騎手送到了就打電話(執行回調)通知你。 2. lambda函數:臨時寫的超短函數&…

百度日志中臺前端重構實踐

日志中臺是百度內部針對打點數據的全生命周期管理平臺,作為公司日志數據的唯一入口,承擔以下核心職能:1.功能覆蓋:提供從數據采集、傳輸、存儲到查詢分析的一站式服務,支持產品運營分析、研發性能監控、運維管理等多元…

資訊安全 (Information Security)3大 “CIA“要素

資訊安全之3大要素,業界慣用"CIA"稱之,包括機密性 (Confidentiality)、完整性(Integrity)與可用性(Availability);更應增加諸如鑑別性、可歸責性、不可否認性與可靠性。 1.機密性 (Confidentiality) 機密性是指採用適當的安全機制…

php后臺增加權限控制

背景 最近在對接某大廠,部署差不多了,但是在漏洞掃描環節有問題,前端是用vue代碼寫的。后端是php。發現前端路由可以攔截未登錄的url。但是后端php接口不用登錄就能訪問,很危險 解決方法 一、創建 Auth 中間件 首先創建一個專門…

跨平臺后端編程ASP.NET CORE Razor新一代Web開發框架C#

asp.net core Razor動態語言編程代替asp.net .aspx更高級嗎? https://blog.csdn.net/xiaoyao961/article/details/148846065 C#Blazor應用-跨平臺WEB開發VB.NET-CSDN博客 https://blog.csdn.net/xiaoyao961/article/details/148846437 Products.razor文件,Blazor和…