DeepSeek服务器繁忙 多种方式继续优雅的使用它

前言

你的DeepSeek最近是不是总是提示”服务器繁忙,请稍后再试。”,尝试过了多次重新生成后,还是如此。之前DeepSeek官网连续发布2条公告称,DeepSeek线上服务受到大规模恶意攻击。该平台的对话框疑似遭遇了“分布式拒绝服务攻击”(DDos),大量分布在不同地点的机器对目标进行攻击,消耗被攻击对象的网络带宽或系统资源,导致其网络或系统不胜负荷而无法提供正常的网络服务。特别对我们这种有点依赖AI审查、修改和优化代码的码农,确实很影响体验感了,所以有没有一种方法能更顺畅的使用到DeepSeek,本文提供几种思路来实现。

在这里插入图片描述

DS Api

这个是DeepSeek官方的开发平台,创建API key 后可以使用以下样例脚本的来访问 DeepSeek API。样例为非流式输出,您可以将 stream 设置为 true 来使用流式输出。

# Please install OpenAI SDK first: `pip3 install openai`

from openai import OpenAI

client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False
)

print(response.choices[0].message.content)

模型 & 价格细节如下:
在这里插入图片描述

1.deepseek-chat 模型已经升级为 DeepSeek-V3;deepseek-reasoner 模型为新模型 DeepSeek-R1。
2.思维链为deepseek-reasoner模型在给出正式回答之前的思考过程,其原理详见推理模型。
3.如未指定 max_tokens,默认最大输出长度为 4K。请调整 max_tokens 以支持更长的输出。
4.关于上下文缓存的细节,请参考DeepSeek 硬盘缓存。
5.deepseek-reasoner的输出 token 数包含了思维链和最终答案的所有 token,其计价相同。

不过这个问题是,现在(2025.02.19)它是收费的,没有免费额度,而且它暂停充值(当前服务器资源紧张,为避免对您造成业务影响,我们已暂停 API 服务充值。存量充值金额可继续调用,敬请谅解!),如果您是之前充值的还可以继续使用。
在这里插入图片描述

那么这种方式我也没进行验证,排队情况、返回速度和可用性等都不得而知。

第三方接口

这种方式是接入第三方部署的接口,直接交互,这里是B站【秋芝2046】整理的DeepSeek 第三方API调用平台:
在这里插入图片描述

这里尝试几个免费或者赠送调用次数的平台。

OpenRouter

OpenRouter的方式是注册并创建API Key的形式调用,官方推荐的openai-python代码如下:

from openai import OpenAI

client = OpenAI(
  base_url="https://openrouter.ai/api/v1",
  api_key="<OPENROUTER_API_KEY>",
)

completion = client.chat.completions.create(
  extra_headers={
    "HTTP-Referer": "<YOUR_SITE_URL>", # Optional. Site URL for rankings on openrouter.ai.
    "X-Title": "<YOUR_SITE_NAME>", # Optional. Site title for rankings on openrouter.ai.
  },
  extra_body={},
  model="deepseek/deepseek-r1:free",
  messages=[
    {
      "role": "user",
      "content": "What is the meaning of life?"
    }
  ]
)
print(completion.choices[0].message.content)

这里我给他修改为了代GUI的形式:

from openai import OpenAI
import tkinter as tk
from tkinter import scrolledtext, ttk
import threading

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="你的key"
)


