问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

DeepSeek API 实现对话操作

创作时间:
作者:
@小白创作中心

DeepSeek API 实现对话操作

引用
CSDN
1.
https://m.blog.csdn.net/pigliuxu/article/details/145792942

本文将详细介绍如何在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 实现对话操作主要包括以下几个步骤:

  1. 构建请求数据:根据 DeepSeek API 的要求,将对话信息以特定的 JSON 格式组织起来。
  2. 设置请求头:在请求头中添加必要的信息,如内容类型和授权信息,以确保请求能够被正确处理。
  3. 发送 HTTP 请求:使用
    requests
    库发送 POST 请求到 DeepSeek API 的接口地址。
  4. 处理响应数据:解析 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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号