☰
从 DeepSeek API 切换到本地模型
2026/10/14 20:14:17 网站建设 项目流程

从 DeepSeek API 切换到本地模型

好消息是:由于你用的是openaiSDK,只要本地模型提供 OpenAI 兼容接口,改动量极小——通常只需改base_url和model两个参数。


一、核心原理

text

当前架构: Python → OpenAI SDK → https://api.deepseek.com 本地架构: Python → OpenAI SDK → http://localhost:11434/v1 (本地推理服务)

只要本地推理服务暴露 OpenAI 兼容的/v1/chat/completions接口,代码几乎不用改。


二、常见本地推理方案对比

方案优点缺点适用场景
Ollama安装最简单,一行命令拉模型吞吐量较低,适合个人开发调试、个人使用
vLLM吞吐量高,支持并发部署较复杂,需 GPU生产环境、多人使用
LM Studio图形界面,零配置依赖桌面环境本地测试
LocalAI纯 CPU 可跑,支持多种格式性能一般无 GPU 环境
Xinference支持多模型管理相对小众模型实验

三、方案一:Ollama(最简单,推荐入门)

1. 安装 Ollama

bash

# Windows:下载安装包 https://ollama.com/download # Linux: curl -fsSL https://ollama.com/install.sh | sh

2. 拉取模型

bash

ollama pull qwen2.5:7b # 阿里通义千问 7B ollama pull deepseek-r1:7b # DeepSeek R1 蒸馏版 ollama pull llama3.1:8b # Meta Llama 3.1

3. 验证服务

bash

ollama serve # 默认监听 11434 端口 curl http://localhost:11434/v1/models

4. 改代码

python

import os from openai import AsyncOpenAI client = AsyncOpenAI( api_key="ollama", # 本地模型不校验,随便填 base_url="http://localhost:11434/v1", # 指向本地 Ollama ) response = await client.chat.completions.create( model="qwen2.5:7b", # 换成 Ollama 里的模型名 messages=messages, temperature=0.3 )

改动量:只有base_url和model两个字段。


四、方案二:vLLM(生产级,高吞吐)

1. 安装 vLLM

bash

pip install vllm

2. 启动 OpenAI 兼容服务

bash

python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2.5-7B-Instruct \ --host 0.0.0.0 \ --port 8000 \ --tensor-parallel-size 1

3. 改代码

python

client = AsyncOpenAI( api_key="EMPTY", base_url="http://localhost:8000/v1", ) response = await client.chat.completions.create( model="Qwen/Qwen2.5-7B-Instruct", messages=messages, temperature=0.3 )

优势:

  • 支持多并发请求,吞吐量是 Ollama 的数倍

  • 支持 PagedAttention,显存利用率高

  • 生产环境首选


五、统一封装:一处配置,多处切换

建议把模型配置抽到环境变量或配置文件,实现「云端 / 本地」一键切换。

1. 配置文件config.py

python

import os # 切换模式:deepseek / ollama / vllm LLM_PROVIDER = os.getenv("LLM_PROVIDER", "deepseek") PROVIDER_CONFIG = { "deepseek": { "base_url": "https://api.deepseek.com", "api_key": os.getenv("DEEPSEEK_API_KEY"), "model": "deepseek-chat", }, "ollama": { "base_url": "http://localhost:11434/v1", "api_key": "ollama", "model": "qwen2.5:7b", }, "vllm": { "base_url": "http://localhost:8000/v1", "api_key": "EMPTY", "model": "Qwen/Qwen2.5-7B-Instruct", }, } def get_llm_config(): return PROVIDER_CONFIG[LLM_PROVIDER]

2. 客户端工厂llm_client.py

python

from openai import AsyncOpenAI from config import get_llm_config _client = None def get_llm_client() -> AsyncOpenAI: global _client if _client is None: cfg = get_llm_config() _client = AsyncOpenAI( api_key=cfg["api_key"], base_url=cfg["base_url"], timeout=60, ) return _client def get_model_name() -> str: return get_llm_config()["model"]

3. 业务代码

python

from llm_client import get_llm_client, get_model_name async def ask(question: str, messages: list) -> str: client = get_llm_client() response = await client.chat.completions.create( model=get_model_name(), messages=messages, temperature=0.3 ) return response.choices[0].message.content

4. 切换方式

bash

# 用 DeepSeek 云端 set LLM_PROVIDER=deepseek python main.py # 用本地 Ollama set LLM_PROVIDER=ollama python main.py # 用本地 vLLM set LLM_PROVIDER=vllm python main.py

业务代码零改动,只需切换环境变量。


六、本地模型 vs 云端 API 对比

维度DeepSeek API本地模型
成本按 Token 计费一次性硬件投入
延迟受网络影响,通常 1-3 秒本地推理,0.5-2 秒(取决于硬件)
隐私数据出境数据完全不出本地✅
模型能力DeepSeek-V3/R1 满血版受限于本地硬件,只能用 7B~32B
并发能力无限扩展受限于 GPU 显存
运维零运维需自己维护推理服务
稳定性依赖外部服务完全自主可控

七、硬件需求参考(本地部署)

模型规模显存需求推荐硬件
3B4-6 GBRTX 3060 / Mac M1
7B8-10 GBRTX 4070 / Mac M2 Pro
14B16-20 GBRTX 4090 / Mac M3 Max
32B40-48 GBA100 40G / 双卡 4090
70B80-140 GBA100 80G × 2

量化技术可大幅降低需求:

  • Q4_K_M(4bit 量化):显存需求降低约 60%,质量损失小

  • Ollama 默认使用量化版本,7B 模型只需 5GB 左右


八、注意事项

坑点说明解决方案
api_key不能为空OpenAI SDK 强制要求填任意字符串(如"ollama")
模型名称必须匹配本地模型的名称和云端不同先ollama list或查看 vLLM 启动日志
不支持所有参数本地模型可能不支持某些 OpenAI 参数移除logprobs、response_format等高级参数
Tokenizer 差异不同模型的 Token 计算不同控制 messages 长度时留足余量
上下文长度限制本地模型通常 8K~32K调整messages[-N:]的裁剪逻辑
并发限制Ollama 默认单并发生产环境用 vLLM 或加OLLAMA_NUM_PARALLEL环境变量

九、完整迁移清单

步骤操作
1选择本地推理方案(Ollama / vLLM)
2安装推理服务并拉取模型
3验证curl http://localhost:PORT/v1/models可访问
4抽离配置到环境变量
5修改base_url和model
6移除本地模型不支持的高级参数
7测试对话、超时、异常处理
8观察延迟和资源占用,必要时调整模型规模

📌 总结

场景推荐方案
个人开发 / 快速验证Ollama + 7B 量化模型
团队内部使用vLLM + 14B~32B 模型
无 GPU 环境LocalAI(CPU 推理,速度慢)
数据极度敏感本地部署 + 私有化模型(Qwen、DeepSeek 开源版)

核心一句话:只要本地推理服务提供 OpenAI 兼容接口,切换本地模型只需改base_url和model两个字段。配合环境变量配置,可以实现云端与本地一键切换,业务代码完全不用动。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询