class ChatApp:
    def __init__(self, root):
        self.root = root
        self.root.title("DS AI助手")
        self.messages = []
        self.generating = False
        self.stop_requested = False

        # 创建界面组件
        self.create_widgets()

    def create_widgets(self):
        # 主界面布局
        main_frame = ttk.Frame(self.root)
        main_frame.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)

        # 对话显示区域
        self.chat_display = scrolledtext.ScrolledText(
            main_frame, wrap=tk.WORD, state='disabled',
            font=('Microsoft YaHei', 10), height=20
        )
        self.chat_display.pack(fill=tk.BOTH, expand=True)

        # 控制面板
        control_frame = ttk.Frame(main_frame)
        control_frame.pack(fill=tk.X, pady=5)

        # 输入框
        self.input_box = tk.Text(
            control_frame, height=4,
            font=('Microsoft YaHei', 10), wrap=tk.WORD
        )
        self.input_box.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=(0, 5))

        # 按钮框架
        btn_frame = ttk.Frame(control_frame)
        btn_frame.pack(side=tk.RIGHT)

        # 发送按钮
        self.send_btn = ttk.Button(
            btn_frame, text="发送",
            command=self.start_generation, width=8
        )
        self.send_btn.pack(pady=2)

        # 停止按钮
        self.stop_btn = ttk.Button(
            btn_frame, text="停止",
            command=self.stop_generation, width=8, state=tk.DISABLED
        )
        self.stop_btn.pack(pady=2)

        # 绑定快捷键
        self.root.bind('<Return>', lambda e: self.start_generation())
        self.root.bind('<Shift-Return>', lambda e: self.insert_newline())

    def insert_newline(self):
        self.input_box.insert(tk.INSERT, '\n')
        return "break"

    def update_display(self, role, content):
        self.chat_display.configure(state='normal')
        tag = 'user' if role == "You" else 'assistant'
        self.chat_display.insert(tk.END, f"{role}: ", ('bold', tag))
        self.chat_display.insert(tk.END, f"{content}\n\n", tag)
        self.chat_display.configure(state='disabled')
        self.chat_display.see(tk.END)

    def start_generation(self):
        if self.generating:
            return

        user_input = self.input_box.get("1.0", tk.END).strip()
        if not user_input:
            return

        self.input_box.delete("1.0", tk.END)
        self.messages.append({"role": "user", "content": user_input})
        self.update_display("You", user_input)

        self.generating = True
        self.stop_requested = False
        self.send_btn.config(state=tk.DISABLED)
        self.stop_btn.config(state=tk.NORMAL)

        threading.Thread(target=self.generate_response, daemon=True).start()

    def stop_generation(self):
        self.stop_requested = True

    def generate_response(self):
        full_response = ""

        try:
            completion = client.chat.completions.create(
                model="deepseek/deepseek-r1:free",
                messages=self.messages,
                extra_headers={
                    "HTTP-Referer": "http://localhost",
                    "X-Title": "My Chat App"
                },
                extra_body={},
                stream=True
            )

            self.root.after(0, self.update_display, "Assistant", "")

            for chunk in completion:
                if self.stop_requested:
                    break

                if chunk.choices[0].delta.content:
                    content = chunk.choices[0].delta.content
                    full_response += content
                    self.root.after(0, self.append_response, content)

        except Exception as e:
            full_response = f"发生错误: {str(e)}"
            self.root.after(0, self.update_display, "System", full_response)

        finally:
            if not self.stop_requested and full_response:
                self.messages.append({"role": "assistant", "content": full_response})

            self.root.after(0, self.reset_ui)

    def append_response(self, content):
        self.chat_display.configure(state='normal')
        self.chat_display.insert(tk.END, content, 'assistant')
        self.chat_display.configure(state='disabled')
        self.chat_display.see(tk.END)

    def reset_ui(self):
        self.generating = False
        self.send_btn.config(state=tk.NORMAL)
        self.stop_btn.config(state=tk.DISABLED)


if __name__ == "__main__":
    root = tk.Tk()
    root.geometry("800x600")

    # 配置文本样式
    root.style = ttk.Style()
    root.style.configure('bold.TLabel', font=('Microsoft YaHei', 10, 'bold'))

    app = ChatApp(root)

    # 配置标签样式
    app.chat_display.tag_configure('bold', font=('Microsoft YaHei', 10, 'bold'))
    app.chat_display.tag_configure('user', foreground='#2c7fb8')
    app.chat_display.tag_configure('assistant', foreground='#2ca25f')
    app.chat_display.tag_configure('system', foreground='#636363')
    root.mainloop()

OpenRouter 的体验效果还不错,免费且响应还算及时:
日常回答:
在这里插入图片描述

代码检查:
在这里插入图片描述

提示词生成:
在这里插入图片描述

Nvidia

这里也进行了 英伟达API的测试,不完全免费不过送1k积分,所以可以进行尝试,它的操作也是先申请API key,然后官方给出了如下代码:

from openai import OpenAI

client = OpenAI(
  base_url = "https://integrate.api.nvidia.com/v1",
  api_key = ""
)

completion = client.chat.completions.create(
  model="deepseek-ai/deepseek-r1",
  messages=[{"role":"user","content":"Which number is larger, 9.11 or 9.8?"}],
  temperature=0.6,
  top_p=0.7,
  max_tokens=4096,
  stream=True
)

