基于大模型 API 构建本地化个人 AI 助理
介绍如何利用大模型 API 开发本地化个人 AI 助理。首先明确需求与配置环境,获取 API 密钥并选择合适模型。接着通过 HTTP 请求调用 API,结合 Python 的 Tkinter 库构建图形界面,实现多轮对话交互。最终完成一个支持隐私保护的智能助手应用,降低使用成本并提供便捷的交互体验。

介绍如何利用大模型 API 开发本地化个人 AI 助理。首先明确需求与配置环境,获取 API 密钥并选择合适模型。接着通过 HTTP 请求调用 API,结合 Python 的 Tkinter 库构建图形界面,实现多轮对话交互。最终完成一个支持隐私保护的智能助手应用,降低使用成本并提供便捷的交互体验。

大数据时代,个人隐私很难得到保障,如果我们需要借助大模型解决一些私人问题,又不想隐私被泄露和所用的大模型公司收集,这里我提供一个解决方案:调用大模型的 API 实现一个本地化个人 ai 助理帮助我们解决问题,这是一个很好的解决办法。本次实验主要是借助 MaaS 平台来调用大模型 API,打造专属的 AI 助理。
在开始动手实验之前,我们首先要明确我们的需求和进行环境配置。不清楚需求,干起活就会没有清晰的思路,没有好环境,就没有办法实现我们的 AI 助理。
注册平台账号
如果还未拥有平台账号的小伙伴,需前往平台官网注册一下账号。
获取 API 密钥
成功登录平台后,找到'API KEY 管理'选项,点击'创建 API KEY'平台将为你生成一串唯一的 API 密钥。这串密钥是你调用平台 API 的重要凭证,务必妥善保管,切勿向他人透露,以免造成安全风险。
平台提供了多种大模型供选择,如 DeepSeek - R1、DeepSeek - V3、QwQ - 32B 等。
每个模型在自然语言处理、图像识别、代码生成等方面各有专长。鉴于我们打造个人 AI 助理主要用于处理文本类的私人问题,在自然语言处理方面表现卓越的 DeepSeek - R1 模型是不错的选择。它具备强大的语义理解能力,能深入剖析我们输入的问题,并生成高质量的回答。
在平台的模型介绍页面,我们可详细了解各模型的特点、适用场景以及调用价格,综合评估后确定符合自身需求的模型。
考虑到有些读者可能不了解 MaaS 平台究竟是什么,这里做简单介绍。
MaaS 平台即'模型即服务'(Model as a Service)平台,是一种依托云计算的人工智能服务模式。模型即服务(MaaS)平台面向企业开发者、创业者及非技术背景用户,提供开箱即用的热门 AI 模型服务,支持零代码体验、API 快速集成与灵活计费,降低 AI 应用开发门槛,加速业务创新。允许用户通过 API 接口或其他方式访问和使用预先训练好的机器学习模型,无需自己从头开始训练模型,使得即使没有深厚机器学习背景的用户也能享受到高水平的 AI 技术支持。
平台也支持各种文本、图像、视频大模型的选择。
也可以在体验中心,直接体验模型。
完成上述需求分析与环境配置后,接下来进入更关键的 API 调用与功能实现环节。
大模型 API 是大模型对外提供服务的接口。通过 API,开发者不需要了解大模型复杂的内部结构和运行机制,就能将大模型强大的功能集成到自己的应用、系统中。同时我们也可以调用大模型的 API 对模型进行微调、推理训练等。
确定调用方式
平台为开发者提供了清晰且便捷的 API 调用方式。以常见的 HTTP 请求为例,我们可以借助各类编程语言中的 HTTP 请求库来发起调用。在 Python 语言中,常用的 requests 库能够方便地构造请求。我们要根据所选大模型 API 的要求,确定请求的 URL 地址。
构造请求参数
请求参数是 API 调用的关键部分,它决定了我们向大模型传递的信息以及期望得到的响应形式。
Python 使用 requests 库调用大模型 API 代码:
import requests
url ="https://api.example.com/v1/chat/completions"
headers ={"Content-Type":"application/json","Authorization":"Bearer 这里改成自己的 API 密钥"}
data ={"model":"deepseek-r1","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"Hello!"}]}
response = requests.post(url, headers=headers, json=data)
if response.status_code ==200:
result = response.json()
print(result)
else:
print(f"请求失败,状态码:{response.status_code}")
不懂的朋友可以再看看官方文档,想快速实现的也可以直接用我的代码。
利用 Jupyter Notebook 环境我们先试试,模型 API 是否调用成功
AI 助理回答:Hello! How can I assist you today? 😊
调用的 deepseek-r1 模型 API,deepseek 也是有深度思考和正常输出的,还给我们回复了一个微笑的可爱表情包。看来已经进入助理角色了。
上面那个界面,对于不懂代码的用户来说,比较不友好,我们要开发的是在 UI 窗口能直接用自然语言进行交互的 AI 助理。这次开发环境是 VS code,用 python 代码实现。
1.首先是平台 API 调用,进行设置 API 信息,这一步是我们调用大模型的关键
self.api_url ="https://api.example.com/v1/chat/completions"
self.api_key ="请替换为您的实际 API 密钥"# 请替换为您的实际 API 密钥
API 调用主要是用到 python 的 requests 库,因为这个库是 python 的第三方库,我们本地可能并没有安装,调用的时候就会报错。
别担心,我们只需要在终端输入命令
pip install requests
就能完成库的安装,看见有"Successfully installed"就是安装成功了。
2.选择需要调用的模型为 deepseek -r1 模型,并且给模型设置身份为私人助理
headers ={"Content-Type":"application/json","Authorization":f"Bearer {self.api_key}"}
data ={"model":"deepseek-r1","messages":[{"role":"system","content": self.system_role },{"role":"user","content": user_message }]}
这里可以看到,我们给模型的身份和我们自己的身份。
# 初始化对话 self.append_message("系统","私人助理已就绪,请问有什么可以帮您?")# 设置系统角色 self.system_role ="你是一位专业的私人助理,负责帮助用户处理各种事务。你的回答应该简洁、专业且友好。"
3.交互窗口的开发
主窗口和基本的设置,将窗口大小设置为 600*500 的块
self.root.geometry("600x500")
用户输入区域(输入框 + 发送按钮)
# 输入框框架 self.input_frame = tk.Frame(root) self.input_frame.pack(padx=10, pady=5, fill=tk.X)# 输入框 self.user_input = tk.Entry(self.input_frame) self.user_input.pack(side=tk.LEFT, fill=tk.X, expand=True) self.user_input.bind("<Return>", self.send_message)# 绑定回车键发送# 发送按钮 self.send_button = tk.Button(self.input_frame, text="发送", command=self.send_message) self.send_button.pack(side=tk.RIGHT)
消息显示功能实现
defappend_message(self, sender, message): self.chat_history.configure(state='normal') self.chat_history.insert(tk.END,f"{sender}: {message}\n\n") self.chat_history.configure(state='disabled') self.chat_history.see(tk.END)# 自动滚动到底部
消息发送功能实现
defsend_message(self, event=None): user_message = self.user_input.get()ifnot user_message.strip():return self.append_message("你", user_message) self.user_input.delete(0, tk.END)# 禁用控件防止重复发送 self.send_button.config(state=tk.DISABLED) self.user_input.config(state=tk.DISABLED)# 使用线程发送请求 threading.Thread(target=self.get_ai_response, args=(user_message,)).start()
上面就是我们实现的主要代码了,现在运行看看效果。
最上面是整个窗口的名字"Deepseek-R1 私人助理',初始时,系统会告诉我们他是你的私人助理,并且询问你是否需要帮助,下面的框可以输入我们的请求,比如我下面的 prompt'你好,现在是晚饭时间,为我推荐清淡且富有营养的晚餐',点击右下角的发送按钮,发送请求就好。
现在,是不是已经开始期待我们的私人助理会给出怎么样的回答了,一起看看吧。(十几秒的时间 AI 助理就能给我们回复,还是很快的,不需要像本地部署的大模型一样要等很久才能收到回复)
我们的小助理给出了一份很不错的食谱,接下来告诉小助理我们的忌口食物和喜爱食物,让他调整食谱。
小助手根据我的喜好为我提供了新食谱,考虑到营养问题,把一日三餐的食都提供了,还告诉我应该怎么搭配,怎么食用。真所谓考虑的面面俱到,我对我的小助理非常满意。
这里我们的小助手是有长记忆的,可以支持进行多轮对话,不用担心 token 不够,平台给我们提供了免费的 token。
4.可调整:
平台可以看到调用 API 的数量和 token 用量,实时监控并更新,方便我们查看
5.为了让更多人都能轻松实现这一 AI 私人助理,我决定把完整的代码分享给大家。
import tkinter as tk from tkinter import scrolledtext, messagebox import requests import threading classAIChatApp:def__init__(self, root): self.root = root self.root.title("DeepSeek-R1 私人助理") self.root.geometry("600x500")# 设置 API 信息 self.api_url ="https://api.example.com/v1/chat/completions" self.api_key ="请替换为您的实际 API 密钥"# 请替换为您的实际 API 密钥# 创建聊天历史显示区域 self.chat_history = scrolledtext.ScrolledText(root, wrap=tk.WORD, state='disabled') self.chat_history.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)# 创建用户输入区域 self.input_frame = tk.Frame(root) self.input_frame.pack(padx=10, pady=5, fill=tk.X) self.user_input = tk.Entry(self.input_frame) self.user_input.pack(side=tk.LEFT, fill=tk.X, expand=True) self.user_input.bind("<Return>", self.send_message) self.send_button = tk.Button(self.input_frame, text="发送", command=self.send_message) self.send_button.pack(side=tk.RIGHT)# 初始化对话 self.append_message("系统","私人助理已就绪,请问有什么可以帮您?")# 设置系统角色 self.system_role ="你是一位专业的私人助理,负责帮助用户处理各种事务。你的回答应该简洁、专业且友好。"defappend_message(self, sender, message): self.chat_history.configure(state='normal') self.chat_history.insert(tk.END,f"{sender}: {message}\n\n") self.chat_history.configure(state='disabled') self.chat_history.see(tk.END)defsend_message(self, event=None): user_message = self.user_input.get()ifnot user_message.strip():return self.append_message("你", user_message) self.user_input.delete(0, tk.END)# 禁用发送按钮和输入框,避免重复发送 self.send_button.config(state=tk.DISABLED) self.user_input.config(state=tk.DISABLED)# 在新线程中发送请求,避免界面冻结 threading.Thread(target=self.get_ai_response, args=(user_message,)).start()defget_ai_response(self, user_message):try: headers ={"Content-Type":"application/json","Authorization":f"Bearer {self.api_key}"} data ={"model":"deepseek-r1","messages":[{"role":"system","content": self.system_role },{"role":"user","content": user_message }]} response = requests.post(self.api_url, headers=headers, json=data)if response.status_code ==200: result = response.json() ai_response = result.get('choices',[{}])[0].get('message',{}).get('content',"未能获取有效回复") self.append_message("助理", ai_response)else: self.append_message("系统",f"请求失败,状态码:{response.status_code}") messagebox.showerror("错误",f"API 请求失败:{response.status_code}")except Exception as e: self.append_message("系统",f"发生错误:{str(e)}") messagebox.showerror("错误",f"发生异常:{str(e)}")finally:# 重新启用发送按钮和输入框 self.root.after(0,lambda:[ self.send_button.config(state=tk.NORMAL), self.user_input.config(state=tk.NORMAL), self.user_input.focus()])if __name__ =="__main__": root = tk.Tk() app = AIChatApp(root) root.mainloop()
在大数据隐私风险下,我们可以尝试利用 MaaS 平台调用大模型 API 实现打造本地化 AI 助理,保护隐私数据不被泄露。通过 Python 代码实现 API 调用,开发带 UI 的交互助理,支持多轮对话。重中之重是平台提供的 Token 资源,降低使用成本,为隐私保护下的智能问题解决提供新方案,为我们的 AI 助理实现提供了坚实的保障。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online