
DeepSeek API 速成教程
带您5分钟入门并掌握DeepSeek API的使用。
1. 获取 API 密钥
要想使用DeepSeek API,必须拥有API密钥。
方法如下:
- 进入DeepSeek(DeepSeek)平台,并免费注册(用手机号或微信账号注册)。
- 找到创建 API 密钥的入口,按照指引生成属于你的 API 密钥。这个密钥是调用 API 的重要凭证,务必妥善保管,不要泄露给他人。(如下图:)
2. 安装必要的库
(1)Request模式
在 Python 环境中,你可以使用 requests
库来发送 HTTP 请求以调用 DeepSeek API。如果你的环境中还没有安装这个库,可以使用以下命令进行安装(bash):
pip install requests
(2)OpenAI SDK模式
由于DeepSeek的访问遵循OpenAI标准,因而终端可以通过OpenAI SDK发送请求来调用DeepSeek AP。如果你的环境中还没有安装这SDK,可以使用以下命令进行安装(bash):
pip install openai
3. 调用DeepSeek API
(1)Request模式
调用DeepSeek API用以实现我们需要的AI功能,是我们使用DeepSeek API的目的。以下是一个使用 Python 和 requests
库调用 DeepSeek API 进行文本生成的简单示例:
# 导入 requests 库,用于发送 HTTP 请求
import requests
# 导入 json 库,用于处理 JSON 数据
import json
# 替换为你自己的 API 密钥!!!
API_KEY = "sk-00000000000000000000000000000000"
# DeepSeek API 的请求 URL,需根据实际情况调整
API_URL = "https://api.deepseek.com/chat/completions"
# 请求的头部信息,包含 API 密钥
headers = {
# 使用 API 密钥进行身份验证
"Authorization": f"Bearer {API_KEY}",
# 指定请求的内容类型为 JSON
"Content-Type": "application/json"
}
# 请求的数据,包含聊天消息和模型参数
data = {
# 聊天消息列表
"messages": [
{
# 系统消息,用于系统身份、环境、要求等设定。
"content": "你是唐朝的诗人李白。",
# 消息的角色为系统
"role": "system"
},
{
# 用户消息,用于与模型进行交互,生成对话结果。
"content": "请做一首关于秋天的七言绝句诗。",
# 消息的角色为用户
"role": "user"
}
],
# 使用的模型名称
"model": "deepseek-chat",
# 频率惩罚参数,用于控制生成文本的多样性()
"frequency_penalty": 0,
# 最大生成的令牌数
"max_tokens": 2048,
# 存在惩罚参数,用于控制生成文本的多样性
"presence_penalty": 0,
# 响应格式,指定为文本
"response_format": {
"type": "text"
},
# 停止生成的条件,这里为 None
"stop": None,
# 是否启用流式响应,这里为 False
"stream": False,
# 流式响应的选项,这里为 None
"stream_options": None,
# 温度参数,用于控制生成文本的随机性
"temperature": 0.7,
# 核采样参数,用于控制生成文本的多样性
"top_p": 1,
# 工具列表,这里为 None
"tools": None,
# 工具选择策略,这里为 "none"
"tool_choice": "none",
# 是否返回对数概率,这里为 False
"logprobs": False,
# 返回的最高对数概率的数量,这里为 None
"top_logprobs": None
}
# 发送 POST 请求到 API 端点
response = requests.post(API_URL, headers=headers, data=json.dumps(data))
# 检查响应状态码
if response.status_code == 200:
# 将响应内容解析为 JSON 格式
result = response.json()
# 打印生成的聊天回复
print(result["choices"][0]["message"]["content"])
else:
# 打印请求失败的状态码和错误信息
print(f"请求失败,状态码: {response.status_code},错误信息: {response.text}")
执行结果如下(bash):
C:\Users\gyfin\.conda\envs\pa001\python.exe D:\pyproject\pa001\AAP01\test2.py
金风玉露染秋光,
落叶纷飞舞夕阳。
稻谷飘香人欲醉,
丰收喜悦满心房。
进程已结束,退出代码为 0
(2)OpenAI SDK模式
通过OpenAI SDK模式来调用DeepSeek API,代码如下:
# 导入 openai 库中的 OpenAI 类(使用OpenAI SDK)
from openai import OpenAI
# for backward compatibility, you can still use `https://api.deepseek.com/v1` as `base_url`.
# 创建一个 OpenAI 客户端实例,设置 API 密钥(api_key替换成你的真实的api密钥)和基础 URL
client = OpenAI(api_key="sk-000000000000000000000000", base_url="https://api.deepseek.com")
# 调用客户端的 chat.completions.create 方法,发送聊天请求
response = client.chat.completions.create(
# 指定使用的模型为 deepseek-chat
model="deepseek-chat",
# 定义聊天消息列表,包含系统消息和用户消息
messages=[
# 系统消息,设置聊天角色为唐朝诗人李白
{"role": "system", "content": "你是唐朝的诗人李白"},
# 用户消息,请求生成一首关于秋天的七言绝句诗
{"role": "user", "content": "请做一首关于秋天的七言绝句诗"},
],
# 设置生成的最大令牌数为 1024
max_tokens=1024,
# 设置温度参数为 0.7,控制生成文本的随机性
temperature=0.7,
# 设置流式响应为 False,一次性返回所有生成的文本
stream=False
)
# 打印生成的聊天回复内容
print(response.choices[0].message.content)
执行结果如下(bash):
C:\Users\gyfin\.conda\envs\pa001\python.exe D:\pyproject\pa001\AAP01\test3.py
秋风吹落黄金叶,
月照寒江映孤舟。
醉卧山林听雁过,
梦回长安忆旧游。
进程已结束,退出代码为 0
4、DeepSeek的模型
DeepSeek目前可提供的模型有两种,我们可以通过下面的程序列出DeepSeek提供给用户可使用的模型。
# 导入 openai 库中的 OpenAI 类
from openai import OpenAI
# 创建一个 OpenAI 客户端实例,设置 API 密钥和基础 URL
client = OpenAI(api_key="sk-123231ee8c3847cd8a21485fb0ee6ef8", base_url="https://api.deepseek.com")
# 调用客户端的 models.list 方法,获取所有可用的模型列表
models = client.models.list()
# 打印模型列表
print(models)
执行结果如下:
C:\Users\gyfin\.conda\envs\pa001\python.exe D:\pyproject\pa001\AAP01\test4.py
SyncPage[Model](data=[Model(id='deepseek-chat', created=None, object='model', owned_by='deepseek'), Model(id='deepseek-reasoner', created=None, object='model', owned_by='deepseek')], object='list')
进程已结束,退出代码为 0
可以看到,有两个模型(Model),它们的id分别是'deepseek-chat'、'deepseek-reasoner'。这说明DeepSeek可以提供给用户两个可用模型,如下:
- deepseek-chat
- deepseek-reasoner
5、DeepSeek API的具体应用
(1)对话补全
所谓“对话补全”,就是你说了“上句”,由DeepSeek补全“下句”。在具体应用中,你提出“问题(上句)”,由DeepSeek给出“答案(下句)”。
示例代码:
import httpx
from openai import OpenAI
# 创建一个 OpenAI 客户端对象,用于调用 DeepSeek API
# api_key 参数是你的 API 密钥,用于身份验证。要将真实的密钥替换到代码处
# base_url 参数是 DeepSeek API 的基础 URL
client = OpenAI(api_key="sk-00000000000000000000000000", base_url="https://api.deepseek.com")
try:
# 调用 DeepSeek API 进行聊天交互
response = client.chat.completions.create(
# 指定使用的模型为 deepseek-chat
model="deepseek-chat",
# 定义聊天消息列表,包含系统消息和用户消息
messages=[
# 系统消息,设置聊天机器人的角色为善于计算的人
{"role": "system", "content": "你是一个善于计算的人"},
# 用户消息,询问 12+13 的结果
{"role": "user", "content": "12+13的结果"},
],
max_tokens=100,
temperature=0.7,
stream=False
)
# 打印 API 返回的消息内容
print(response.choices[0].message.content)
except httpx.HTTPStatusError as exc:
# 捕获 HTTP 状态错误并打印错误信息
print(f"HTTP Exception for {exc.request.url} - {exc.status_code} - {exc.response.text}")
except Exception as e:
# 捕获其他异常并打印错误信息
print(f"An error occurred: {e}")
执行结果(bash):
C:\Users\gyfin\.conda\envs\pa001\python.exe D:\pyproject\pa001\AAP01\test4.py
12 + 13 的结果是 25。
进程已结束,退出代码为 0
可以看到对话的上句是“12+13的结果”,补全的下句是“12 + 13 的结果是 25”。实现了有问有答的应用。
具体在实际应用中,我们的问题会复杂得多,如下代码:
import httpx
from openai import OpenAI
# 创建一个 OpenAI 客户端对象,用于调用 DeepSeek API
# api_key 参数是你的 API 密钥,用于身份验证(要替换成真实的密钥)
# base_url 参数是 DeepSeek API 的基础 URL
client = OpenAI(api_key="sk-00000000000000000000000000000", base_url="https://api.deepseek.com")
try:
# 调用 DeepSeek API 进行聊天交互
response = client.chat.completions.create(
# 指定使用的模型为 deepseek-chat
model="deepseek-chat",
# 定义聊天消息列表,包含系统消息和用户消息
messages=[
# 系统消息,设置聊天机器人的角色为善于计算的人
{"role": "system", "content": "你是一个善于计算的人"},
# 用户消息,询问鸡兔同笼的结果
{"role": "user", "content": "在一个笼子里关着鸡和兔,从上面数有 8 个头,从下面数有 26 只脚,请问笼子里鸡和兔各有多少只?"},
],
max_tokens=1024,
temperature=0.7,
stream=False
)
# 打印 API 返回的消息内容
print(response.choices[0].message.content)
except httpx.HTTPStatusError as exc:
# 捕获 HTTP 状态错误并打印错误信息
print(f"HTTP Exception for {exc.request.url} - {exc.status_code} - {exc.response.text}")
except Exception as e:
# 捕获其他异常并打印错误信息
print(f"An error occurred: {e}")
其执行结果如下(bash):
C:\Users\gyfin\.conda\envs\pa001\python.exe D:\pyproject\pa001\AAP01\test4.py
设鸡有 \( x \) 只,兔有 \( y \) 只。
根据题意,可以列出以下两个方程:
\[
\begin{cases}
x + y = 8 \quad \text{(头的总数)} \\
2x + 4y = 26 \quad \text{(脚的总数)}
\end{cases}
\]
解这个方程组:
1. 从第一个方程中解出 \( x \):
\[
x = 8 - y
\]
2. 将 \( x = 8 - y \) 代入第二个方程:
\[
2(8 - y) + 4y = 26
\]
\[
16 - 2y + 4y = 26
\]
\[
16 + 2y = 26
\]
\[
2y = 10
\]
\[
y = 5
\]
3. 将 \( y = 5 \) 代入 \( x = 8 - y \):
\[
x = 8 - 5 = 3
\]
所以,笼子里有 \( 3 \) 只鸡和 \( 5 \) 只兔。
进程已结束,退出代码为 0
可以看得出来,对话补全绝不仅是针对简单的问题,也可以是非常复杂的问题。
(2)FIM 补全(中间填充补全)
中间填充补全的作用是:用户给出“头部”和“尾部”信息,由AI系统补全“中间”确实的部分。在实际应用中,体现为用户秒数要求的“头”和“尾”,有AI替用户完成中间的工作量。
示例代码:
import httpx
from openai import OpenAI
# 创建一个 OpenAI 客户端对象,用于调用 DeepSeek API
# api_key 参数是你的 API 密钥,用于身份验证(要替换成真实的密钥)
# base_url 参数是 DeepSeek API FIM的URL
client = OpenAI(api_key="sk-00000000000000000000000000000000000", base_url="https://api.deepseek.com/beta")
try:
# 调用 DeepSeek API 进行聊天交互
response = client.completions.create(
# 指定使用的模型为 deepseek-chat
model="deepseek-chat",
# 设置提示信息,定义一个名为 max 的函数,该函数接受三个参数 a, b, c
prompt="def max(a,b,c):",
# 设置最后的信息,函数体中返回一个名为 result 的变量
suffix=" return result",
# 设置生成的最大令牌数为 128
max_tokens=128
)
# 打印 API 返回的消息内容
print(response.choices[0].text)
except httpx.HTTPStatusError as exc:
# 捕获 HTTP 状态错误并打印错误信息
print(f"HTTP Exception for {exc.request.url} - {exc.status_code} - {exc.response.text}")
except Exception as e:
# 捕获其他异常并打印错误信息
print(f"An error occurred: {e}")
该代码演示了给定开始的“头”信息和最后的“尾”信息,由AI补全信息的例子。例子给出了头尾信息如下:
def max(a,b,c):
... ... ...
return result
省略号(... ... ...)部分是AI要去补齐的部分。
代码解释:
- 尽管模式都是“deepseek-chat”,但为了区别于“对话补全”,base_url则有所不同,base_url="https://api.deepseek.com/beta"
- 通过prompt指定“头”信息,通过“suffix”指定“尾”信息。系统则补全中间部分。
代码运行结果如下(bash):
C:\Users\gyfin\.conda\envs\pa001\python.exe D:\pyproject\pa001\test5.py
if a>b and a>c:
result=a
elif b>a and b>c:
result=b
else:
result=c
进程已结束,退出代码为 0
可以看到,按照最终结果要补上“中间部分”的信息,补齐完整后的完整代码应该为 :
def max(a,b,c):
if a>b and a>c:
result=a
elif b>a and b>c:
result=b
else:
result=c
return result
中间填充补全往往应用于文案、作文等场景,如下示例代码:
import httpx
from openai import OpenAI
# 创建一个 OpenAI 客户端对象,用于调用 DeepSeek API
# api_key 参数是你的 API 密钥,用于身份验证
# base_url 参数是 DeepSeek API 的基础 URL
client = OpenAI(api_key="sk-00000000000000000000000000", base_url="https://api.deepseek.com/beta")
try:
# 调用 DeepSeek API 进行聊天交互
response = client.completions.create(
# 指定使用的模型为 deepseek-chat
model="deepseek-chat",
# 设置提示信息,说明事情的开头
prompt="小明早上起床后,发现起晚了",
# 设置最后的信息,说明事情的结尾
suffix="他只能眼看着那班错过的飞机毫无顾忌的飞走了。",
# 设置生成的最大令牌数为 1024
max_tokens=1024
)
# 打印 API 返回的消息内容
print(response.choices[0].text)
except httpx.HTTPStatusError as exc:
# 捕获 HTTP 状态错误并打印错误信息
print(f"HTTP Exception for {exc.request.url} - {exc.status_code} - {exc.response.text}")
except Exception as e:
# 捕获其他异常并打印错误信息
print(f"An error occurred: {e}")
代码说明:
以上代码要让AI补全如下信息(省略号是要交给AI补全的部分):
小明早上起床后,发现起晚了 ... ... ... 他只能眼看着那班错过的飞机毫无顾忌的飞走了。
程序运行结果如下:
C:\Users\gyfin\.conda\envs\pa001\python.exe D:\pyproject\pa001\test5.py
,他急忙穿好衣服,冲出门去赶飞机。他一路狂奔,终于赶到了机场,却发现飞机已经起飞了。小明站在机场大厅,看着那架飞机在天空中渐行渐远,心中充满了无奈和懊悔。
进程已结束,退出代码为 0
AI对缺失的中间部分进行了补齐,如果按照给定的补齐信息,那么整段文字应该是如下这段文字:
小明早上起床后,发现起晚了,他急忙穿好衣服,冲出门去赶飞机。他一路狂奔,终于赶到了机场,却发现飞机已经起飞了。小明站在机场大厅,看着那架飞机在天空中渐行渐远,心中充满了无奈和懊悔。 他只能眼看着那班错过的飞机毫无顾忌的飞走了。
6、DeepSeek API
DeepSeek提供了强大的API,开发人员可以通过Deepseek API | DeepSeek API Docs去了解和查询具体的使用方法。
更多推荐
所有评论(0)