for chunk in completion:
  if chunk.choices[0].delta.content is not None:
    print(chunk.choices[0].delta.content, end="")

使用了OpenAI的客户端,调用了NVIDIA的API,模型是deepseek-r1。原来的代码里,messages是一个固定的列表,里面只有一个用户的问题:“Which number is larger, 9.11 or 9.8?”。想要让这个代码能够接受用户的输入,动态地构建对话内容。将其改为交互式输入对话的版本,一个带UI的版本,UI包括输入框、发送按钮和停止按钮。最后修改后的代码如下:

from openai import OpenAI
import tkinter as tk
from tkinter import scrolledtext, ttk
import threading

client = OpenAI(
    base_url="https://integrate.api.nvidia.com/v1",
    api_key=""  # 替换为你的实际API密钥
)


class ChatApp:
    def __init__(self, root):
        self.root = root
        self.root.title("DS AI助手")
        self.messages = []
        self.generating = False
        self.stop_requested = False

        # 创建界面组件
        self.create_widgets()

    def create_widgets(self):
        # 对话显示区域
        self.chat_display = scrolledtext.ScrolledText(
            self.root, wrap=tk.WORD, state='disabled', height=20, width=60
        )
        self.chat_display.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)

        # 输入区域框架
        input_frame = ttk.Frame(self.root)
        input_frame.pack(padx=10, pady=5, fill=tk.X)

        # 用户输入框
        self.user_input = tk.Text(input_frame, height=4, width=50)
        self.user_input.pack(side=tk.LEFT, fill=tk.X, expand=True)

        # 按钮框架
        button_frame = ttk.Frame(input_frame)
        button_frame.pack(side=tk.RIGHT, padx=5)

        # 发送按钮
        self.send_btn = ttk.Button(
            button_frame, text="发送", command=self.start_generation
        )
        self.send_btn.pack(pady=2, fill=tk.X)

        # 停止按钮
        self.stop_btn = ttk.Button(
            button_frame, text="停止", command=self.stop_generation, state='disabled'
        )
        self.stop_btn.pack(pady=2, fill=tk.X)

    def update_display(self, role, content):
        self.chat_display.configure(state='normal')
        self.chat_display.insert(tk.END, f"{role}: {content}\n\n")
        self.chat_display.configure(state='disabled')
        self.chat_display.see(tk.END)

    def start_generation(self):
        if self.generating:
            return

        user_text = self.user_input.get("1.0", tk.END).strip()
        if not user_text:
            return

        self.user_input.delete("1.0", tk.END)
        self.messages.append({"role": "user", "content": user_text})
        self.update_display("您", user_text)

        self.generating = True
        self.stop_requested = False
        self.send_btn.config(state='disabled')
        self.stop_btn.config(state='normal')

        threading.Thread(target=self.generate_response, daemon=True).start()

    def stop_generation(self):
        self.stop_requested = True

    def generate_response(self):
        full_response = ""

        try:
            completion = client.chat.completions.create(
                model="deepseek-ai/deepseek-r1",
                messages=self.messages,
                temperature=0.6,
                top_p=0.7,
                max_tokens=4096,
                stream=True
            )

            self.root.after(0, self.update_display, "AI回答", "")

            for chunk in completion:
                if self.stop_requested:
                    break

                if chunk.choices[0].delta.content:
                    content = chunk.choices[0].delta.content
                    full_response += content
                    self.root.after(0, self.append_response, content)

        except Exception as e:
            full_response = f"发生错误: {str(e)}"
            self.root.after(0, self.update_display, "System", full_response)

        finally:
            if not self.stop_requested and full_response:
                self.messages.append({"role": "assistant", "content": full_response})

            self.root.after(0, self.reset_ui)

    def append_response(self, content):
        self.chat_display.configure(state='normal')
        self.chat_display.insert(tk.END, content)
        self.chat_display.configure(state='disabled')
        self.chat_display.see(tk.END)

    def reset_ui(self):
        self.generating = False
        self.send_btn.config(state='normal')
        self.stop_btn.config(state='disabled')


if __name__ == "__main__":
    root = tk.Tk()
    app = ChatApp(root)
    root.mainloop()

英伟达api的测试就一言难难尽,刚开始问答很正常,不过后续就一直等待、要么报错:
在这里插入图片描述

