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

相关推荐
CoderPractice5 分钟前
C#控制台小项目-飞行棋
开发语言·c#·小游戏·飞行棋
Coding小公仔13 分钟前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
程序猿阿伟14 分钟前
《声音的变形记:Web Audio API的实时特效法则》
开发语言·前端·php
凌览18 分钟前
有了 25k Star 的MediaCrawler爬虫库加持,三分钟搞定某红书、某音等平台爬取!
前端·后端·python
G.E.N.18 分钟前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag
西西弗Sisyphus28 分钟前
如果让计算机理解人类语言- Word2Vec(Word to Vector,2013)
人工智能·word·word2vec
这里有鱼汤29 分钟前
给你的DeepSeek装上实时行情,让他帮你炒股
后端·python·mcp
前端双越老师1 小时前
30 行代码 langChain.js 开发你的第一个 Agent
人工智能·node.js·agent
Humbunklung1 小时前
Rust方法语法:赋予结构体行为的力量
开发语言·后端·rust
萧曵 丶1 小时前
Rust 内存结构:深入解析
开发语言·后端·rust