用python写一个基于PyQt5和OpenAI的智能问答项目

摘要:

使用python写一个可以对话的智能问答机器人,界面是使用PyQt5写的,通过调用OpenAl的免费接口,实现实时聊天功能。

1.申请免费的API key

前往页面https://github.com/chatanywhere/GPT_API_free

点击下面链接:

申请成功:

授权成功 您的免费API Key为: sk-8xxxxxxxxx 请妥善保管,不要泄露给他人,如泄漏造成滥用可能会导致Key被封禁

2.环境准备

本文开发环境为:

windows 11 
python 3.11.4

配置pip国内镜像源:

  1. 设置全局安装源为阿里云镜像:

    pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
  2. 设置pip安装时信任的主机地址:

    pip config set install.trusted-host mirrors.aliyun.com

安装必要的包:

pip install PyQt5==5.14.1
pip install pyqt5-tools

配置ui设计工具:

参考我另一篇博文:使用Python PyQt5实现一个简单的图像识别软件_pyqt5 designer插入一个区域用于图像识别-CSDN博客

配置好后可以看到下面效果:

3.UI界面设计及调整

界面设计:

设置滚动条代码:

        self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
        self.scrollArea.setGeometry(QtCore.QRect(10, 60, 780, 481))
        self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.scrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.scrollArea.setWidgetResizable(False)
        self.scrollArea.setObjectName("scrollArea")
​
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 780, 3000))
        self.scrollAreaWidgetContents.setMaximumSize(QtCore.QSize(1000, 4000))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
​
        # 将 self.scrollAreaWidgetContents设置为QScrollArea的widget
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
​
        self.label_2 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
        # self.label_2 = QtWidgets.QLabel(self.centralwidget)

4.软件功能逻辑实现

发送请求及结果处理:

    def sendRequest(self):
        _translate = QtCore.QCoreApplication.translate
        response = requests.request("POST", url, headers=headers, data=self.payload)
        res = response.json()
        print(type(response))
        print(response.text)
        print(type(response.text))
        print(res)
        cur_content = ''
        if res['choices'][0]['message']['content']:
            cur_content = res['choices'][0]['message']['content']
​
        print(cur_content)
        self.label_2.setText(_translate("MainWindow", cur_content))

5.最终效果

初始界面:

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue200403

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值