<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 小时前
机器视觉检测的光源基础知识及光源选型
人工智能·深度学习·数码相机·yolo·计算机视觉·视觉检测
困鲲鲲1 小时前
Python中内置装饰器
python
摩羯座-185690305941 小时前
Python数据可视化基础:使用Matplotlib绘制图表
大数据·python·信息可视化·matplotlib
今天也要学习吖1 小时前
谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
人工智能·学习·ai·prompt·nano banana·谷歌ai
Hello123网站1 小时前
glean-企业级AI搜索和知识发现平台
人工智能·产品运营·ai工具
AKAMAI1 小时前
Queue-it 为数十亿用户增强在线体验
人工智能·云原生·云计算
索迪迈科技1 小时前
INDEMIND亮相2025科技创变者大会,以机器人空间智能技术解锁具身智能新边界
人工智能·机器人·扫地机器人·空间智能·陪伴机器人
栒U2 小时前
一文从零部署vLLM+qwen0.5b(mac本地版,不可以实操GPU单元)
人工智能·macos·vllm
lingchen19062 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
爱隐身的官人2 小时前
cfshow-web入门-php特性
python·php·ctf