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

相关推荐
Kratzdisteln7 分钟前
【Python OOP Diary 1.1】题目二:简单计算器,改错与优化
python·面向对象编程
掘金安东尼12 分钟前
OCR的新高度?PaddleOCR-VL 与 DeepSeek-OCR 的技术与应用横评
人工智能
小白银子15 分钟前
零基础从头教学Linux(Day 53)
linux·运维·python
有时间要学习16 分钟前
Qt——窗口
开发语言·qt
Aurora-silas20 分钟前
LLM微调尝试——MAC版
人工智能·pytorch·深度学习·macos·机器学习·语言模型·自然语言处理
空白到白31 分钟前
BERT,GPT,ELMO模型对比
人工智能·gpt·自然语言处理·bert
空白到白32 分钟前
BERT-微调任务
人工智能·自然语言处理·bert
文火冰糖的硅基工坊35 分钟前
[人工智能-大模型-20]:对比 Copilot 与国产替代方案(如通义灵码、百度Comate)
人工智能·百度·copilot
消失的旧时光-194343 分钟前
@JvmStatic 的作用
java·开发语言·kotlin
skywalk81631 小时前
基于频域的数字盲水印blind-watermark
linux·开发语言·python