Download main project from justmichaelaj/Storytelling-Questioning-Bot: direct link, hf CLI and curl.
- Browser
- Download file 4.64 kB
-
https://huggingface.co/justmichaelaj/Storytelling-Questioning-Bot/resolve/main/main%20project
- Command line
-
hf download 'hf://justmichaelaj/Storytelling-Questioning-Bot/main project'
-
curl -L -o 'main project' https://huggingface.co/justmichaelaj/Storytelling-Questioning-Bot/resolve/main/main%20project
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 | |
| ) |