使用Python调用DeepSeek API的全面教程

老大白菜 2025-02-12 11:30:30编程技术
167

在当今人工智能快速发展的时代,API(应用程序编程接口)成为连接各种智能服务的重要桥梁。DeepSeek,作为一款由中国的深度求索公司开发的智能助手,其强大的自然语言处理能力和广泛的应用场景,吸引了众多开发者的关注。为了充分利用DeepSeek的潜力,掌握如何使用Python调用其API显得尤为重要。本教程将详细介绍如何使用Python语言,通过一系列步骤,实现从环境准备到API调用的全过程,帮助开发者轻松集成DeepSeek功能到自己的项目中。无论是初学者还是有经验的开发者,都能通过本教程快速上手,开启与DeepSeek的智能交互之旅。

简介

本文将详细介绍如何使用 Python 调用 DeepSeek API,实现流式对话并保存对话记录。相比 Go 版本,Python 实现更加简洁优雅,适合快速开发和原型验证。https://cloud.siliconflow.cn/i/vnCCfVaQ

1. 环境准备

1.1 依赖安装

pip install requests

1.2 项目结构

deepseek-project/
├── main.py           # 主程序
└── conversation.txt  # 对话记录文件

2. 完整代码实现

import os
import json
import time
import requests
from datetime import datetime

def save_to_file(file, content, is_question=False):
    """保存对话内容到文件"""
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    if is_question:
        file.write(f"\n[{timestamp}] Question:\n{content}\n\n[{timestamp}] Answer:\n")
    else:
        file.write(content)

def main():
    # 配置
    url = "https://api.siliconflow.cn/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_API_KEY"  # 替换为你的 API Key
    }

    # 打开文件用于保存对话
    with open("conversation.txt", "a", encoding="utf-8") as file:
        while True:
            # 获取用户输入
            question = input("\n请输入您的问题 (输入 q 退出): ").strip()
            
            if question.lower() == 'q':
                print("程序已退出")
                break

            # 保存问题
            save_to_file(file, question, is_question=True)

            # 准备请求数据
            data = {
                "model": "deepseek-ai/DeepSeek-V3",
                "messages": [
                    {
                        "role": "user",
                        "content": question
                    }
                ],
                "stream": True,
                "max_tokens": 2048,
                "temperature": 0.7,
                "top_p": 0.7,
                "top_k": 50,
                "frequency_penalty": 0.5,
                "n": 1,
                "response_format": {
                    "type": "text"
                }
            }

            try:
                # 发送流式请求
                response = requests.post(url, json=data, headers=headers, stream=True)
                response.raise_for_status()  # 检查响应状态

                # 处理流式响应
                for line in response.iter_lines():
                    if line:
                        line = line.decode('utf-8')
                        if line.startswith('data: '):
                            if line == 'data: [DONE]':
                                continue
                            
                            try:
                                content = json.loads(line[6:])  # 去掉 'data: ' 前缀
                                if content['choices'][0]['delta'].get('content'):
                                    chunk = content['choices'][0]['delta']['content']
                                    print(chunk, end='', flush=True)
                                    file.write(chunk)
                                    file.flush()
                            except json.JSONDecodeError:
                                continue

                # 添加分隔符
                print("\n----------------------------------------")
                file.write("\n----------------------------------------\n")
                file.flush()

            except requests.RequestException as e:
                error_msg = f"请求错误: {str(e)}\n"
                print(error_msg)
                file.write(error_msg)
                file.flush()

if __name__ == "__main__":
    main()

3. 代码详解

3.1 核心功能

文件记录功能

save_to_file 函数负责:

  • 生成时间戳

  • 格式化保存问题和答案

  • 自动刷新文件缓冲区

API 配置

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"  # 替换为你的 API Key
}

流式请求处理

程序使用 requests 库的流式处理功能:

  • 使用 stream=True 启用流式传输

  • 逐行处理响应数据

  • 实时显示和保存内容

