将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:latestdeepseek-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_predicttemperaturetop_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环境已就绪且模型已正确下载:

  1. 安装Ollama:从官网下载并安装Ollama,安装后建议将其安装目录(如 D:\Ollama)添加到系统环境变量 PATH 中,以便命令行调用 。
  2. 拉取DeepSeek-R1模型:在终端中执行以下命令。模型大小可根据显存选择,例如 deepseek-r1:671b 为完整版,deepseek-r1:8b 为量化小版本 。
    ollama pull deepseek-r1:671b
    
  3. 验证模型运行:使用以下命令进行基础对话测试,确保模型加载成功 。
    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限流困扰,并获得更好的数据隐私性 。​​​​

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