news 2026/10/8 18:08:15

deepseek篇001--Windows环境下用Ollama本地部署,TaoToken统一Key打通API调用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
deepseek篇001--Windows环境下用Ollama本地部署,TaoToken统一Key打通API调用

1. Windows 上用 Ollama 跑 DeepSeek 到底解决什么问题

如果你在 Windows 上想跑 DeepSeek,又不想折腾显卡驱动、CUDA 版本、Python 虚拟环境这一整套,那 Ollama 基本是最省事的一条路。它把模型权重、推理引擎、OpenAI 兼容接口打包成一个可执行程序,装完就能用ollama run直接对话,也能通过http://localhost:11434暴露 HTTP 接口给别的程序调用。这篇要讲的是 Windows 环境下用 Ollama 本地部署 DeepSeek 的完整落地流程,从安装、模型拉取,到 OpenAI 兼容接口验证,最后再把本地 endpoint 切到 TaoToken 统一 Key 通道,方便你后面在本地模型和云端模型之间来回切换。

先说清楚适合谁看。第一种是刚接触本地大模型、想在 Windows 单机上先跑通一个能对话的 DeepSeek 的人;第二种是已经在写代码调 API、但被各家 Key 和 Base URL 搞烦了,想用一个统一入口管理的人;第三种是手里有 Ollama、但不知道怎么把它接到 OpenAI 兼容客户端里的人。这三种场景这篇都会覆盖。

核心检索词先摆出来:Windows 本地部署 DeepSeek、Ollama 安装配置、Ollama OpenAI 兼容接口、TaoToken 统一 Key。你只要记住一件事,Ollama 负责把模型跑起来,TaoToken 负责把 API 调用通道统一起来,两者不冲突,可以同时存在。

我试过在一台没有独显的 Windows 机器上跑deepseek-r1:1.5b,速度能接受,用来做本地问答和接口联调完全够。下面按步骤来,每一步都给可复制的命令和配置。

2. Ollama 安装与 DeepSeek 模型拉取:Windows 本地部署第一步

这一节解决的是「装在哪、模型存哪、怎么拉」三个问题。很多人卡在 C 盘爆满,其实装之前改两个环境变量就能避开。

2.1 安装 Ollama 并指定安装目录

去 Ollama 官网下载 Windows 安装包,文件名类似OllamaSetup.exe。直接双击安装会默认装到 C 盘,且不能选路径。更推荐用命令行安装,把安装目录指到 D 盘或 G 盘:

OllamaSetup.exe /DIR="D:\Net_Program\Net_Ollama"

双引号里换成你自己的路径。装完后打开一个新的 CMD 窗口,执行:

ollama -v

能打印出版本号就说明装好了。如果提示'ollama' 不是内部或外部命令,多半是安装时没勾选加入 PATH,重装一次或者手动把安装目录加进系统环境变量即可。

2.2 改模型下载目录,别让 C 盘爆掉

Ollama 默认把模型存在C:\Users\你的用户名\.ollama\models。DeepSeek 的 7B 量化版本动辄几个 GB,C 盘紧张的话一定要改。打开「系统属性 → 高级 → 环境变量」,在用户变量里新建:

变量名:OLLAMA_MODELS 变量值:G:\app\Net_Ollama\Models

变量值换成你想存的目录。改完必须重启 Ollama,最稳的做法是直接重启电脑,否则新目录不生效,模型还是会往 C 盘塞。

2.3 拉取 DeepSeek 模型

在 CMD 里执行下面这条命令拉取 DeepSeek R1 的 1.5B 版本:

ollama run deepseek-r1:1.5b

第一次执行会先下载再进入对话。下载到后面速度可能掉到几百 KB,这时候按Ctrl+C停掉,重新执行同一条命令,速度通常会恢复到几 MB,反复几次就能下完。下完后你会直接进入交互式对话,输入问题回车即可。想退出对话用:

/bye

查看本机已经拉了哪些模型:

ollama list

想跑别的版本,比如 7B:

ollama run deepseek-r1:7b

数字越大对硬件要求越高,1.5B 适合纯 CPU 或入门显卡,7B 以上建议有独立显卡和足够显存。

2.4 让 Ollama 监听所有网卡(可选)

默认 Ollama 只监听127.0.0.1:11434。如果你想让同一局域网的其他设备也能调,需要设置:

变量名:OLLAMA_HOST 变量值:0.0.0.0:11434

改完同样重启 Ollama。注意这只适合内网自用,别暴露到公网。

到这里,本地 DeepSeek 已经能对话了。但真正做开发,你需要的是 HTTP 接口,而不是在 CMD 里敲字。下一节讲怎么验证 OpenAI 兼容接口,以及怎么把通道切到 TaoToken。

3. 可复制配置:Ollama OpenAI 兼容接口与 TaoToken 统一 Key 通道

