实操目标:
最近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, pyqtSignalclass ChatThread(QThread):response_ready = pyqtSignal(str)def __init__(self, prompt, num_threads):super().__init__()self.prompt = promptself.num_threads = num_threadsdef 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 Qtclass 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 APIopenai.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界面比较简单,有兴趣的伙伴可以深化美化一番。
直接输入问题,就可以生成答案!