目录
最近在休息的时候也是一直会刷到关于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 OpenAI client = 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)
当然,在这个基础上的代码还是不够完善的,还需要进一步进行提示和自行更改,直到代码符合自己的需求.
通过AI编写代码,然后自己手工改进错误,当然,在这个基础上还可以进行进一步的改进.
2.4 AI助手工具代码
# -*- coding: UTF-8 -*- import tkinter as tk from tkinter import ttk, scrolledtext, messagebox import threading import requests import json import clipboard class DeepSeekAssistant: def __init__(self, root): self.root = root self.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("输入为空", "请输入您的问题") return self.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: pass root.mainloop()
三, 配置方面的说明
3.1 token价格和字符用量
对于我们开发者或者学生来说,价格决定我们会不会继续使用,简介介绍一下Deepseek API方面
百万token只需要16快,方便使用,而且也不贵
3.2 响应错误码
原文链接:https://blog.csdn.net/weixin_72543266/article/details/145481907?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522c2efefe7028a8aa23f30a2fa6a647e2c%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=c2efefe7028a8aa23f30a2fa6a647e2c&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-9-145481907-null-null.nonecase&utm_term=deepseek%E4%BD%BF%E7%94%A8