打開Ollama官網:https://ollama.com/
直接下載Ollama并且安裝好Ollama、這時候就能看到app里多了個ollama,但是我們不用打開它
打開Windows Powershell:
ollama run deepseek-r1:1.5b 7b 8b 14b 32b 70b
根據自己的電腦配置和需求更換不同的模型,我安裝的32b的模型
然后windows PowerShell 就開始下載了,下載完就是顯示Success就表示成功了。接下來就是本地使用deepseek了,想要退出,輸入/bye就可以了。
下載成功后,不管什么時候,在windows PowerShell上輸入
ollama list
就能夠看到你部署在本地的deepseek模型
復制一下它的名字,我這里是deepseek-r1:32b ,那我就運行
ollama run deepseek-r1:32b
就可以開始使用deepseek了,這一步呢windows和liunx都一樣,WSL因為是windows下的linux子系統,所以其實是先部署在Windows上。
那我這里想要使用deepseek來做一些特定的事,比如我使用它固定輸出一些東西,用來做一些實驗,那在windows系統上,我在windows powershell上部署模型,但是我在conda環境里來做實驗,就需要調用本地deepseek模型的api。
首先在Windows Powershell輸入
curl http://localhost:11434/api/tags
這是用來檢測API是否可用。
如果返回了StatusCode為 200,并且content里用deepseek模型的名字,則證明deepseek是可用的。
這個時候我們在conda環境下創建代碼,conda我使用終端anaconda prompt控制,但是用別的也一樣。主要就是寫一個控制deepseek輸出的代碼,加PROMPT來控制就行。
要它做的事每個人都不一樣,但是在前面都要加個
OLLAMA_API_URL = "http://localhost:11434/api/generate"
這樣就是調用之前本地部署的deepseek來解決。
然后運行這個代碼,如果返回你需要的結果,那就證明api調用成功并且你想要它做的事也達到了。比如我這里要他返回一個行動,那我在anaconda Prompt運行這個代碼,確實也返回成功了。
這里在windows上部署并且成功調用api來做實驗就算是可以的,實驗內容也就是那個代碼的內容大家都不一樣,但是總體來說這個流程是通了.
但是有些實驗它不能在windows系統上做啊,只能Linux,就比如我之前做過一個alfworld實驗,在windows上死活運行不了,但是在Linux上就能運行。
這個時候在Linux上部署deepseek再調用就行了,應該也是比較簡單的,基本也就是上面差不多的流程。
但是比如我現在是windows部署deepseek了,我在windows的linux子系統WSL上運行alfworld,那我想調用deepseek來幫助alfworld項目怎么辦呢。這個時候就需要在wsl上來調用本地deepseek api了。
Deepseek API 默認運行在http://localhost:11434
但是在 WSL 里訪問 localhost
默認指向 WSL 自己,而不是 Windows。你需要改成 Windows 的 IP 地址。
在WSL的Linux環境里運行
cat /etc/resolv.conf | grep nameserver
這時候會返回一個ip地址,這個地址就是windows的ip地址
然后再在WSL中輸入
curl http://更換為你的ip地址:11434/api/tags
這時候如果返回有deepseek模型例如這樣
那就說明在WSL中的linux系統中調用Deepseek api成功
但是返回沒有deepseek模型名稱,WSL 里 curl
訪問 Deepseek 失敗,可能是 Windows 防火墻阻止了 WSL 訪問。
那就要打開Windows Powershell管理員模式來使 Windows 防火墻允許 WSL 訪問 11434 端口。
注意是以管理員身份運行,找到Windows Powershell右鍵選擇以管理員身份運行就行。
在Windows Powershell管理員身份運行。
New-NetFirewallRule -DisplayName "Allow WSL to access Ollama" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 11434
這時候就添加了一個防火墻規則,確保WSL能夠運行API
這時候運行
Get-NetFirewallRule -DisplayName "Allow WSL to access Ollama
如果看到返回的信息里有規則,那就可以了
這個時候再在WSL中運行
curl [http://更換為你的ip地址:1143](http://172.28.80.1:1143/)4/api/ta
如果向上面說的一樣就成功了,如果還是沒有成功,WSL 仍然無法連接 Windows 上的 Deepseek API,有可能Windows 可能只監聽 本地請求(127.0.0.1),但不接受 外部(WSL)請求。
在 Windows PowerShell(管理員模式)運行
netstat -ano | findstr :11434
因為WSL 訪問 Windows 需要監聽 0.0.0.0
或 172.28.80.1
才行。所以需要有
TCP 0.0.0.0:11434 0.0.0.0:0 LISTENING 20260
這樣的返回才可以。
如果返回里沒有,在Windows PowerShell(管理員模式)運行
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=11434 connectaddress=127.0.0.1 connectport=11434
這時候再運行
netstat -ano | findstr :11434
就能夠看到有了
這時再去WSL運行
curl http://172.28.80.1:11434/api/tags
如果像之前說的返回模型名稱信息,就說明可以WSL 現在可以訪問 Windows 上的 Deepseek API 了,也就可以繼續在WSL上繼續下一步實驗了。
總的來說,在Windows上或者Linux上部署類似deepseek或者是llama這種開源大語言模型還是比較簡單的,但是在Windows的Linux子系統WSL上部署的話呢就有時候會多少出現點情況,這些情況大多數時候就是端口出現問題了,或者是權限問題,如果遇到問題可以往那邊去考慮。