DeepSeek API 实现对话操作
DeepSeek API 实现对话操作
本文将详细介绍如何在Ubuntu 20.04系统上使用Python 3.8环境调用DeepSeek API实现对话操作。文章内容包括系统环境准备、虚拟环境创建、API密钥获取以及具体的代码实现等步骤,内容完整且具有较强的实用性。
一、前言
DeepSeek 作为一款表现卓越的大语言模型,为开发者提供了 API 接口,使得开发者能够将其集成到各类应用程序中,实现诸如对话系统、文本生成等功能。本文将详细介绍如何在 Ubuntu 20.04 系统的默认 Python 3.8 环境下,完成开发环境的搭建,并调用 DeepSeek API 实现一个简单的对话操作。
二、Ubuntu 20.04 系统基础准备
2.1 系统更新
在开展开发工作之前,首先要确保 Ubuntu 20.04 系统的软件包是最新的。这可以通过更新软件包列表并升级已安装的软件包来实现。打开终端,执行以下命令:
sudo apt update
sudo apt upgrade -y
sudo apt update
:该命令会从软件源服务器获取最新的软件包列表信息,让系统知晓有哪些软件包可以更新。sudo apt upgrade -y
:此命令会将系统中已安装的软件包升级到最新版本。-y
选项的作用是自动确认所有提示,避免在升级过程中需要手动干预。
2.2 确认 Python 3.8 环境
Ubuntu 20.04 系统默认预装了 Python 3.8。为了确认 Python 3.8 是否已经正确安装以及其版本信息,可以在终端中执行以下命令:
python3.8 --version
如果输出结果显示为 Python 3.8 的版本号,例如
Python 3.8.10
,则表明 Python 3.8 已经成功安装在系统中。
三、创建虚拟环境
为了避免不同项目之间的依赖冲突,我们使用 Python 的虚拟环境来管理项目的依赖。虚拟环境可以为每个项目提供独立的 Python 环境和依赖库,使得项目之间相互隔离。
3.1 创建虚拟环境
在终端中,进入你想要创建项目的目录,然后执行以下命令创建一个名为
deepseek_venv
的虚拟环境:
python3.8 -m venv deepseek_venv
这行命令使用 Python 3.8 的
venv
模块创建了一个虚拟环境。-m
选项表示将
venv
作为一个模块来运行。
3.2 激活虚拟环境
创建好虚拟环境后,需要激活它才能使用。在终端中执行以下命令激活虚拟环境:
source deepseek_venv/bin/activate
激活虚拟环境后,终端的提示符会显示虚拟环境的名称,例如
(deepseek_venv)
,这表明你已经成功进入了虚拟环境。
3.3 退出虚拟环境
当你完成开发工作,需要退出虚拟环境时,只需在终端中执行以下命令:
deactivate
四、安装必要的 Python 库
在激活的虚拟环境中,我们需要安装
requests
库来发送 HTTP 请求。
requests
是一个常用的 Python 库,它提供了简洁易用的 API 来处理 HTTP 请求。执行以下命令安装
requests
库:
pip install requests
同时,为了确保
pip
工具是最新版本,建议执行以下命令更新
pip
:
pip install --upgrade pip
五、获取 DeepSeek API 密钥
要使用 DeepSeek API,你需要获取 API 密钥。以下是获取 API 密钥的详细步骤:
5.1 注册 DeepSeek 账号
访问 DeepSeek 的官方网站,按照网站的指引完成注册流程。在注册过程中,你可能需要提供一些基本信息,如邮箱地址、用户名等。注册完成后,使用注册的账号登录到 DeepSeek 平台。
5.2 申请 API 密钥
登录 DeepSeek 账号后,找到 API 密钥申请的入口。通常这个入口会在账户设置或者开发者中心的相关页面。按照页面上的要求填写申请信息,例如申请用途、使用场景等。提交申请后,等待审核。审核通过后,你将获得一个 API 密钥。
5.3 安全存储 API 密钥
为了保证 API 密钥的安全,不要将其直接硬编码在代码中。可以将其存储在环境变量中。在终端中执行以下命令设置环境变量:
export DEEPSEEK_API_KEY="your_api_key"
将
"your_api_key"
替换为你实际获得的 API 密钥。为了使环境变量在每次启动终端时都能自动设置,可以将上述命令添加到
~/.bashrc
或
~/.bash_profile
文件中。打开相应的文件,例如使用以下命令打开
~/.bashrc
文件:
nano ~/.bashrc
在文件末尾添加上述设置环境变量的命令,然后按下
Ctrl + X
组合键,再按下
Y
键确认保存,最后按下
Enter
键退出编辑器。
六、DeepSeek API 调用流程概述
调用 DeepSeek API 实现对话操作主要包括以下几个步骤:
- 构建请求数据:根据 DeepSeek API 的要求,将对话信息以特定的 JSON 格式组织起来。
- 设置请求头:在请求头中添加必要的信息,如内容类型和授权信息,以确保请求能够被正确处理。
- 发送 HTTP 请求:使用
requests
库发送 POST 请求到 DeepSeek API 的接口地址。 - 处理响应数据:解析 API 返回的响应数据,提取出我们需要的对话结果。
七、示例代码实现
7.1 代码示例
以下是一个完整的 Python 代码示例,用于调用 DeepSeek API 实现简单的对话操作:
import requests
import os
# 获取 API 密钥
API_KEY = os.getenv('DEEPSEEK_API_KEY')
if not API_KEY:
raise ValueError("未找到 DEEPSEEK_API_KEY 环境变量,请设置该环境变量。")
# DeepSeek API 的接口地址
API_URL = "https://api.deepseek.com/v1/chat/completions"
def generate_response(prompt):
# 构建请求数据
payload = {
"model": "deepseek-chat",
"messages": [
{"role": "user", "content": prompt}
]
}
# 设置请求头
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
try:
# 发送 POST 请求
response = requests.post(API_URL, headers=headers, json=payload)
# 检查响应状态码
if response.status_code == 200:
# 解析响应数据
result = response.json()
# 提取对话结果
message = result["choices"][0]["message"]["content"]
return message
else:
print(f"请求失败,状态码: {response.status_code},错误信息: {response.text}")
return None
except requests.RequestException as e:
print(f"请求发生错误: {e}")
return None
if __name__ == "__main__":
while True:
# 获取用户输入
user_input = input("你: ")
if user_input.lower() == "退出":
break
# 调用 API 生成响应
response = generate_response(user_input)
if response:
print(f"DeepSeek: {response}")
7.2 代码解释
7.2.1 导入必要的库
import requests
import os
- requests
库:用于发送 HTTP 请求,方便与 DeepSeek API 进行通信。 - os
库:用于获取环境变量,确保 API 密钥的安全使用。
7.2.2 获取 API 密钥
API_KEY = os.getenv('DEEPSEEK_API_KEY')
if not API_KEY:
raise ValueError("未找到 DEEPSEEK_API_KEY 环境变量,请设置该环境变量。")
使用
os.getenv
函数从环境变量中获取 API 密钥。如果未找到该环境变量,抛出
ValueError
异常,提醒用户设置环境变量。
7.2.3 设置 API 地址
API_URL = "https://api.deepseek.com/v1/chat/completions"
API_URL
是 DeepSeek API 的接口地址,用于处理对话请求。
7.2.4 定义
generate_response
函数
def generate_response(prompt):
# 构建请求数据
payload = {
"model": "deepseek-chat",
"messages": [
{"role": "user", "content": prompt}
]
}
# 设置请求头
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}
try:
# 发送 POST 请求
response = requests.post(API_URL, headers=headers, json=payload)
# 检查响应状态码
if response.status_code == 200:
# 解析响应数据
result = response.json()
# 提取对话结果
message = result["choices"][0]["message"]["content"]
return message
else:
print(f"请求失败,状态码: {response.status_code},错误信息: {response.text}")
return None
except requests.RequestException as e:
print(f"请求发生错误: {e}")
return None
- 构建请求数据:
payload
是一个字典,包含了调用 API 所需的信息。
"model"
指定了要使用的模型,这里使用
"deepseek-chat"
;
"messages"
是一个列表,包含了对话的信息,其中
"role": "user"
表示这是用户的输入,
"content"
是用户的具体输入内容。 - 设置请求头:
headers
中包含了请求的内容类型和授权信息,授权信息使用
Bearer
令牌,后面跟着 API 密钥。 - 发送 POST 请求:使用
requests.post
方法发送请求,将请求头和请求数据传递给该方法。 - 处理响应数据:检查响应的状态码,如果状态码为 200,表示请求成功,解析响应的 JSON 数据,提取对话结果并返回;否则,打印错误信息并返回
None
。如果请求过程中发生异常,捕获异常并打印错误信息。
7.2.5 主程序
if __name__ == "__main__":
while True:
# 获取用户输入
user_input = input("你: ")
if user_input.lower() == "退出":
break
# 调用 API 生成响应
response = generate_response(user_input)
if response:
print(f"DeepSeek: {response}")
在主程序中,使用一个无限循环不断获取用户的输入,当用户输入 “退出” 时,退出循环。对于用户的其他输入,调用
generate_response
函数生成响应,并将响应结果打印输出。
7.3 测试
python test.py