6.5 DeepSeek模型API调用与国内大模型适配指南
本节内容基于《大模型应用开发极简入门:基于GPT-4和ChatGPT(第2版)》第6章「国内模型适配」中的DeepSeek模型开发编写,涵盖API调用、提示适配与实战案例。书中指出,国内用户可替换为DeepSeek等兼容API的模型。
一、国内模型适配背景(书6.4)
书中第6章新增国内模型适配内容,指出:
- 国内开发者可能因网络访问或合规要求使用国产大模型;书中第6章「国内模型适配」将 DeepSeek 与 Dify 并列,本节侧重 DeepSeek API,6.6 节侧重 Dify 低代码平台
- DeepSeek等模型提供与OpenAI兼容的API接口,便于迁移
- 书中所有模板均兼容GPT-3.5/4,使用前需配置API密钥,国内用户可替换为DeepSeek等兼容API的模型
本节将系统讲解DeepSeek的API调用方式、与OpenAI的差异、提示适配要点及完整实战代码。
二、DeepSeek API与OpenAI的兼容性
2.1 接口兼容
DeepSeek提供与OpenAI Chat Completions 兼容的接口,主要差异为:
| 项目 | OpenAI | DeepSeek |
|---|---|---|
| base_url | 默认 api.openai.com | api.deepseek.com/v1 |
| api_key | OpenAI Key | DeepSeek Key |
| model | gpt-3.5-turbo 等 | deepseek-chat 等 |
2.2 参数兼容
messages、temperature、max_tokens等参数与OpenAI一致,多数场景无需修改调用逻辑,仅需切换base_url与api_key。
三、DeepSeek API调用(书6.4 实战)
3.1 基础调用
"""
DeepSeek API 调用示例(基于书6.4国内模型适配)
运行: pip install openai python-dotenv
在.env中配置 DEEPSEEK_API_KEY=your-key
"""
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
# 关键:指定 base_url
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1"
)
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "你好,请用一句话介绍你自己"}],
temperature=0.7,
max_tokens=500
)
print(response.choices[0].message.content)
3.2 多轮对话
与OpenAI相同,维护messages列表即可:
messages = [
{"role": "system", "content": "你是一个有帮助的AI助手"},
{"role": "user", "content": "什么是机器学习?"},
]
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
temperature=0.7
)
reply = response.choices[0].message.content
messages.append({"role": "assistant", "content": reply})
messages.append({"role": "user", "content": "能举个例子吗?"})
# 继续调用...
四、提示适配(书6.4)
4.1 通用性
书中提示工程模板(角色+上下文+示例+要求)对DeepSeek同样适用。DeepSeek对中文支持良好,多数场景无需特殊调整。
4.2 可能的差异
- 模型能力:DeepSeek与GPT-4在复杂推理、多模态等方面存在差距,复杂任务可适当简化或增加示例
- 格式偏好:部分模型对JSON、Markdown等格式的遵循程度不同,可通过少样本强化
- 敏感内容:不同模型的内容策略不同,需根据实际输出调整
4.3 统一封装便于切换
可将模型调用封装为统一接口,通过配置切换OpenAI/DeepSeek:
def get_client(provider: str = "openai"):
if provider == "deepseek":
return OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1"
)
return OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def get_model(provider: str) -> str:
return "deepseek-chat" if provider == "deepseek" else "gpt-3.5-turbo"
client = get_client("deepseek")
model = get_model("deepseek")
response = client.chat.completions.create(model=model, messages=[...])
五、完整实战:基于书中模板的DeepSeek版本
以下代码将书中基础调用、多轮对话、Function Calling思路迁移至DeepSeek(需确认DeepSeek是否支持Function Calling,以官方文档为准):
"""
DeepSeek 实战:基础调用与多轮对话(基于书6.4与书中代码模板)
运行: pip install openai python-dotenv
"""
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1"
)
def gpt_basic_completion(prompt: str, model: str = "deepseek-chat") -> str:
"""基础调用(与书中gpt_basic_completion结构一致)"""
try:
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "你是一个专业的AI助手,回答简洁准确"},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=1000
)
return response.choices[0].message.content.strip()
except Exception as e:
print(f"API调用失败:{e}")
return None
# 测试
if __name__ == "__main__":
result = gpt_basic_completion("解释一下什么是RAG技术")
print(result)
六、其他国内模型
除DeepSeek外,通义千问、文心一言、智谱ChatGLM等也提供兼容或类OpenAI的API。迁移思路类似:
- 查阅官方文档获取
base_url、model、认证方式 - 替换客户端初始化参数
- 根据实际效果调整提示与参数
书中 6.4 节「国内模型适配」将 DeepSeek 与 Dify 并列:DeepSeek 侧重 API 级调用与迁移,Dify 侧重低代码搭建。本节完成 API 层适配后,若需快速搭建应用可再结合 6.6 节 Dify;若需代码级控制,则保持本节封装即可。
八、国内部署与合规注意
在国内使用 DeepSeek 等国产模型时,通常无需考虑数据出境问题,适合对数据本地化有要求的场景。部署时注意:(1)API 密钥与请求日志的存储与访问权限需符合企业安全规范;(2)若需与书中第 3 章密钥管理、第 6 章生产部署结合,可将 get_client 与 get_model 的配置收口到统一配置中心或环境变量,便于多环境切换与审计。书中 6.4「国内模型适配」与 6.2「生产级部署」的交叉点即在于:国内模型选型确定后,仍要按生产级标准做网关、监控与密钥管理。
七、小结
本节基于书中第6章「国内模型适配」,系统讲解了DeepSeek的API调用、与OpenAI的兼容性、提示适配及统一封装方式。掌握base_url与model的配置,即可实现多模型切换。下一节将介绍Dify低代码平台搭建LLM应用。
九、与第 2、5 章 API 与 LangChain 的衔接
第 2 章:DeepSeek 的 messages、temperature、max_tokens 与 OpenAI 一致,2.5 多轮对话、2.7 成本与重试的写法可直接复用,仅客户端初始化不同。第 5 章 LangChain:LangChain 的 ChatOpenAI 支持通过 openai_api_base 与 model 指定 DeepSeek 等兼容端点,将本节 base_url 与 model 传入即可在 5.2 链、5.4 RAG、5.6 Agent 中使用国内模型。书中「国内用户可替换为 DeepSeek 等兼容 API 的模型」在本节与 LangChain 配置中均已可落地。与 6.6 Dify 配合时,在 Dify 的模型配置中填入 DeepSeek 的 base_url 与 Key,即可在低代码工作流中直接选用,无需改节点逻辑。
下一节预告:6.6 Dify低代码平台搭建LLM应用完整实战教程