如何通过Deepseek的API进行开发和使用(适合开发者和小白的学习使用教程)

news/2025/2/10 21:16:44/

        

目录

一,API创建与获取

二,直接进行API的调用 

2.1 安装第三方库

2.2 官方支持的接口调用方式

2.3 编写的小tips

2.4 AI助手工具代码 

三, 配置方面的说明 

3.1 token价格和字符用量

3.2 响应错误码

 


    最近在休息的时候也是一直会刷到关于deepseek,简单使用了一下,发现这个AI和以往使用过的有很大的不同,起码在我看来有了人性,今天突然发现官方开放了API,赶紧来玩一下,通过deepseek今后可以极大的提高开发工具的效率.

一, API创建与获取

API文档官网:

https://platform.deepseek.com/

        直接微信扫码登录即可,我是因为电脑登录着微信,直接快捷登录了,首次登录国内用户会有10CNY的额度赠送,当然如果不能注册的话可以挂个梯子微信会改为谷歌登录,用谷歌邮箱登录就可以了,只是没有免费额度,还挺亏的.

接下来点击旁边的API keys 

点击创建API keys,会提示输入名称,输入key的名称后点击复制即可

此时点击复制即可,记住如果关闭后,是无法再次看到这个key的

         请将此 API key 保存在安全且易于访问的地方。出于安全原因,你将无法通过 API keys 管理界面再次查看它。如果你丟失了这个 key,将需要重新创建。

         此时只能,修改key的名称和删除key,无法看到秘钥了

二, 直接进行API的调用 

2.1 安装第三方库

可以在命令行,也可以使用pyCharm等进行安装

pip3 install openai

 如果用命令行的话,出现Successfully说明安装成功

2.2 官方支持的接口调用方式

   这里我比较习惯使用Python,就用个示例简单做个示范,调用起来根据要写的东西,响应回来的时间也会不同,我这个也就半分钟作用

# -*- coding: UTF-8 -*-
from openai import OpenAIclient = OpenAI(api_key="填写自己的key", base_url="https://api.deepseek.com")response = client.chat.completions.create(model="deepseek-reasoner",messages=[{"role": "system", "content": "你是一个GUI工具研发工程师"},{"role": "user", "content": "帮我用Python写一个GUI界面的小助手,并且对接DeepSeek,给合适的提示词,用户会输入它所需要提问的信息,你做出回答,并响应到返回区,""并且响应区的信息进行复制,python的洁面一定要美观科技感,你可以在这个基础上帮我完善一下这个想法,并生成代码"},],stream=False
)print(response.choices[0].message.content)

   当然,在这个基础上的代码还是不够完善的,还需要进一步进行提示和自行更改,直到代码符合自己的需求.

2.3 编写的小tips

        通过AI编写代码,然后自己手工改进错误,当然,在这个基础上还可以进行进一步的改进.

2.4 AI助手工具代码 

# -*- coding: UTF-8 -*-
import tkinter as tk
from tkinter import ttk, scrolledtext, messagebox
import threading
import requests
import json
import clipboardclass DeepSeekAssistant:def __init__(self, root):self.root = rootself.root.title("DeepSeek AI 助手")self.root.geometry("800x600")self.root.configure(bg='#1a1a1a')self.style = ttk.Style()self.style.theme_use('clam')# 自定义颜色方案self.style.configure('TFrame', background='#1a1a1a')self.style.configure('TLabel', background='#1a1a1a', foreground='#00ff99')self.style.configure('TButton', background='#2d2d2d', foreground='white',font=('Helvetica', 10, 'bold'), borderwidth=1)self.style.map('TButton',background=[('active', '#3d3d3d'), ('pressed', '#4d4d4d')])self.create_widgets()self.api_key = "xxxxxxxxxxxxxx你的api秘钥"  # 替换为你的API密钥self.api_url = "https://api.deepseek.com/chat/completions"def create_widgets(self):# 头部header_frame = ttk.Frame(self.root)header_frame.pack(pady=10)self.logo_label = ttk.Label(header_frame,text="DeepSeek AI",font=('Arial', 18, 'bold'),foreground='#00ff99')self.logo_label.pack(side=tk.LEFT, padx=10)# 主内容区main_frame = ttk.Frame(self.root)main_frame.pack(fill=tk.BOTH, expand=True, padx=20, pady=10)# 输入区input_frame = ttk.Frame(main_frame)input_frame.pack(fill=tk.X, pady=5)self.input_entry = ttk.Entry(input_frame,font=('Arial', 12),foreground='black',background='#2d2d2d')self.input_entry.pack(side=tk.LEFT, fill=tk.X, expand=True, ipady=5)self.input_entry.bind("<Return>", lambda event: self.send_query())self.send_btn = ttk.Button(input_frame,text="发送",command=self.send_query)self.send_btn.pack(side=tk.LEFT, padx=5)# 响应区self.response_area = scrolledtext.ScrolledText(main_frame,wrap=tk.WORD,font=('Arial', 11),bg='#2d2d2d',fg='white',insertbackground='white')self.response_area.pack(fill=tk.BOTH, expand=True)self.response_area.tag_config('user', foreground='#00ff99')self.response_area.tag_config('assistant', foreground='white')# 右键菜单self.context_menu = tk.Menu(self.root, tearoff=0)self.context_menu.add_command(label="复制", command=self.copy_text)self.response_area.bind("<Button-3>", self.show_context_menu)def show_context_menu(self, event):self.context_menu.tk_popup(event.x_root, event.y_root)def copy_text(self):selected = self.response_area.get(tk.SEL_FIRST, tk.SEL_LAST)if selected:clipboard.copy(selected)def send_query(self):user_input = self.input_entry.get().strip()if not user_input:messagebox.showwarning("输入为空", "请输入您的问题")returnself.input_entry.delete(0, tk.END)self._append_message(f"你:{user_input}\n", 'user')threading.Thread(target=self._get_response, args=(user_input,)).start()def _append_message(self, message, tag):self.response_area.configure(state='normal')self.response_area.insert(tk.END, message, tag)self.response_area.configure(state='disabled')self.response_area.see(tk.END)def _get_response(self, prompt):headers = {"Authorization": f"Bearer {self.api_key}","Content-Type": "application/json"}data = {"model": "deepseek-chat","messages": [{"role": "user", "content": prompt}],"temperature": 0.7}try:response = requests.post(self.api_url, headers=headers, json=data)response.raise_for_status()result = response.json()answer = result['choices'][0]['message']['content']self._update_response_area(f"助手:{answer}\n\n", 'assistant')except Exception as e:error_msg = f"错误:{str(e)}"self._update_response_area(error_msg + "\n\n", 'assistant')def _update_response_area(self, text, tag):self.root.after(0, lambda: self._append_message(text, tag))if __name__ == "__main__":root = tk.Tk()app = DeepSeekAssistant(root)# 设置窗口图标(准备一个ico文件)try:root.iconbitmap('tools.ico')  # 需要准备图标文件except:passroot.mainloop()