后来我去网站上直接提问了两次发现,排队极其恐怖:

在这里插入图片描述
也有带队1500+的:
在这里插入图片描述

其他在线使用

目前这种方式最省事,这里是B站【秋芝2046】整理的DeepSeek 第三方在线使用平台,包含 腾讯元宝
、跃问、AskManyAI、问小白、腾讯云-大模型知识引擎、商汤大装置、支付宝百宝箱、钉钉、ima、中国移动云盘等多方平台,同时【秋芝2046】还整理了地址、收费情况、响应速度、多轮对话等详细信息。

在这里插入图片描述

这些第三方平台如果免费的话,只需要注册登录就能快速使用。
直达链接:https://ccnk05wgo092.feishu.cn/wiki/WeGmwNVgLi9SFtkfwnacu6H5nfd?table=tblfZlmGJHoAYrQe&view=vewv6xDDG2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/972751.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mpx】-环境搭建项目创建(一)

一.概述 官方文档&#xff1a;https://mpxjs.cn/guide/basic/start.html mpxjs/cli文档: https://github.com/mpx-ecology/mpx-cli 二.脚手架安装&创建项目 2.1项目创建 //脚手架安装 npm i -g mpxjs/cli //创建Mpx项目 mpx create mpx-demo(项目名称) //安装依赖 np…

【快速入门】Unity 常用组件(功能块)

欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持&#xff01;&#x1f49c;&#x1f49c; 文章目录 Unity 常用组件&#xff08;功能块&#xff09;&#xff1a;Transform - 变换&#xff1a;坐标、朝向、大小Mesh Filter - 加载网格数据Mesh Renderer- 渲染网格Camera - …

python爬虫系列课程2:如何下载Xpath Helper

python爬虫系列课程2:如何下载Xpath Helper 一、访问极简插件官网二、点击搜索按钮三、输入xpath并点击搜索四、点击推荐下载五、将下载下来的文件解压缩六、打开扩展程序界面七、将xpath.crx文件拖入扩展程序界面一、访问极简插件官网 极简插件官网地址:https://chrome.zzz…

Unity性能优化个人经验总结(不定期更新)

字符串 在使用常量或静态变量 Update、LateUpdate、FixedUpdate等每帧调用或调用频率很高的函数内使用字符串时&#xff0c;均使用常量或静态变量处理。 原因解释&#xff1a;除了常量或静态变量的字符串将会在每一次调用时&#xff0c;将会new一个新的字符串&#xff0c;导…

机器学习小项目之加利福尼亚房价数据分析

1. 安装必要的库 首先&#xff0c;确保安装了以下必要的 Python 库&#xff1a; pip install scikit-learn pandas matplotlib2. 导入所需库 在代码中&#xff0c;我们需要导入一些常用的库来处理数据、训练模型和评估结果&#xff1a; import pandas as pd import numpy a…

基于MATLAB的均匀面阵MUSIC算法DOA估计仿真

基于MATLAB的均匀面阵MUSIC算法DOA估计仿真 文章目录 前言一、二维MUSIC算法原理二、二维MUSIC算法MATLAB仿真三、MATLAB源代码总结 前言 \;\;\;\;\; 在波达角估计算法中&#xff0c;MUSIC 算法与ESPRIT算法属于特征结构子空间算法&#xff0c;是波达角估计算法中的基石。在前面…

【SQL】SQL多表查询

多表查询案例联系点击此处 &#x1f384;概念 一般我们说的多表查询都涉及外键和父子表之间的关系。比如一对多:一般前面指的是父表后面指的是子表。 ⭐分类 一对多(多对一) 多对多 一对一 ⭐一对多 &#x1f4e2;案例&#xff1a;部门与员工的关系 &#x1f4e2;关系&…

【架构】分层架构 (Layered Architecture)

一、分层模型基础理论 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0365cf0bfa754229bdedca6b472bffc7.png 1. 核心定义 分层架构(Layered Architecture)模型是一种常见的软件设计架构,它将软件系统按照功能划分为不同的层次,每个层次都有特定的职责和功能…

2025年02月19日Github流行趋势

