使用PyQt快速創(chuàng)建exe應(yīng)用--自己的大模型AI助手

環(huán)境準備:
python3.12
PyQt5 5.15.10
PyQt5-Qt5 5.15.2

安裝依賴

# python依賴
pip install  PyQt5  -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
# ui設(shè)計用
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
# 打包用
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

# 訊飛大模型接口調(diào)用依賴 ,參考:https://www.xfyun.cn/doc/spark/Web.html#
pip install --upgrade spark_ai_python

配置Qs designer 工具參數(shù)

image.png

D:\SlowSoftware\anaconda\Library\bin\designer.exe()
$FileDir$


image.png

D:\SlowSoftware\anaconda\envs\go_game\python.exe
$FileDir$


image.png

設(shè)計界面

image.png

打開qt designer界面,左邊菜單欄選擇控件進行界面設(shè)計


image.png
image.png

右鍵ui文件生成ui代碼:


image.png

生成的代碼無需做任何修改

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(610, 491)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(450, 70, 93, 41))
        self.pushButton.setObjectName("pushButton")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(50, 190, 541, 181))
        self.textBrowser.setObjectName("textBrowser")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(60, 20, 61, 20))
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(50, 50, 331, 91))
        self.lineEdit.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 610, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(self.textBrowser.show)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "你的小滿滿"))
        self.pushButton.setText(_translate("MainWindow", "發(fā)送"))
        self.label.setText(_translate("MainWindow", "快問我!"))
# @Author:zh
# @Data:2024/6/29 19:41
# @:PyCharm
# Python版本:3.7
import json
import sys
#PyQt5中使用的基本控件都在PyQt5.QtWidgets模塊中
from PyQt5.QtWidgets import QApplication, QMainWindow
#導(dǎo)入designer工具生成的login模塊
from untitled import Ui_MainWindow

from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage

#星火認知大模型Spark Max的URL值,其他版本大模型URL值請前往文檔(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v1.1/chat'
#星火認知大模型調(diào)用秘鑰信息,請前往訊飛開放平臺控制臺(https://console.xfyun.cn/services/bm35)查看
SPARKAI_APP_ID = ''
SPARKAI_API_SECRET = ''
SPARKAI_API_KEY = ''
#星火認知大模型Spark Max的domain值,其他版本大模型domain值請前往文檔(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_DOMAIN = 'general'

class MyMainForm(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)
        self.setupUi(self)
        # 這里是按鍵觸發(fā)對應(yīng)邏輯方法的關(guān)鍵
        self.pushButton.clicked.connect(self.display)


    def display(self):

        input=self.lineEdit.text()
        print(input)

        spark = ChatSparkLLM(
            spark_api_url=SPARKAI_URL,
            spark_app_id=SPARKAI_APP_ID,
            spark_api_key=SPARKAI_API_KEY,
            spark_api_secret=SPARKAI_API_SECRET,
            spark_llm_domain=SPARKAI_DOMAIN,
            streaming=False,
        )
        messages = [ChatMessage(
        role="user",
        content=input
        )]

        handler = ChunkPrintHandler()
        a = spark.generate([messages], callbacks=[handler])
        response= ""
        for i in a.generations:
            response= i[0].text
      
        # 這里是頁面顯示內(nèi)容的關(guān)鍵
        self.textBrowser.setText(response)
        self.textBrowser.show()



if __name__ == "__main__":
    #固定的,PyQt5程序都需要QApplication對象。sys.argv是命令行參數(shù)列表,確保程序可以雙擊運行
    app = QApplication(sys.argv)
    #初始化
    myWin = MyMainForm()
    #將窗口控件顯示在屏幕上
    myWin.show()
    #程序運行,sys.exit方法確保程序完整退出。
    sys.exit(app.exec_())

打包

# -F=>exe包  -w運行程序不運行cmd窗口
pyinstall -F -w main.py

done

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容