打开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上部署的话呢就有时候会多少出现点情况,这些情况大多数时候就是端口出现问题了,或者是权限问题,如果遇到问题可以往那边去考虑。