项目名称&#xff1a;OmniParser 项目地址url&#xff1a;https://github.com/microsoft/OmniParser 项目语言&#xff1a;Jupyter Notebook 历史star数&#xff1a;12878 今日star数&#xff1a;2153 项目维护者&#xff1a;yadong-lu, ThomasDh-C, aliencaocao, nmstoker, kr…

uni-app发起网络请求的三种方式

uni.request(OBJECT) 发起网络请求 具体参数可查看官方文档uni-app data:请求的参数; header&#xff1a;设置请求的 header&#xff0c;header 中不能设置 Referer&#xff1b; method&#xff1a;请求方法&#xff1b; timeout&#xff1a;超时时间&#xff0c;单位 ms&a…

Scrapy:DownloaderAwarePriorityQueue队列设计详解

DownloaderAwarePriorityQueue 学习笔记 1. 简介 DownloaderAwarePriorityQueue 是 Scrapy 中一个高级的优先级队列实现&#xff0c;它不仅考虑请求的优先级&#xff0c;还会考虑下载器的负载情况。这个队列为每个域名&#xff08;slot&#xff09;维护独立的优先级队列&#…

用DeepSeek零基础预测《哪吒之魔童闹海》票房——从数据爬取到模型实战

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 **一、为什么要预测票房&#xff1f;****二、准备工作****三、实战步骤详解****Step 1&#xff1a;数据爬取与清洗&am…

django连接mysql数据库

1.下载mysqlclient第三方库 2.在settings.py里连接数据库&#xff08;提前建好&#xff09; DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: 学生信息,USER: root,PASSWORD: 999123457,HOST: localhost,POST: 3306,} } 3.在models.py里创建一个类&#xff0…

Linux中的Ctrl+C与Ctrl+Z

CtrlC与CtrlZ的区别 在Linux中&#xff0c;当我们在执行一个命令运行代码时&#xff0c;由于运行时间过长或中途出现报错&#xff0c;此时&#xff0c;我们可能需要终止该操作&#xff0c;这时候&#xff0c;该使用CtrlC还是CtrlZ呢&#xff1f; 1、CtrlC CtrlC&#xff1a;终…

新手向:SpringBoot后端查询到数据,前端404?(附联调时各传参方式注解总结-带你一文搞定联调参数)

前言&#xff1a; 在 Spring Boot 项目开发中&#xff0c;后端小伙伴可能经常遇到这样诡异的场景&#xff1a; 后台日志显示查询到了数据&#xff0c;但前端却一脸懵逼地告诉你 404 Not Found&#xff1f;接口明明写好了&#xff0c;Postman 直接访问却提示找不到&#xff1f…

网络安全重点总结

第一章 网络安全基础 信息安全的三个目标 1.保密性 2. 完整性 3. 可用性 4. 合法使用网络安全的发展态势&#xff1a; 1. 计算机病毒层出不穷 2. 黑客对全球网络的恶意攻击石头逐年上升 3. 由于技术不完备&#xff0c;导致系统催在缺陷&#xff0c;漏洞 4. 世界各国军方在加紧…

电解电容的参数指标

容量 这个值通常是室温25℃&#xff0c;在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压&#xff0c;通常要求降额使用。 例如额定电压是4V&#xff0c;降额到70%使用&#xff0c;最高施…

百问网(100ask)的IMX6ULL开发板的以太网控制器(MAC)与物理层(PHY)芯片(LAN8720A)连接的原理图分析(包含各引脚说明以及工作原理)

前言 本博文承接博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 。 本博文和博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 的目录是找出百问网(100ask)的IMX6ULL开发板与NXP官方提供的公板MCIMX6ULL-EVK(imx6ull14x14evk)在以太网硬件…

python入门笔记4

Python 中的列表&#xff08;List&#xff09;是 有序、可变 的序列类型&#xff0c;用方括号 [] 定义。以下是列表的核心语法和常用操作&#xff1a; list1 [Google, W3Cschool, 1997, 2000] list2 [7, 2, 3, 4, 5, 6, 1 ] #索引操作 print ("list1 first: ", li…

玩转SpringCloud Stream

背景及痛点 现如今消息中间件(MQ)在互联网项目中被广泛的应用&#xff0c;特别是大数据行业应用的特别的多&#xff0c;现在市面上也流行这多个消息中间件框架&#xff0c;比如ActiveMQ、RabbitMQ、RocketMQ、Kafka等&#xff0c;这些消息中间件各有各的优劣&#xff0c;但是想…