DeepSeek-R1本地迁移指南:从云端到Ollama
将DeepSeek-R1模型从云端API迁移到本地Ollama部署,主要需要修改API的调用参数,包括端点地址、模型名称以及请求体的格式。以下是具体的修改点、对比表格和示例代码。
·
将DeepSeek-R1模型从云端API迁移到本地Ollama部署,主要需要修改API的调用参数,包括端点地址、模型名称以及请求体的格式。以下是具体的修改点、对比表格和示例代码。
一、 核心参数修改对比
下表清晰地展示了从DeepSeek官方API迁移到本地Ollama所需修改的核心参数差异:
| 参数类别 | DeepSeek 官方 API | Ollama 本地 API | 说明与修改要点 |
|---|---|---|---|
| API 基础地址 | https://api.deepseek.com |
http://localhost:11434 |
将请求目标从云端切换至本地服务 。 |
| 端点路径 | /chat/completions |
/api/chat |
Ollama 使用不同的API路由 。 |
| 模型名称 | deepseek-chat |
deepseek-r1:latest 或 deepseek-r1:671b |
Ollama 通过 pull 命令下载的模型名即为调用名 。 |
| 认证方式 | Authorization: Bearer <your_api_key> |
通常无需认证 (可设置) | 本地部署一般无需API Key,若设置了环境变量 OLLAMA_API_KEY 则需携带 。 |
| 请求体格式 | 遵循 OpenAI 兼容格式 | 遵循 Ollama 特定格式 | 这是最主要的修改点,涉及字段名和结构的变化,详见下文代码示例。 |
| 流式响应 | 设置 "stream": true |
设置 "stream": true |
流式输出配置两者类似。 |
二、 请求体格式修改详解与代码示例
请求体格式的变更是迁移的关键。Ollama的API格式与OpenAI格式不完全兼容,需要进行字段映射和结构调整。
1. DeepSeek 官方API请求示例 (Python)
import requests
# DeepSeek 云端API调用参数
api_url = "https://api.deepseek.com/chat/completions"
headers = {
"Authorization": "Bearer your_api_key_here",
"Content-Type": "application/json"
}
payload = {
"model": "deepseek-chat", # 指定云端模型
"messages": [
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "你好,请介绍一下你自己。"}
],
"max_tokens": 1024,
"temperature": 0.7,
"stream": False # 是否使用流式输出
}
response = requests.post(api_url, headers=headers, json=payload)
print(response.json())
2. Ollama 本地API请求示例 (Python)
迁移到Ollama后,代码需要做如下调整:
import requests
# Ollama 本地API调用参数
api_url_local = "http://localhost:11434/api/chat" # 修改地址和路径
headers_local = {
"Content-Type": "application/json"
# 通常省略 Authorization 头,除非在Ollama中配置了API密钥
}
payload_local = {
"model": "deepseek-r1:latest", # 修改为本地Ollama拉取的模型名
"messages": [
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "你好,请介绍一下你自己。"}
], # messages 字段格式与OpenAI兼容,这是Ollama的特性
"options": { # 模型参数移入 `options` 对象内
"num_predict": 1024, # 对应 max_tokens
"temperature": 0.7,
},
"stream": False
}
response_local = requests.post(api_url_local, headers=headers_local, json=payload_local)
print(response_local.json())
关键修改说明:
model:值必须与通过ollama pull deepseek-r1:671b或类似命令安装的模型名称完全一致 。options对象:在Ollama中,大部分控制生成过程的参数(如num_predict、temperature、top_p)需要封装在options字段内,这与OpenAI API将参数平铺在根级不同 。- 字段映射:
max_tokens对应改为num_predict。
3. 使用 ollama Python 库调用
除了直接调用REST API,还可以使用Ollama官方Python库,其接口更简洁:
import ollama
# 使用 ollama 库进行调用,格式更友好
response = ollama.chat(
model='deepseek-r1:latest', # 指定本地模型
messages=[
{'role': 'system', 'content': '你是一个有帮助的助手。'},
{'role': 'user', 'content': '你好,请介绍一下你自己。'}
],
options={
'num_predict': 1024,
'temperature': 0.7,
}
)
print(response['message']['content'])
三、 环境准备与模型拉取
在修改调用参数前,需确保本地Ollama环境已就绪且模型已正确下载:
- 安装Ollama:从官网下载并安装Ollama,安装后建议将其安装目录(如
D:\Ollama)添加到系统环境变量PATH中,以便命令行调用 。 - 拉取DeepSeek-R1模型:在终端中执行以下命令。模型大小可根据显存选择,例如
deepseek-r1:671b为完整版,deepseek-r1:8b为量化小版本 。ollama pull deepseek-r1:671b - 验证模型运行:使用以下命令进行基础对话测试,确保模型加载成功 。
ollama run deepseek-r1:671b
四、 进阶配置与注意事项
- API密钥与安全:Ollama默认本地调用无需鉴权。若需对外提供API服务,可通过设置环境变量
OLLAMA_API_KEY或启动参数来启用API密钥认证,此时在请求头中需携带Authorization: Bearer <key>。 - 性能调优:在
options字段中,还可以配置num_ctx(上下文窗口)、num_gpu(使用的GPU层数)等参数来优化本地推理性能 。 - 结合应用框架:本地部署后,可以将其集成到如 AnythingLLM 等知识库应用中,在应用设置中将模型端点修改为
http://localhost:11434并选择对应的模型即可 。
总而言之,迁移的核心工作是切换API端点、调整模型名称,并将生成参数重构至 options 对象内。完成这些修改后,您的应用即可从依赖云端配额转为利用本地计算资源,彻底摆脱429限流困扰,并获得更好的数据隐私性 。
更多推荐


所有评论(0)