使用Python GUI做一个ChatGPT

一、安装 OpenAI 库

pip install openai

实现实时对话,错误标记

二、代码部分

import wx
import openai
import threading

# 继承Frame
class TextCtrl(wx.Frame):

    def __init__(self, *args, **kwargs):
        super(TextCtrl, self).__init__(*args, **kwargs)
        # 初始化窗口UI
        self.init_ui()

    def init_ui(self):
        self.text = ""
        self.turns = []
        # 面板
        panel = wx.Panel(self)
        # 单行文本输入框(加了验证器)
        self.tex = wx.TextCtrl(panel, id=wx.ID_ANY,
                               pos=(20, 20), size=(400, -1))
        self.button = wx.Button(panel, -1, u"提交", pos=(435, 20))
        # 绑定事件,就是指定的button被单击后调用onClick()成员函数
        self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
        self.text1 = wx.TextCtrl(panel, pos=(20, 60), size=(500, 400), style=wx.TE_MULTILINE)
        self.staticT = wx.StaticText(panel, -1, "广告位招租\nTelegram:nullses", (550, 100))
        self.SetSize(700, 500)
        self.SetTitle("ChatGPT v1.0")
        self.Centre()
        self.Show(True)

    def start_thread(self):
        # 让create_ftp函数在子线程中运行
        thread = threading.Thread(target=self.create_ftp, args=())
        # 下面是设置守护线程:如果在程序中将子线程设置为守护线程,则该子线程会在主线程结束时自动退出
        thread.start()  # 启动线程

    def create_ftp(self):
        global results
        self.button.SetLabel("请等待...")
        openai.api_key = "API-KEY"

        prompt = self.text + "\nHuman: " + self.tex.GetValue()

        try:
            result = openai.Completion.create(
                model="text-davinci-003",
                prompt=prompt,
                temperature=0.9,
                max_tokens=2500,
                top_p=1,
                frequency_penalty=0.0,
                presence_penalty=0.6
            )
            results = result.choices[0].text + "\n\n"
        except Exception as e:
            self.staticT.SetLabel("出错啦,请关闭重试")
            self.staticT.SetForegroundColour((255, 0, 0))
            print(str(e))
            self.text1.SetValue(self.text1.GetValue() + str(e))
            return
        self.turns += [self.tex.GetValue()] + [results]
        self.button.SetLabel("提交")
        if len(self.turns) <= 10:   #为了防止超过字数限制程序会爆掉,所以提交的话轮语境为10次。
            self.text = " ".join(self.turns)
        else:
            self.text = " ".join(self.turns[-10:])
        self.text1.SetValue(self.text)

    def OnClick(self, event):
        if self.tex.GetValue() == "":
            toastone = wx.MessageDialog(None, "请输入内容", "提示", wx.YES_DEFAULT)
            if toastone.ShowModal() == wx.ID_YES:  # 如果点击了提示框的确定按钮
                toastone.Destroy()  # 则关闭提示框
            return

        self.text1.SetValue(self.text)
        self.start_thread()

    def input(self, e):
        slider = e.GetEventObject()
        value = slider.GetValue()
        print(value)

def main():
    app = wx.App(False)
    TextCtrl(None)
    app.MainLoop()

if __name__ == "__main__":
    main()

二、效果图

我想让你充当⽹络安全专家。我将提供⼀些关于如何存储和共享数据的具体信息,⽽你 的⼯作就是想出保护这些数据免受恶意⾏为者攻击的策略。这可能包括建议加密⽅法、 创建防⽕墙或实施将某些活动标记为可疑的策略。我的第⼀个请求是“我需要帮助为我的 公司制定有效的⽹络安全战略。

AI:您好,我很乐意为您提供帮助。首先,我建议您审查此公司内部网络的情况,并识别任何可能存在漏洞的系统。此外,建议进行定期的安全培训,以了解可能会对您的系统造成影响的新威胁,并对日常活动进行安全性审查。此外,我还建议您考虑加密数据和文件以防止未经许可的访问,并为系统设置强大的防火墙保护,以阻止入侵者。最后,您可以考虑使用双重身份验证或多因素认证以确保您的数据和系统安全。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zgsdzczh

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

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

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

打赏作者

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

抵扣说明:

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

余额充值