<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程序中,有兴趣的可以去试试。

相关推荐
盘古开天16661 分钟前
PPO算法原理详解(下):Clip机制深入剖析与实践指南
人工智能·算法·机器学习
虫无涯5 分钟前
大模型联动 CodeQL + Coverity 完整落地方案
人工智能·python·大模型·llm·codeql·coverity
Dawson Zhu6 分钟前
大语言模型对齐与微调:原理解析与工程实践
人工智能·语言模型·架构·aigc·agi
周杰伦fans9 分钟前
C#对话摘要降低Token消耗
人工智能·后端·c#
段一凡-华北理工大学15 分钟前
大模型与智能体在工业的应用~系列文章12:大模型 × 数字孪生 × 智能体的融合图景
大数据·人工智能·python·深度学习·大语言模型·python开发
可乐鸡翅yeah_17 分钟前
fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样
开发语言·javascript·ios·音视频·safari·m3u8·m3u8在线播放
程序员无隅18 分钟前
AI 辅助编程:怎样把完成的功能变成自己的开发经验
人工智能
胡家伟++19 分钟前
AI为《一片叶子的赋役与风流》配插图
人工智能·aigc
流形填表20 分钟前
多校区题库标准化:Excel模板与校验脚本
开发语言·python
步行cgn29 分钟前
AOP 通知的类型详解
开发语言