Ollama 自带一个 OpenAI 兼容的/v1接口,这是它能被各种客户端直接调用的关键。默认地址是:

http://localhost:11434/v1

API Key 随便填一个非空字符串即可,Ollama 本地不校验。模型名就用你ollama list里看到的,比如deepseek-r1:1.5b。

3.1 用 curl 验证本地接口

先确认本地服务能通。打开 CMD 执行:

curl http://localhost:11434/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ollama" -d "{\"model\":\"deepseek-r1:1.5b\",\"messages\":[{\"role\":\"user\",\"content\":\"用一句话介绍你自己\"}]}"

返回 JSON 里能看到choices[0].message.content就说明本地通道打通了。如果返回connection refused,说明 Ollama 没启动,去开始菜单重新打开 Ollama 即可。

3.2 用 Python 调用本地接口

装好openai库后:

pip install openai

然后写一个最小脚本:

from openai import OpenAI client = OpenAI( base_url="http://localhost:11434/v1", api_key="ollama", ) resp = client.chat.completions.create( model="deepseek-r1:1.5b", messages=[{"role": "user", "content": "写一个 Python 快排"}], ) print(resp.choices[0].message.content)

这段代码跑通,说明你的本地 DeepSeek 已经是一个标准 OpenAI 接口服务了。

3.3 切到 TaoToken 统一 Key 通道

本地模型适合离线、隐私场景,但遇到需要更强模型的时候,你不可能每次都改一堆代码。TaoToken 的作用就是给你一个统一的 Base URL 和 Key,把云端模型的调用也收敛到同一套配置里。你只需要改两个字段:

from openai import OpenAI client = OpenAI( base_url="https://taotoken.net/api", api_key="你的 TaoToken Key", ) resp = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": "写一个 Python 快排"}], ) print(resp.choices[0].message.content)

注意base_url结尾不要带/v1,SDK 会自己拼。Key 去控制台创建,地址是https://taotoken.net/console,创建入口在https://taotoken.net/api-keys。模型 ID 按文档里列出的填,文档在https://taotoken.net/doc。

如果你用的是配置文件而不是代码,比如某些客户端读settings.json或config.toml,把对应字段改成:

{ "base_url": "https://taotoken.net/api", "api_key": "你的 TaoToken Key", "model": "deepseek-chat" }

三件套就是 Base URL、Key、Model ID,缺一不可。本地和云端切换时,只改这三处,业务代码不用动。

3.4 环境变量方式统一管理

更干净的做法是用环境变量,代码里不写死:

setx OPENAI_BASE_URL "https://taotoken.net/api" setx OPENAI_API_KEY "你的 TaoToken Key"

设完重开 CMD。这样任何读这两个变量的 SDK 都会自动走 TaoToken 通道。想切回本地,把OPENAI_BASE_URL改成http://localhost:11434/v1即可。

4. 验证请求与成功结果:本地与云端双通道跑通

配置写完不算完,得实际发一次请求看到返回才算数。这一节给你两种验证动作,确保本地服务和统一 API 通道都能跑通。

4.1 本地通道验证

先确认 Ollama 在跑:

ollama list

能看到deepseek-r1:1.5b就说明模型在。然后发请求:

curl http://localhost:11434/v1/models

返回一个包含模型列表的 JSON,说明/v1接口活着。再发对话请求,就是上一节那条 curl。成功时你会看到类似这样的结构:

{ "id": "chatcmpl-xxx", "object": "chat.completion", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "我是一个由 DeepSeek 训练的语言模型……" }, "finish_reason": "stop" } ] }

只要choices数组里有内容,本地通道就算通了。

4.2 云端统一通道验证

把 base_url 换成 TaoToken 后,用同样的 curl 结构验证:

curl https://taotoken.net/api/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer 你的TaoTokenKey" -d "{\"model\":\"deepseek-chat\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}"

返回 200 且choices有内容,说明统一 Key 通道也通了。如果返回 401,检查 Key 是否复制完整、有没有多余空格。如果返回 404,检查模型 ID 是否拼错,去文档页核对。

4.3 Python 双通道对照脚本

把两个通道写在一个脚本里对照,方便你确认切换逻辑:

from openai import OpenAI def ask(base_url, api_key, model, question): client = OpenAI(base_url=base_url, api_key=api_key) resp = client.chat.completions.create( model=model, messages=[{"role": "user", "content": question}], ) return resp.choices[0].message.content print("本地:", ask("http://localhost:11434/v1", "ollama", "deepseek-r1:1.5b", "1+1等于几")) print("云端:", ask("https://taotoken.net/api", "你的TaoTokenKey", "deepseek-chat", "1+1等于几"))

两个都打印出答案,说明你的双通道配置完全可用。后面做应用时,把base_url和model抽成配置项,就能一键切换。

