|從零開始的Pyside2界面編程| 用Pyside2打造一個AI助手界面

🐑 |從零開始的Pyside2界面編程| 用Pyside2打造一個AI助手界面 🐑

文章目錄

  • 🐑 |從零開始的Pyside2界面編程| 用Pyside2打造一個AI助手界面 🐑
    • ?前言?
    • ?調取Deepseek大模型?
      • ?準備工作?
      • ?調用API?
    • ?將模型嵌入到ui界面中?
    • ?總結?

?前言?

經過上周老學長的提點,這周進度飛速,感覺按照我原來的進度這周的成果需要多耗好多個星期,首先感謝一下學長@浩浩的科研筆記,其次這周的博客就準備簡單記錄一下,如何把一個AI以api的形式嵌入到自己的ui界面中,引入AI后確實增加了很多交互的體驗,就拿我自己做的這個根據心電信號實時識別并預測情緒的系統來看,我完全可以在引入AI后通過AI調取我識別后的情緒模型結果來給用戶相關建議或者下一步的想法,人機交互顯得更加自然一點。本篇就以引入Deepseek的模型為例來記錄一下如何將AI引入到自己的ui界面中。

?調取Deepseek大模型?

在打造ui界面的AI助手之前首先來介紹一下如何在python上調取Deepseek大模型并實現一個多輪對話,這里先推薦一下學長@浩浩的科研筆記的一篇博文調用阿里通義千問大語言模型API-小白新手教程-python,這里已經以阿里的通義千問為例將調取大模型API 以及實現多輪對話的功能介紹的很詳細了,我這里就以調取Deepseek為例全程記錄一下自己調取的步驟。

?準備工作?

首先我們需要申請一份DeepseekAPI用于使用python訪問Deepseek的模型。進入deepseek的官網:https://www.deepseek.com/,進入右上角的API開放平臺

在這里插入圖片描述
進入后在開放平臺左側可以看到充值入口,充值后,進入API KEYs
在這里插入圖片描述
點擊創建API key即可創建一個自己的API 密鑰,可以保存到電腦上,或者復制下來
(因為只有創建的時候才能看到自己的密鑰,后面關閉創建的彈窗后就看不到了)
然后開始安裝requests庫,這個庫的作用就是HTTP請求到Deepseek API內,安裝命令符:
pip install requests。至此準備工作結束。

?調用API?

然后一點點來記錄下調用剛剛保存的API 的代碼。

import requests# 配置參數
API_KEY = ""  # 替換為你的API密鑰
API_URL = "https://api.deepseek.com/v1/chat/completions"

其中API_KEY為剛剛保存的密鑰復制上即可,下面的API_URL為官方文檔的斷點地址。

def ask_deepseek(prompt):headers = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json"}data = {"model": "deepseek-chat","messages": [{"role": "user", "content": prompt}],"temperature": 0.7,"max_tokens": 1024}

ask_deepseek的函數中分別定義請求頭headers以及構造請求數據datamessages中分別包含角色和對話的內容temperature則是控制模型回復的隨機性,越靠近1回復就會越天馬行空;max_tokens則是限制回復的最大長度(大約1024tokens≈700漢字),并且在data中我們可以改變調用的模型,除了代碼中的deepseek-chat外還可以調用deepseek-coder相對而言代碼能力更強。

    try:response = requests.post(API_URL, headers=headers, json=data)response.raise_for_status()  # 檢查錯誤return response.json()["choices"][0]["message"]["content"]except Exception as e:return f"錯誤: {str(e)}"

然后就是發送請求與錯誤處理,當消息頭和請求數據發送成功時,response.json會成功解析API返回的JSON數據,并且通過response.json()["choices"][0]["message"]["content"]提取出AI回復的文本內容,如果請求失敗則會返回錯誤提示。

if __name__ == "__main__":while True:user_input = input("你: ")if user_input.lower() == 'exit':breakanswer = ask_deepseek(user_input)print("DeepSeek:", answer)

最后就是連續對話的一個交互邏輯,當用戶輸入exit時候退出對話。
完整代碼:

import requests# 配置參數
API_KEY = ""  # 替換為你的實際API密鑰
API_URL = "https://api.deepseek.com/v1/chat/completions"def ask_deepseek(prompt):headers = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json"}data = {"model": "deepseek-chat","messages": [{"role": "user", "content": prompt}],"temperature": 0.7,"max_tokens": 1024}try:response = requests.post(API_URL, headers=headers, json=data)response.raise_for_status()  # 檢查錯誤return response.json()["choices"][0]["message"]["content"]except Exception as e:return f"錯誤: {str(e)}"if __name__ == "__main__":while True:user_input = input("你: ")if user_input.lower() == 'exit':breakanswer = ask_deepseek(user_input)print("DeepSeek:", answer)