三, 配置方面的说明 

3.1 token价格和字符用量

        对于我们开发者或者学生来说,价格决定我们会不会继续使用,简介介绍一下Deepseek API方面

百万token只需要16快,方便使用,而且也不贵

3.2 响应错误码


http://www.ppmy.cn/news/1570960.html

相关文章

Spring JDBC模块解析 -深入SqlParameterSource

在前面的博客中&#xff0c;我们探讨了Spring Data Access Module中的主要组件&#xff1a; JdbcTemplate和SimpleJdbcInsert。在这两部分的基础上&#xff0c;我们将继续探讨更详细 的用法&#xff0c;包括如何使用RowMapper和SqlParameterSource等高级主题。 JdbcTemplate …

Vue2常用指令

一、指令基础概念 在 Vue2 里&#xff0c;指令是带有 v- 前缀的特殊属性。它的主要作用是当表达式的值发生变化时&#xff0c;会相应地将某些特殊的行为应用到 DOM 上。简单来说&#xff0c;指令就是 Vue 提供的一种便捷语法&#xff0c;让我们可以更轻松地操作 DOM 和实现业务…

【翻译+论文阅读】DeepSeek-R1评测:粉碎GPT-4和Claude 3.5的开源AI革命

目录 一、DeepSeek-R1 势不可挡二、DeepSeek-R1 卓越之处三、DeepSeek-R1 创新设计四、DeepSeek-R1 进化之路1. 强化学习RL代替监督微调学习SFL2. Aha Moment “啊哈”时刻3. 蒸馏版本仅采用SFT4. 未来研究计划 部分内容有拓展&#xff0c;部分内容有删除&#xff0c;与原文会有…

Unity3D开发之2019.4.5f1版本IPointerClickHandler Bug

实际代码测试ui物体挂载的脚本里&#xff1a; 如果实现IPointerDownHandler和IPointerClickHandler接口&#xff0c;则会触发OnPointerClick和OnPointerDown函数调用。如果只实现IPointerClickHandler接口&#xff0c;则不会触发OnPointerClick函数调用。如果只实现IPointerDo…

Spring Boot中使用MockMvc测试PATCH请求控制器

在Spring Boot项目中&#xff0c;对控制器进行单元测试是确保代码质量和功能正确性的重要环节。本文将通过一个具体的例子&#xff0c;展示如何使用Spring的MockMvc框架来测试处理PATCH请求的控制器。 示例项目结构 假设我们有一个简单的Spring Boot项目&#xff0c;其中包含一…

采用gitlab的package registry 方式 通过api 上传发布包,解决git命令拉取大文件异常退出问题

一、gitlab的package registry&#xff0c;解决git命令拉取大文件异常退出问题&#xff0c;上传文件命令可以按照&#xff1a; 1# 88-gongyin_publish群组下项目publish_file的ID【固定】 2# sit -定义哪个环境的介质 如集成测试环境 or 生产 prod【流水线入参】 3#20250205-定…

【python】简单的flask做页面。一组字母组成的所有单词。这里的输入是一组字母,而输出是所有可能得字母组成的单词列表

目录结构如下&#xff1a; https://github.com/kaede316/Pythons_pj.git 效果&#xff1a; 后续可扩展为工具网站&#xff1a; 更新 2025.02.09 1、增加等间距制作人 时间信息 2、增加判断润年的功能

Linux网络编程6——UDP通信

一.UDP通信 1.TCP通信和UDP通信各自的优缺点 TCP&#xff1a; 面向连接的&#xff0c;可靠数据包传输。对于不稳定的网络层&#xff0c;采取完全弥补的通信方式。 丢包重传。​ 优点&#xff1a; ​ 稳定。 ​ 数据流量稳定、速度稳定、顺序 ​ 缺点&#xff1a; ​ 传…