4.4 验证时观察到的现象

本地 1.5B 模型回答短问题通常一两秒内返回,长文本会慢一些,取决于 CPU 或显卡。云端通道返回速度取决于网络和模型负载,但胜在模型能力强。实测下来,把两者放在同一套代码里切换,开发效率提升明显,不用为每个模型单独写适配层。

5. 本篇常见报错排查:401、connection refused、模型找不到

这一节按真实报错来,遇到哪个查哪个。

5.1 401 Unauthorized

本地通道出现 401 基本不可能,因为 Ollama 不校验 Key。如果你在本地地址上看到 401,多半是 base_url 写成了云端地址但 Key 没换。云端通道出现 401,检查三件事:Key 是否完整复制、Authorization头是不是Bearer加空格再加 Key、Key 是否已过期或被删。去https://taotoken.net/api-keys重新生成一个再试。

5.2 connection refused / local proxy failed

connection refused说明目标端口没人监听。本地场景下就是 Ollama 没启动,去开始菜单打开 Ollama,托盘出现羊驼图标后再试。如果你之前设过OLLAMA_HOST为0.0.0.0:11434,用localhost访问一般没问题,但某些环境下要改用127.0.0.1:11434。

local proxy failed通常出现在客户端里配了系统代理但代理没开的情况。检查系统代理设置,或者把客户端的代理开关关掉。注意这里说的是客户端自身的网络设置,不是让你去搞什么特殊网络工具,本地和正常 API 调用都不需要那些。

5.3 reading choices 相关报错

报错里出现reading 'choices'或Cannot read properties of undefined (reading 'choices'),意思是返回体里没有choices字段,代码却直接去取。常见原因有三个:返回的其实是错误 JSON,比如{"error": {...}};模型 ID 写错导致接口返回 404;base_url 多写了或漏写了/v1。排查方法很简单,先把原始返回打印出来:

import json print(json.dumps(resp.model_dump(), ensure_ascii=False, indent=2))

看清楚结构再取字段。另外注意,用 OpenAI SDK 时base_url填https://taotoken.net/api,不要自己再加/v1,SDK 会拼成/api/v1/...还是/api/...取决于版本,以文档为准。

5.4 OAuth 或鉴权相关报错

如果你用的是 Claude Code 这类工具,报错里可能出现 OAuth 字样。这类工具通常有自己的登录流程,和 API Key 是两套机制。想用统一 Key 通道,需要在工具配置里显式指定 Base URL 和 Key,而不是走它的默认登录。具体字段名看工具文档,核心还是那三件套:Base URL、Key、Model ID。

5.5 模型找不到 / model not found

本地报这个,先ollama list看模型名,注意名字要完全一致,包括:1.5b这种 tag。云端报这个,去https://taotoken.net/doc核对可用模型 ID,别凭记忆写。模型 ID 大小写和连字符都要对。

5.6 下载卡住或中断

前面提过,下载到后面变慢就Ctrl+C再重跑同一条ollama run命令。如果反复失败,检查OLLAMA_MODELS指向的磁盘是否有足够空间和写权限。改过环境变量后没重启 Ollama 也会导致下载路径不对,重启电脑最稳。

6. 后续怎么用:本地与云端切换的实用建议

跑通之后,日常开发建议把配置抽成一个字典或环境变量组,本地和云端各一套,用的时候按需选。本地适合断网、隐私数据、快速联调;云端适合需要更强推理、更长上下文的任务。TaoToken 的模型对话入口在https://taotoken.net/chat,想先在线试模型效果可以去那里。长期做编码或 Agent 类任务,可以看 Coding Plan,地址是https://taotoken.net/coding-plan。Claude Code 相关接入参考https://taotoken.net/ClaudeCodeAnthropic。

一个实用技巧:把base_url、api_key、model三个值写进一个config.json,代码启动时读它,切换通道就是改这个文件,不用动业务逻辑。另一个技巧是给本地和云端各写一个健康检查函数,启动时先 ping 一下/v1/models,哪个通用哪个,避免请求发出去才发现通道挂了。

最后提醒一句,改完OLLAMA_MODELS或OLLAMA_HOST一定要重启 Ollama,最好直接重启电脑,这个坑我踩过不止一次。模型下载目录提前规划好,别等 C 盘红了才想起来改。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 18:06:28

VsCode安装ClaudeCode插件后,把settings.json改到TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/8 18:04:12

从CNN算子出发,彻底看懂NVDLA硬件加速器流水线

做了两年AI硬件加速方面的开发,我慢慢发现一个规律:上手AI加速器的人,十个里有八个不是被电路难倒的,而是被"算子"和"流水线"之间的那座桥搞晕的。你在PyTorch里调一个nn.Conv2d,觉得卷积就是&quo…

作者头像 李华