運行后我們可以簡單看下效果:
在這里插入圖片描述

可以看到我們可以直接在pycharm的控制臺中實現實時的對話功能,但是不好的一點就是pycharm的控制臺不支持markdown的渲染,所以里面會難以識別出markdown的語法。

?將模型嵌入到ui界面中?

既然已經實現了簡單使用requestspycharm中調用deepseek的模型,后面就簡單記錄一下怎樣在ui界面中調用。
這里還是以QTdesigner來制作ui界面為例,這里我是創建了一個名為aitest2.ui的文件,包含了一個QTexeBrowser、一個QtextEdit、一個Qpushbutton以及一個label
在這里插入圖片描述
首先label就是簡單給自己的AI助手設置一個名字,我這里也是隨便起的一個,下面分別就是用戶的輸入欄發送按鈕以及回復框,其中三個控件的名字分別為aitextaibutton,以及textbrowser。創建好后我們只需要將他load并結合我們上面的代碼,給各個控件加一個交互的指令即可。

import sys
import requests
from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtUiTools import QUiLoader# API 配置(與原始代碼保持一致)
API_KEY = ""  # 替換為你的實際API密鑰
API_URL = "https://api.deepseek.com/v1/chat/completions"def ask_deepseek(prompt):"""與您提供的函數完全一致的API調用方法"""headers = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json"}data = {"model": "deepseek-chat","messages": [{"role": "user", "content": prompt}],"temperature": 0.7,"max_tokens": 1024}try:response = requests.post(API_URL, headers=headers, json=data)response.raise_for_status()return response.json()["choices"][0]["message"]["content"]except Exception as e:return f"錯誤: {str(e)}"class DeepSeekApp:def __init__(self):# 加載UI文件self.ui = QUiLoader().load("aitest2.ui")# 綁定按鈕事件self.ui.aibutton.clicked.connect(self.on_button_click)def on_button_click(self):"""按鈕點擊事件處理"""user_input = self.ui.aitext.toPlainText().strip()if not user_input:return# 調用與原始代碼一致的API方法answer = ask_deepseek(user_input)# 顯示結果self.ui.textbrowser.append(f"You: {user_input}")self.ui.textbrowser.append(f"AI: {answer}\n")self.ui.aitext.clear()if __name__ == "__main__":app = QApplication(sys.argv)window = DeepSeekApp()window.ui.show()sys.exit(app.exec_())

第一個函數基本沒什么變化,主要第二個調用的類里面記得在初始化中將按鈕給初始化了。然后下面的on_button_click的方法也是很簡單的交互指令,只是最后記得加上一句 self.ui.aitext.clear()目的是當我們把輸入的文本發送后,將上次已發送的文本進行清空掉。
簡單看下效果:
在這里插入圖片描述

?總結?

簡單記錄一下這周學到的一些比較重要的地方,如果有不合適的地方也歡迎提出。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82926.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82926.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82926.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何利用Elastic Stack(ELK)進行安全日志分析

在以下文章中,我將解釋如何使用Elastic Stack(ELK)進行安全日志分析,以提高安全性和監控網絡活動。ELK是一個功能強大的開源日志管理和分析平臺,由Elasticsearch、Logstash和Kibana組成,適用于各種用例&…

網絡安全-等級保護(等保)3-0 等級保護測評要求現行技術標準

################################################################################ 第三章:測評要求、測評機構要求,最終目的是通過測評,所以我們將等保要求和測評相關要求一一對應形成表格。 GB/T 28448-2019 《信息安全技術 網絡安全等…

網絡通訊知識——通訊分層介紹,gRPC,RabbitMQ分層

網絡通訊分層 網絡通訊分層是為了將復雜的網絡通信問題分解為多個獨立、可管理的層次,每個層次專注于特定功能。目前主流的分層模型包括OSI七層模型和TCP/IP四層(或五層)模型,以下是詳細解析: 一、OSI七層模型&#…

gopool 源碼分析

gopool gopool是字節跳動開源節流的gopkg包中協程池的一個實現。 關鍵結構 協程池: type pool struct {// The name of the poolname string// capacity of the pool, the maximum number of goroutines that are actually working// 協程池的最大容量cap int32…

【工作記錄】接口功能測試總結

如何對1個接口進行接口測試 一、單接口功能測試 1、接口文檔信息 理解接口文檔的內容: 請求URL: https://[ip]:[port]/xxxserviceValidation 請求方法: POST 請求參數: serviceCode(必填), servicePsw(必填) 響應參數: status, token 2、編寫測試用例 2.1 正…

Linux中su與sudo命令的區別:權限管理的關鍵差異解析

💝💝💝歡迎蒞臨我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:「storms…

樂觀鎖與悲觀鎖的實現和應用

樂觀鎖與悲觀鎖:原理、實現與應用詳解 在并發編程和數據庫操作中,樂觀鎖和悲觀鎖是兩種重要的并發控制策略,它們在原理、實現方式和應用場景上存在顯著差異。下面我們將通過圖文結合的方式,深入探討這兩種鎖機制。 一、基本概念 1…

ios蘋果系統,js 滑動屏幕、錨定無效

現象:window.addEventListener監聽touch無效,劃不動屏幕,但是代碼邏輯都有執行到。 scrollIntoView也無效。 原因:這是因為 iOS 的觸摸事件處理機制和 touch-action: none 的設置有關。ios有太多得交互動作,從而會影響…

Redis主從復制原理二 之 主從復制工作流程

概述 本文緊接「Redis主從復制的原理一 之 概述」,詳細介紹了Redis的主從服務過程及原理。 主從復制工作流程 主從復制過程大體可以分為3個階段: 建立連接階段(即準備階段)數據同步階段命令傳播階段 階段一:建立連接階…

Markdown基礎(1.2w字)

1. Markdown基礎 這次就沒目錄了,因為md格式太亂了寫示例,展示那些都太亂了,導致目錄很亂。 (我是XX,出現了很多錯誤,有錯誤和我說) 1.1 Markdown簡介 Markdown是一種輕量級的標記語言&#…

JAVA-springboot log日志

SpringBoot從入門到精通-第8章 日志的操作 一、Spring Boot默認的日志框架 SpringBoot支持很多種日志框架,通常情況下,這些日志框架都是由一個日志抽象層和一個日志實現層搭建而成的,日志抽象層是為記錄日志提供的一套標準且規范的框架&…

Vue 渲染 Markdown 文件完全指南

前言 大家好,我是一諾,今天分享的是vue中渲染markdown文件。這是一個常見的需求,比如用戶隱私協議頁、技術說明等文檔頁面~ 本文將詳細介紹如何在 Vue 中渲染 Markdown 文件,并美化代碼塊的顯示效果。 基礎概念 什么是 Markdo…

Science Robotics:UCLA 賀曦敏團隊綜述自主軟體機器人

在機器人中實現類似生命的自主性一直是研究的方向,但目前大多數軟體機器人仍依賴外部刺激操控來產生持續運動。為了實現能夠自我調節感知 、 決策和驅動的自主物理智能(autonomous physical intelligence,API),一種有前…

基于LangChain構建高效RAG問答系統:向量檢索與LLM集成實戰

基于LangChain構建高效RAG問答系統:向量檢索與LLM集成實戰 在本文中,我將詳細介紹如何使用LangChain框架構建一個完整的RAG(檢索增強生成)問答系統。通過向量檢索獲取相關上下文,并結合大語言模型,我們能夠…

【Java學習筆記】SringBuffer類(重點)

StringBuffer(重點) 1. 基本介紹 (1)StringBuffer是可變的字符序列,可以對字符串內容驚醒增刪 (2)很多方法喝String相同,但StringBuffer可變長度 (3)Strin…

計算機網絡領域所有CCF-A/B/C類期刊匯總!

本期小編統計了【計算機網絡】領域CCF推薦所有期刊的最新影響因子,分區、年發文量以及投稿經驗,供大家參考! CCF-A類 1 IEEE Journal on Selected Areas in Communications 【影響因子】13.8 【期刊分區】JCR1區,中科院1區TOP …

AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用)

環境: Ubuntu20.04 WSL2 問題描述: AI-Sphere-Butler之如何啟動AI全能管家教程(WSL測試環境下適用) 解決方案: 打開管家大模型 1.運行大模型在cmd下輸入: ollama run qwen2.5-3bnsfwny運行管家 數字人運行腳本&#xff…

【python深度學習】Day 47 注意力熱圖可視化

知識點:熱力圖 作業:對比不同卷積層熱圖可視化的結果 一、概念 為了方便觀察輸出,將特征圖進行可視化。特征圖本質就是不同的卷積核的輸出,淺層指的是離輸入圖近的卷積層,淺層卷積層的特征圖通常較大,而深層…

C#語音識別:使用Whisper.net實現語音識別

C#語音識別:使用Whisper.net實現語音識別 在當今數字化時代,語音識別技術已廣泛應用于智能助手、語音轉文字、會議記錄等眾多領域。對于 C# 開發者而言,如何快速、高效地實現語音識別功能呢?今天,我們就來介紹一個強大…

開源分享|適合初創商家的餐飲系統,基于thinkphp8+element-plus

一、項目介紹 三勾餐飲點餐連鎖版系統是一個基于thinkphp8element-plusuniapp打造的面向開發的小程序商城的全面解決方案,旨在為連鎖餐飲企業提供高效的點餐與管理服務。該系統支持多端應用發布,包括微信小程序、H5、安卓及iOS平臺,實現數據…