<Python><AI>基于智谱AI免费大模型GLM-4-Flash的智能聊天程序

前言

智谱AI开放了一个免费使用的大模型GLM-4-Flash,官方也提供了python的示例程序,我们结合pyqt5来编写一个基于GLM-4的简单的智能聊天工具。

界面大致如下:

环境配置

系统:windows

平台:visual studio code

语言:python

库:pyqt5

大模型:智谱清言 GLM-4-Flash

程序主要分两个方面,一个UI布局,一个是大模型的调用。

由于大模型调用时会耗费时间,所以将其写在一个线程里:

python 复制代码
class GLM4_free_thread(QThread):
    """GLM-4V免费版"""
    signal1=pyqtSignal(str)
    
    def __init__(self, prompt:str) -> None:
        super().__init__()
        self.prompt=prompt
        
    def run(self):
        self.gene(self.prompt)
        
    def gene(self,prompt:str):
        print("提问:{}".format(prompt))
        client = ZhipuAI(api_key="xxx") #这里填写你在智谱申请的key
        response=client.chat.completions.create(
                    model="glm-4-0520",
                    messages=[
                        {
                            "role": "user",
                            "content": prompt,
                        },
                    ], 
                    )
        print("助手:{}".format(response.choices[0].message.content))
        self.signal1.emit(response.choices[0].message.content)

至于pyqt5的UI布局,则相对简单, 此处就不多作介绍了。

UI代码:

python 复制代码
class ChatTool(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    
    def initUI(self):
        
        self.te_answer=QTextEdit(self)
        self.te_answer.setGeometry(20,20,500,400)
        
        self.btn_clear=QPushButton('清空',self)
        self.btn_clear.setGeometry(530,20,80,40)
        self.btn_clear.clicked.connect(self.on_btnclear_clicked)
        
        self.te_quote=QTextEdit(self)
        self.te_quote.setGeometry(20,500,500,40)
        self.te_quote.setText('你好')
        
        self.btn_gene=QPushButton('提问',self)
        self.btn_gene.setGeometry(530,500,80,40)
        self.btn_gene.clicked.connect(self.on_btngene_clicked)
        
       
        
        self.setWindowTitle("ChatTool")
        self.setGeometry(100, 40, 700, 600)
        self.setWindowIcon(QIcon('ZPaiTest2024\\icons\\聊天.png'))
        self.show()
        
    def on_btngene_clicked(self):
        prompt=self.te_quote.toPlainText()
        self.te_answer.append("提问:{}\n".format(prompt))
        self.th1=GLM4_free_thread(prompt)
        self.th1.signal1.connect(self.on_signal1)
        self.th1.start()
        self.te_quote.clear()
        
    @pyqtSlot(str) 
    def on_signal1(self, text):
        self.te_answer.append("助手:{}\n".format(text))
    
    def on_btnclear_clicked(self):
        self.te_answer.clear()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    chatTool = ChatTool()
    sys.exit(app.exec_())

当我们启动程序后,通过输入提示词,让大模型返回回答,经过测试,这个大模型是无法联系上下文,但是对大部分问题,还是能提供一些较为准确的回答的。


以上是一个简单的体验介绍,毕竟是免费使用的,而且可以很方便的集成到python程序中,有兴趣的可以去试试。

相关推荐
拓端研究室1 小时前
视频讲解|核密度估计朴素贝叶斯:业务数据分类—从理论到实践
人工智能·分类·数据挖掘
灵智工坊LingzhiAI1 小时前
人体坐姿检测系统项目教程(YOLO11+PyTorch+可视化)
人工智能·pytorch·python
昨日之日20061 小时前
Video Background Remover V3版 - AI视频一键抠像/视频换背景 支持50系显卡 一键整合包下载
人工智能·音视频
SHIPKING3932 小时前
【机器学习&深度学习】什么是下游任务模型?
人工智能·深度学习·机器学习
weixin_472339464 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
枯萎穿心攻击5 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
子燕若水6 小时前
Unreal Engine 5中的AI知识
人工智能
Eiceblue6 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
极限实验室7 小时前
Coco AI 实战(一):Coco Server Linux 平台部署
人工智能
m0_555762907 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab