Python调用ChatGPT的API实现文章生成

 更新时间:2023年03月22日 11:10:24   作者:徐浪老师  
最近ChatGPT大火,在3.5版本后开放了接口API,所以很多人开始进行实操,这里我就用python来为大家实现一下,如何调用API并提问返回文章的说明

实操目标

最近ChatGPT大火,在3.5版本后开放了接口API,所以很多人开始进行实操,这里我就用python来为大家实现一下,如何调用API并提问返回文章的说明

实操内容

获取API

书写python调用框架

封装到pyqt中,实现UI化

封装为exe

具体操作

话不多说,直接上代码

import sys
import openai
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QSpinBox
from PyQt5.QtCore import QThread, pyqtSignal


class ChatThread(QThread):
    response_ready = pyqtSignal(str)

    def __init__(self, prompt, num_threads):
        super().__init__()
        self.prompt = prompt
        self.num_threads = num_threads

    def run(self):
        openai.api_key = "这里输入你的API"
        response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=self.prompt,
            max_tokens=1024,
            temperature=0.5,
            top_p=1.0,
            frequency_penalty=0.0,
            presence_penalty=0.0,
            n=self.num_threads
        )
        self.response_ready.emit(response.choices[0].text.strip())


class ChatWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口标题和大小
        self.setWindowTitle('Chat with GPT-3')
        self.resize(500, 400)

        # 创建一个垂直布局,并将所有控件添加到布局中
        layout = QVBoxLayout()

        # 创建一个标签,并添加到布局中
        label = QLabel('Please enter your question:')
        layout.addWidget(label)

        # 创建一个文本框,并添加到布局中
        self.text_edit = QLineEdit()
        layout.addWidget(self.text_edit)

        # 创建一个水平布局,并添加一个按钮和一个标签
        hbox = QHBoxLayout()
        self.button = QPushButton('Ask')
        self.button.clicked.connect(self.on_button_clicked)
        hbox.addWidget(self.button)

        # 创建一个SpinBox控件,用于选择线程数量
        self.thread_spinbox = QSpinBox()
        self.thread_spinbox.setMinimum(1)
        self.thread_spinbox.setMaximum(10)
        self.thread_spinbox.setValue(1)
        hbox.addWidget(self.thread_spinbox)

        self.answer_label = QLabel()
        hbox.addWidget(self.answer_label)
        layout.addLayout(hbox)

        # 设置窗口的主布局
        self.setLayout(layout)

    def on_button_clicked(self):
        # 从文本框中获取问题
        prompt = self.text_edit.text()

        # 获取选中的线程数量
        num_threads = self.thread_spinbox.value()

        # 创建并启动线程
        thread = ChatThread(prompt, num_threads)
        thread.response_ready.connect(self.on_response_ready)
        thread.start()

    def on_response_ready(self, response):
        # 将答案显示在标签中
        self.answer_label.setText(response)


if __name__ == '__main__':
    # 创建一个Qt应用对象
    app = QApplication(sys.argv)

    # 创建一个窗口对象
    window = ChatWindow()

    # 显示窗口
    window.show()

    # 运行Qt应用的主循环
    sys.exit(app.exec_())
'''



import sys
import openai
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton
from PyQt5.QtCore import Qt

class ChatWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口标题和大小
        self.setWindowTitle('小杰巨无霸gpt自动生成器')
        self.resize(500, 400)

        # 创建一个垂直布局,并将所有控件添加到布局中
        layout = QVBoxLayout()

        # 创建一个标签,并添加到布局中
        label = QLabel('请在下方输入您的问题:')
        label.setStyleSheet('font-size: 18pt; color: #006699; font-family: SimSun')
        label.setAlignment(Qt.AlignCenter)
        layout.addWidget(label)

        # 创建一个文本框,并添加到布局中
        self.text_edit = QLineEdit()
        self.text_edit.setStyleSheet('font-size: 14pt; font-family: SimSun')
        layout.addWidget(self.text_edit)

        # 创建一个水平布局,并添加一个按钮和一个标签
        hbox = QHBoxLayout()
        self.button = QPushButton('开始生成')
        self.button.setStyleSheet('font-size: 16pt; font-family: SimSun; color: white; background-color: #006699')
        self.button.clicked.connect(self.on_button_clicked)
        hbox.addWidget(self.button)
        self.answer_label = QLabel()
        self.answer_label.setStyleSheet('font-size: 14pt; color: #006699; font-family: SimSun')
        self.answer_label.setAlignment(Qt.AlignCenter)
        hbox.addWidget(self.answer_label)
        layout.addLayout(hbox)
        hbox.setAlignment(Qt.AlignCenter)

        # 设置窗口的主布局
        self.setLayout(layout)

        # 初始化OpenAI API
        openai.api_key = "这里输入你获取的KEY"

    def on_button_clicked(self):
        # 从文本框中获取问题
        prompt = self.text_edit.text()

        # 使用OpenAI API获取答案
        response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=prompt,
            max_tokens=1024,
            temperature=0.5,
            top_p=1.0,
            frequency_penalty=0.0,
            presence_penalty=0.0
        )

        # 将答案显示在标签中
        self.answer_label.setText(response.choices[0].text.strip())


if __name__ == '__main__':
    # 创建一个Qt应用对象
    app = QApplication(sys.argv)

    # 创建一个窗口对象
    window = ChatWindow()

    # 显示窗口
    window.show()

    # 运行Qt应用的主循环
    sys.exit(app.exec_())

成品展示

UI界面比较简单,有兴趣的伙伴可以深化美化一番。

直接输入问题,就可以生成答案!

到此这篇关于Python调用ChatGPT的API实现文章生成的文章就介绍到这了,更多相关Python ChatGPT生成文章内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现将绝对URL替换成相对URL的方法

    Python实现将绝对URL替换成相对URL的方法

    这篇文章主要介绍了Python实现将绝对URL替换成相对URL的方法,涉及Python字符串操作及正则匹配的相关技巧,需要的朋友可以参考下
    2015-06-06
  • pandas创建DataFrame的方式小结

    pandas创建DataFrame的方式小结

    今天给大家整理了pandas创建DataFrame的方式小结,现在我们就来看看这三种生成Dataframe的方式,每种方式通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-09-09
  • Python实现将蓝底照片转化为白底照片功能完整实例

    Python实现将蓝底照片转化为白底照片功能完整实例

    这篇文章主要介绍了Python实现将蓝底照片转化为白底照片功能,结合完整实例形式分析了Python基于cv2库进行图形转换操作的相关实现技巧,需要的朋友可以参考下
    2019-12-12
  • python获取当前运行函数名称的方法实例代码

    python获取当前运行函数名称的方法实例代码

    这篇文章主要介绍了python获取当前运行函数名称的方法实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • Python列表推导式详情

    Python列表推导式详情

    这篇文章主要介绍了Python列表推导式,列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式,下面来看看详细内容吧
    2021-11-11
  • Python批量修改文件后缀的方法

    Python批量修改文件后缀的方法

    这篇文章主要介绍了Python批量修改文件后缀的方法,有需要的朋友可以参考一下
    2014-01-01
  • python自动重试第三方包retrying模块的方法

    python自动重试第三方包retrying模块的方法

    retrying是一个python的重试包,可以用来自动重试一些可能运行失败的程序段。这篇文章主要介绍了python自动重试第三方包retrying的方法,需要的朋友参考下吧
    2018-04-04
  • 使用Python脚本来获取Cisco设备信息的示例

    使用Python脚本来获取Cisco设备信息的示例

    这篇文章主要介绍了编写Python脚本来获取Python脚本来获取Cisco设备信息的教程,文中的示例是获取一台思科交换机的脚本,需要的朋友可以参考下
    2015-05-05
  • Python+tkinter实现树形图绘制

    Python+tkinter实现树形图绘制

    Treeview是ttk中的树形表组件,功能十分强大,非常适用于系统路径的表达,下面我们就来看看如何利用这一组件实现树形图的绘制吧,有需要的可以参考下
    2023-09-09
  • python3安装OCR识别库tesserocr过程图解

    python3安装OCR识别库tesserocr过程图解

    这篇文章主要介绍了python3安装OCR识别库tesserocr过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论