You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
66 lines
2.2 KiB
import sys
|
|
import openai
|
|
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QLineEdit, QWidget
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
# Set window title
|
|
self.setWindowTitle("Chatbot")
|
|
|
|
# Set window size
|
|
self.setGeometry(100, 100, 800, 600)
|
|
|
|
# Create central widget
|
|
central_widget = QWidget()
|
|
|
|
# Create text input field for user's messages
|
|
self.text_input = QLineEdit(self)
|
|
self.text_input.setGeometry(20, 540, 550, 40)
|
|
|
|
# Initialize API needs
|
|
openai.api_key = "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"
|
|
self.chat_log = [{"role": "system", "content": "Tu es un prof de Python"}]
|
|
|
|
# Create chat window to display conversation
|
|
self.chat_window = QTextEdit(self)
|
|
self.chat_window.setGeometry(20, 20, 760, 500)
|
|
self.chat_window.setReadOnly(True)
|
|
|
|
# Create send button to send user's messages
|
|
self.send_button = QPushButton("Send", self)
|
|
self.send_button.setGeometry(580, 540, 200, 40)
|
|
self.send_button.clicked.connect(self.send_message)
|
|
|
|
def send_message(self):
|
|
# Get user's message from text input field
|
|
user_message = self.text_input.text()
|
|
|
|
self.chat_log.append({"role": "user", "content": user_message})
|
|
reply = openai.ChatCompletion.create(
|
|
model="gpt-3.5-turbo",
|
|
messages=self.chat_log)
|
|
response=reply['choices'][0]['message']['content']
|
|
self.chat_log.append({"role": "assistant", "content":response})
|
|
|
|
# Add user's message and bot's response to chat window
|
|
self.chat_window.append(f"<p style='color: #0084ff;'><strong>You :</strong> {user_message}</p>")
|
|
self.chat_window.append(f"<p style='color: #008000;'><strong>Bot :</strong> {response}</p>")
|
|
|
|
# Clear text input field
|
|
self.text_input.clear()
|
|
|
|
if __name__ == "__main__":
|
|
# Create QApplication instance
|
|
app = QApplication(sys.argv)
|
|
|
|
# Create MainWindow instance
|
|
main_window = MainWindow()
|
|
|
|
# Show MainWindow
|
|
main_window.show()
|
|
|
|
# Execute QApplication event loop
|
|
sys.exit(app.exec_())
|