DeepSeek API 使用教程:接口调用与开发实践
介绍
DeepSeek API 提供了访问其强大 AI 模型的能力,包括用于自然语言处理的聊天补全和推理功能。本教程将引导您完成获取 API 密钥、设置开发环境以及使用 Python 进行首次 API 调用的过程。
1. 获取 DeepSeek API Key
要与 DeepSeek API 交互,您需要一个 API 密钥进行身份验证。您有两种主要选择:
- DeepSeek 平台: 直接在 DeepSeek 官方平台
https://platform.deepseek.com/注册并生成 API 密钥。请注意,使用官方平台通常需要充值才能使用 API。 - OpenRouter: OpenRouter (
https://www.openrouter.ai) 提供了一个与 OpenAI 兼容的 API 端点,并且通常提供 DeepSeek API 的免费使用层级,这使其成为测试和开发的好选择。
获取 API 密钥的步骤(以 OpenRouter 为例):
- 访问 OpenRouter 网站:
https://www.openrouter.ai。 - 注册或登录您的账户。
- 导航到仪表板的 API 部分。
- 点击“Create Key”生成一个独特的 API 密钥。
- 安全地复制并保存此 API 密钥。 它充当您 API 访问的密码,绝不应公开或提交到版本控制中。
2. 开发环境设置
本教程将使用 Python。请确保您已安装 Python(建议使用 3.8+ 版本)。
您需要安装一个库来发出 HTTP 请求。我们将演示如何使用 requests 库(用于直接 HTTP 调用)和 openai 库(因为 DeepSeek 兼容 OpenAI)。
安装必要的库:
bash
pip install requests openai
3. 首次 API 调用
DeepSeek API 在很大程度上与 OpenAI API 格式兼容。DeepSeek 官方 API 的基本 URL 是 https://api.deepseek.com,并且在 https://api.deepseek.com/v1 处提供了一个与 OpenAI 兼容的端点。
3.1 使用 requests 库
这种方法涉及手动构建 HTTP 请求。
“`python
import requests
import os
替换为您的实际 API 密钥。最佳实践是从环境变量加载。
DEEPSEEK_API_KEY = os.getenv(“DEEPSEEK_API_KEY”, “YOUR_DEEPSEEK_API_KEY”)
DeepSeek API 基本 URL (OpenAI 兼容端点)
BASE_URL = “https://api.deepseek.com/v1/chat/completions”
headers = {
“Content-Type”: “application/json”,
“Authorization”: f”Bearer {DEEPSEEK_API_KEY}”
}
聊天补全的请求体
data = {
“model”: “deepseek-chat”, # 使用 ‘deepseek-chat’ 用于 V3 或 ‘deepseek-reasoner’ 用于 R1
“messages”: [
{“role”: “system”, “content”: “你是一个乐于助人的助手。”},
{“role”: “user”, “content”: “法国的首都是哪里?”}
],
“temperature”: 0.7,
“max_tokens”: 50,
“stream”: False # 设置为 True 可获取流式响应
}
try:
response = requests.post(BASE_URL, headers=headers, json=data)
response.raise_for_status() # 对 HTTP 错误 (4xx 或 5xx) 抛出异常
result = response.json()
print("DeepSeek API 响应 (requests 库):")
print(result['choices'][0]['message']['content'])
except requests.exceptions.RequestException as e:
print(f”发生错误: {e}”)
if response is not None:
print(f”响应状态码: {response.status_code}”)
print(f”响应体: {response.text}”)
“`
3.2 使用 openai 库
由于 DeepSeek 的 API 与 OpenAI 兼容,您可以通过指定 base_url 来使用 openai Python 客户端。
“`python
from openai import OpenAI
import os
替换为您的实际 API 密钥。最佳实践是从环境变量加载。
DEEPSEEK_API_KEY = os.getenv(“DEEPSEEK_API_KEY”, “YOUR_DEEPSEEK_API_KEY”)
使用 DeepSeek 的基本 URL 初始化 OpenAI 客户端
client = OpenAI(
api_key=DEEPSEEK_API_KEY,
base_url=”https://api.deepseek.com/v1″
)
try:
response = client.chat.completions.create(
model=”deepseek-chat”, # 使用 ‘deepseek-chat’ 用于 V3 或 ‘deepseek-reasoner’ 用于 R1
messages=[
{“role”: “system”, “content”: “你是一个乐于助人的助手。”},
{“role”: “user”, “content”: “告诉我一个关于海洋的有趣事实。”}
],
temperature=0.7,
max_tokens”: 60,
stream”: False # 设置为 True 可获取流式响应
)
print("\nDeepSeek API 响应 (openai 库):")
print(response.choices[0].message.content)
except Exception as e:
print(f”发生错误: {e}”)
“`
4. 理解关键参数
model:指定要使用的 DeepSeek 模型。deepseek-chat:最新的聊天模型 (DeepSeek-V3.2),用于通用对话任务。deepseek-reasoner:推理模型 (DeepSeek-R1),专为更深入的分析和思维链生成而设计。
messages:一个消息对象数组,每个对象都包含一个role(例如,“system”、“user”、“assistant”)和content。此数组构成对话历史。temperature:控制输出的随机性。较低的值(例如 0.2)使输出更具确定性,而较高的值(例如 0.9)使其更具创造性和多样性。max_tokens:模型在其响应中应生成的最大标记数(单词或子单词)。stream:如果设置为True,API 将在生成部分消息增量时发送它们,从而提供更具交互性的用户体验。如果为False,API 会等到整个响应生成完毕后才发送。
5. 处理多轮对话
DeepSeek API 是无状态的,这意味着每个请求都是独立的。为了在多轮对话(如聊天机器人)中保持上下文,您必须在每个新请求中发送整个对话历史记录到 messages 数组中。
“`python
… (API 密钥和客户端的先前设置) …
conversation_history = [
{“role”: “system”, “content”: “你是一个乐于助人的助手。”},
{“role”: “user”, “content”: “日本的首都是哪里?”}
]
try:
# 第一轮
response1 = client.chat.completions.create(
model=”deepseek-chat”,
messages=conversation_history,
max_tokens=20
)
assistant_reply1 = response1.choices[0].message.content
print(f”助手: {assistant_reply1}”)
# 将助手的回复添加到历史记录中
conversation_history.append({"role": "assistant", "content": assistant_reply1})
# 添加新的用户消息
conversation_history.append({"role": "user", "content": "那它最大的城市是哪里?"})
# 第二轮,发送完整历史记录
response2 = client.chat.completions.create(
model="deepseek-chat",
messages=conversation_history,
max_tokens=30
)
assistant_reply2 = response2.choices[0].message.content
print(f"助手: {assistant_reply2}")
except Exception as e:
print(f”多轮对话期间发生错误: {e}”)
“`
6. 最佳实践
- 保护您的 API 密钥: 绝不要将您的 API 密钥直接硬编码到您的代码中。使用环境变量或安全的配置管理系统。
- 错误处理: 实施健壮的错误处理机制,以优雅地管理 API 错误、网络问题和意外响应。
- 监控使用情况: 跟踪您的 API 使用情况和成本,特别是当您处于付费层级时。
- 优化提示词: 编写清晰简洁的提示词,以从模型中获得最佳结果。
- 上下文管理: 对于长对话,考虑采用摘要或截断旧消息的策略,以保持在标记限制内并管理成本。