3.2 配置参数说明

API 请求参数:

  • model: 使用的模型名称

  • stream: 启用流式输出

  • max_tokens: 最大输出长度 (2048)

  • temperature: 控制随机性 (0.7)

  • top_ptop_k: 采样参数

  • frequency_penalty: 重复惩罚系数

4. 错误处理

代码包含完整的错误处理机制:

  • 检查 HTTP 响应状态

  • 捕获网络异常

  • 处理 JSON 解析错误

  • 文件操作错误处理

5. 使用方法

5.1 修改配置

在代码中替换 YOUR_API_KEY 为你的实际 API Key。

5.2 运行程序

python main.py

5.3 交互方式

  • 输入问题进行对话

  • 输入 ‘q’ 退出程序

  • 查看 conversation.txt 获取对话记录

6. 性能优化建议

  1. 文件操作

    • 使用适当的缓冲区大小

    • 定期刷新文件缓冲

    • 正确关闭文件句柄

  2. 网络请求

    • 设置适当的超时

    • 使用会话(Session)复用连接

    • 处理网络异常

  3. 内存管理

    • 及时释放资源

    • 避免大量数据积累

    • 使用生成器处理流式数据

总结

通过本教程的学习,我们详细了解了如何使用Python调用DeepSeek API。从准备API Key、安装必要的Python库,到构建请求数据、发送请求并处理响应,每一个步骤都进行了详细的说明和示例。此外,我们还探讨了如何开启流式传输模式以实时获取答复,以及如何保存对话记录到文件中。通过本教程的实践,开发者可以轻松地将DeepSeek的强大功能集成到自己的项目中,实现更加智能和高效的应用。希望本教程能为你的开发之路提供有力支持,让你在人工智能的浪潮中乘风破浪,勇往直前。

Python DeepSeek API
THE END
蜜芽
故事不长,也不难讲,四字概括,毫无意义。

相关推荐

DeepSeek+Vue:打造丝滑的点击动画(Click Animations)
点击动画作为一种常见的交互效果,能够显著提升用户体验。Vue作为一款流行的前端框架,提供了丰富的功能和便捷的开发方式。而DeepSeek作为一款强大的AI工具,能够帮助开发者们...
2025-02-21 编程技术
181

保姆级教程:在Linux服务器本地部署DeepSeek-R1大模型并远程通过Web-UI访问
DeepSeek-R1作为一款高性能的大模型,能够为用户提供强大的计算能力和丰富的功能。然而,如何在Linux服务器上本地部署DeepSeek-R1大模型,并通过远程Web-UI进行访问,成为了许...
2025-02-21 编程技术
165

使用Python轻松实现彩色水印去除
随着Python编程语言在数据处理和图像分析方面的广泛应用,利用其强大的库和工具来实现彩色水印去除变得尤为可行。本文将介绍如何使用Python轻松实现彩色水印去除,通过结合图...
2025-02-21 编程技术
142

义乌老板利用DeepSeek卖空小商品,AI技术助力国际贸易
2025年,在“世界小商品之都”义乌,一场由AI技术引领的商业变革正在悄然发生。众多义乌老板正利用最新的人工智能工具——DeepSeek,将自家的小商品销往全球各地,实现了销售...
2025-02-21 新闻资讯
150

腾讯理财通升级AI能力:同时接入DeepSeek和混元大模型
腾讯理财通2月20日宣布重要升级:同时接入DeepSeek-R1模型满血版和腾讯混元大模型,标志着这家服务数亿用户的财富管理平台在AI金融服务领域迈出重要一步。本次升级后,腾讯理财...
2025-02-20 新闻资讯
154

10分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统
作为国产大语言模型的新秀,DeepSeek以其出色的中文理解能力和开放的API接口,为开发者提供了构建AI应用的新选择。在本文中,我将带领大家使用SpringBoot和Vue技术栈,快速搭...
2025-02-20 编程技术
167