justmichaelaj's picture
Create main project
acccd91
raw
history blame contribute delete
No virus
4.64 kB
import Constants
import sys
import openai
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import (
QApplication,
QWidget,
QLabel,
QLineEdit,
QPushButton,
QVBoxLayout,
QHBoxLayout,
QGroupBox,
QTextEdit
)
openai.api_key = Constants.API_KEY
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.logo_label = QLabel()
self.logo_pixmap = QPixmap('michaelajayi.jpg').scaled(
500, 500, Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.logo_label.setPixmap(self.logo_pixmap)
self.input_label = QLabel('Ask Something')
self.input_field = QLineEdit()
self.input_field.setPlaceholderText('Type here...')
self.answer_label = QLabel('Answer:')
self.answer_field = QTextEdit()
self.answer_field.setReadOnly(True)
self.sumbit_button = QPushButton('Sumbit')
self.sumbit_button.setStyleSheet(
"""
QPushButton {
background-color: #2F3540;
border: none;
color: white;
padding: 15px 32px;
font-size: 18px;
font-weight: bold;
border-radius: 25px;
}
QpushButton:hover {
background-color: #3e8e41;
}
"""
)
self.recommended_questions_group = QGroupBox('Recommended Questions')
self.recommended_questions_layout = QVBoxLayout()
self.recommended_questions = ["What is the four corner opposition?",
"How do I become a better storyteller?", "What are some popular ways to get better at writting?"]
self.question_buttons = []
# Create a layout
layout = QVBoxLayout()
layout.setContentsMargins(20, 20, 20, 20)
layout.setSpacing(50)
layout.setAlignment(Qt.AlignCenter)
# Add Logo
layout.addWidget(self.logo_label, alignment=Qt.AlignCenter)
# Add Input Field and Sumbit Button
input_layout = QHBoxLayout()
input_layout.addWidget(self.input_label)
input_layout.addWidget(self.input_field)
input_layout.addWidget(self.sumbit_button)
layout.addLayout(input_layout)
# Add Answer Field
layout.addWidget(self.answer_label)
layout.addWidget(self.answer_field)
# add the recommended questions buttons
for question in self.recommended_questions:
button = QPushButton(question)
button.setStyleSheet(
"""
QPushButton {
background-color: #FFFFFF:
border: 2px solid #00AEFF;
colour: #00AEFF;
padding: 10px 20px;
font-size: 30px;
font-weight: bold;
border-radius: 5px;
}
QPushButton:hover {
background-color: #00AEFF;
color: #FFFFFF;
}"""
)
button.clicked.connect(
lambda _, q=question: self.input_field.setText(q))
self.recommended_questions_layout.addWidget(button)
self.question_buttons.append(button)
self.recommended_questions_group.setLayout(
self.recommended_questions_layout)
layout.addWidget(self.recommended_questions_group)
# Set the layout
self.setLayout(layout)
# Set the window properties
self.setWindowTitle('Storyteller Writer Advisor Bot')
self.setGeometry(200, 200, 600, 600)
# Connect the submit button to the function which queries OpenAI's API
self.sumbit_button.clicked.connect(self.get_answer)
def get_answer(self):
question = self.input_field.text()
completion = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a Storyteller expert. Answer the follwing questions in a concise way or with bullet points."},
{"role": "user", "content": "What is the four corner opposition?"},
{"role": "assistant", "content": "A story structure writing technique that draws the lines between four leading charcters conflicts."},
{"role": "user", "content": f'{question}'}],
max_tokens=1024,
n=1,
stop=None,
temperature=1
)