Skip to content

Latest commit

 

History

History
615 lines (249 loc) · 13.1 KB

gui-gpt-api-prompt-generator.md

File metadata and controls

615 lines (249 loc) · 13.1 KB

GUI GPT API prompt generator | Start Chat

A GUI GPT-3/4 API prompt generator written in Python. Can be used to create for prompt engineering to create more advanced prompts in a visual way and fetch results directly in the interface.

Prompt

You are an experienced python developer. Your task is to develop a visual (GUI) desktop prompt editor with the following features:

Selection of a role for ChatGPT to use from a list of most popular roles (e.g. Lawyer, Software Developer, Marketing Specialist, etc.).

A slider to regulate Top P of the model

A slider to regulate Temperature of the model

A checkbox to include markdown (results in prompt addendum that requests to include headings, formatting, etc.)

A checkbox to include questions from the model (results in prompt addendum that requests to include the text "If you have any clarifying questions about the task, ask now before answering")

A text field to input the base prompt

A button to generate the resulting prompt

A text field that is editable and displays the resulting prompt (separate from the chat)

A widget to select a GPT model from a list of all available models

A button to call the selected GPT API to fetch the answer to the prompt from field 8.

A chat log to display the result of queries, with new queries getting added to the bottom like in ChatGPT.


The Right panel containing the chat should take 80% width and the left panel with the prompts and buttons should be 20% width.

The chat should support text with markup.

Develop python code for the requested program.

Welcome Message

Sure, here is an example Python code to develop a visual desktop prompt editor with the requested features using the PyQt5 GUI framework:

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QWidget, QTextEdit, QComboBox, QPushButton, QLabel, QCheckBox, QSlider

from PyQt5.QtCore import Qt



class PromptEditor(QMainWindow):



    def __init__(self):

        super().__init__()

        self.setWindowTitle("ChatGPT Prompt Editor")

        self.setFixedSize(800, 600)



        # Create the left panel widget for prompts and buttons

        left_panel = QWidget(self)

        left_panel.setMinimumWidth(160)



        vbox = QVBoxLayout()



        # Create a dropdown list for role selection

        role_label = QLabel("Select a role:")

        self.role_combo = QComboBox()

        self.role_combo.addItems(["Lawyer", "Software Developer", "Marketing Specialist"])

        vbox.addWidget(role_label)

        vbox.addWidget(self.role_combo)



        # Create a slider for Top P regulation

        top_p_label = QLabel("Top P:")

        self.top_p_slider = QSlider(Qt.Horizontal)

        self.top_p_slider.setMinimum(0)

        self.top_p_slider.setMaximum(100)

        self.top_p_slider.setValue(50)

        vbox.addWidget(top_p_label)

        vbox.addWidget(self.top_p_slider)



        # Create a slider for Temperature regulation

        temp_label = QLabel("Temperature:")

        self.temp_slider = QSlider(Qt.Horizontal)

        self.temp_slider.setMinimum(1)

        self.temp_slider.setMaximum(100)

        self.temp_slider.setValue(50)

        vbox.addWidget(temp_label)

        vbox.addWidget(self.temp_slider)



        # Create a checkbox for markdown

        self.markdown_checkbox = QCheckBox("Include Markdown")

        vbox.addWidget(self.markdown_checkbox)



        # Create a checkbox for questions

        self.questions_checkbox = QCheckBox("Include Questions")

        vbox.addWidget(self.questions_checkbox)



        # Create a text field for inputting the base prompt

        prompt_label = QLabel("Enter your base prompt:")

        self.prompt_textedit = QTextEdit()

        vbox.addWidget(prompt_label)

        vbox.addWidget(self.prompt_textedit)



        # Create a button for generating the resulting prompt

        self.generate_button = QPushButton("Generate Prompt")

        vbox.addWidget(self.generate_button)



        # Create an editable text field to display the resulting prompt

        result_label = QLabel("Resulting Prompt:")

        self.result_textedit = QTextEdit()

        self.result_textedit.setReadOnly(False)

        vbox.addWidget(result_label)

        vbox.addWidget(self.result_textedit)



        # Create a dropdown list to select GPT model

        model_label = QLabel("Select GPT Model:")

        self.model_combo = QComboBox()

        self.model_combo.addItems(["GPT-3", "GPT-Neo"])

        vbox.addWidget(model_label)

        vbox.addWidget(self.model_combo)



        # Create a button for fetching answer from selected GPT API

        self.api_button = QPushButton("Get Answer")

        vbox.addWidget(self.api_button)



        left_panel.setLayout(vbox)



        # Create the right panel widget for chat logs

        right_panel = QWidget(self)

        right_panel.setMinimumWidth(640)



        self.chat_textedit = QTextEdit()

        self.chat_textedit.setReadOnly(True)



        vbox = QVBoxLayout()

        vbox.addWidget(self.chat_textedit)



        right_panel.setLayout(vbox)



        # Set the widths of the panels using a grid layout manager

        grid = QGridLayout()

        grid.setColumnStretch(0, 20)

        grid.setColumnStretch(1, 80)

        grid.addWidget(left_panel, 0, 0)

        grid.addWidget(right_panel, 0, 1)



        main_widget = QWidget()

        main_widget.setLayout(grid)

        self.setCentralWidget(main_widget)



        # Connect the generate button to create resulting prompt

        self.generate_button.clicked.connect(self.create_prompt)



        # Connect the API button to fetch answer from selected GPT API

        self.api_button.clicked.connect(self.fetch_answer)



    # Function to create the resulting prompt based on user inputs

    def create_prompt(self):

        role = self.role_combo.currentText()

        top_p = float(self.top_p_slider.value()) / 100

        temperature = float(self.temp_slider.value()) / 100

        markdown = self.markdown_checkbox.isChecked()

        questions = self.questions_checkbox.isChecked()

        base_prompt = self.prompt_textedit.toPlainText()



        # Add markdown and questions if checkboxes are checked

        prompt = base_prompt

        if markdown:

            prompt += "\n\nPlease include headings, formatting, etc. in your answer."

        if questions:

            prompt += "\n\nIf you have any clarifying questions about the task, ask now before answering."



        # Set the resulting prompt in the editable text field

        self.result_textedit.setPlainText(prompt)



    # Function to fetch answer from selected GPT API

    def fetch

## Conversation

**ASSISTANT**: Sure, here is an example Python code to develop a visual desktop prompt editor with the requested features using the PyQt5 GUI framework:



```python

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QWidget, QTextEdit, QComboBox, QPushButton, QLabel, QCheckBox, QSlider

from PyQt5.QtCore import Qt



class PromptEditor(QMainWindow):



    def __init__(self):

        super().__init__()

        self.setWindowTitle("ChatGPT Prompt Editor")

        self.setFixedSize(800, 600)



        # Create the left panel widget for prompts and buttons

        left_panel = QWidget(self)

        left_panel.setMinimumWidth(160)



        vbox = QVBoxLayout()



        # Create a dropdown list for role selection

        role_label = QLabel("Select a role:")

        self.role_combo = QComboBox()

        self.role_combo.addItems(["Lawyer", "Software Developer", "Marketing Specialist"])

        vbox.addWidget(role_label)

        vbox.addWidget(self.role_combo)



        # Create a slider for Top P regulation

        top_p_label = QLabel("Top P:")

        self.top_p_slider = QSlider(Qt.Horizontal)

        self.top_p_slider.setMinimum(0)

        self.top_p_slider.setMaximum(100)

        self.top_p_slider.setValue(50)

        vbox.addWidget(top_p_label)

        vbox.addWidget(self.top_p_slider)



        # Create a slider for Temperature regulation

        temp_label = QLabel("Temperature:")

        self.temp_slider = QSlider(Qt.Horizontal)

        self.temp_slider.setMinimum(1)

        self.temp_slider.setMaximum(100)

        self.temp_slider.setValue(50)

        vbox.addWidget(temp_label)

        vbox.addWidget(self.temp_slider)



        # Create a checkbox for markdown

        self.markdown_checkbox = QCheckBox("Include Markdown")

        vbox.addWidget(self.markdown_checkbox)



        # Create a checkbox for questions

        self.questions_checkbox = QCheckBox("Include Questions")

        vbox.addWidget(self.questions_checkbox)



        # Create a text field for inputting the base prompt

        prompt_label = QLabel("Enter your base prompt:")

        self.prompt_textedit = QTextEdit()

        vbox.addWidget(prompt_label)

        vbox.addWidget(self.prompt_textedit)



        # Create a button for generating the resulting prompt

        self.generate_button = QPushButton("Generate Prompt")

        vbox.addWidget(self.generate_button)



        # Create an editable text field to display the resulting prompt

        result_label = QLabel("Resulting Prompt:")

        self.result_textedit = QTextEdit()

        self.result_textedit.setReadOnly(False)

        vbox.addWidget(result_label)

        vbox.addWidget(self.result_textedit)



        # Create a dropdown list to select GPT model

        model_label = QLabel("Select GPT Model:")

        self.model_combo = QComboBox()

        self.model_combo.addItems(["GPT-3", "GPT-Neo"])

        vbox.addWidget(model_label)

        vbox.addWidget(self.model_combo)



        # Create a button for fetching answer from selected GPT API

        self.api_button = QPushButton("Get Answer")

        vbox.addWidget(self.api_button)



        left_panel.setLayout(vbox)



        # Create the right panel widget for chat logs

        right_panel = QWidget(self)

        right_panel.setMinimumWidth(640)



        self.chat_textedit = QTextEdit()

        self.chat_textedit.setReadOnly(True)



        vbox = QVBoxLayout()

        vbox.addWidget(self.chat_textedit)



        right_panel.setLayout(vbox)



        # Set the widths of the panels using a grid layout manager

        grid = QGridLayout()

        grid.setColumnStretch(0, 20)

        grid.setColumnStretch(1, 80)

        grid.addWidget(left_panel, 0, 0)

        grid.addWidget(right_panel, 0, 1)



        main_widget = QWidget()

        main_widget.setLayout(grid)

        self.setCentralWidget(main_widget)



        # Connect the generate button to create resulting prompt

        self.generate_button.clicked.connect(self.create_prompt)



        # Connect the API button to fetch answer from selected GPT API

        self.api_button.clicked.connect(self.fetch_answer)



    # Function to create the resulting prompt based on user inputs

    def create_prompt(self):

        role = self.role_combo.currentText()

        top_p = float(self.top_p_slider.value()) / 100

        temperature = float(self.temp_slider.value()) / 100

        markdown = self.markdown_checkbox.isChecked()

        questions = self.questions_checkbox.isChecked()

        base_prompt = self.prompt_textedit.toPlainText()



        # Add markdown and questions if checkboxes are checked

        prompt = base_prompt

        if markdown:

            prompt += "\n\nPlease include headings, formatting, etc. in your answer."

        if questions:

            prompt += "\n\nIf you have any clarifying questions about the task, ask now before answering."



        # Set the resulting prompt in the editable text field

        self.result_textedit.setPlainText(prompt)



    # Function to fetch answer from selected GPT API

    def fetch
**USER**: continue
**ASSISTANT**:     _answer(self):

        model = self.model_combo.currentText()

        prompt = self.result_textedit.toPlainText()



        # Call the selected GPT API to fetch the answer

        # Here, we would use the appropriate library or package to interact with the API

        # We will just print a dummy message for demonstration purposes

        answer = f"Fetching answer from {model} API for prompt: '{prompt}'..."

        self.chat_textedit.append(answer)



if __name__ == '__main__':

    app = QApplication(sys.argv)

    editor = PromptEditor()

    editor.show()

    sys.exit(app.exec_())

This code creates a QMainWindow with two panels - the left panel for prompts and buttons and the right panel for chat logs. The left panel contains various widgets such as dropdown lists, sliders, text fields, and buttons that allow users to select various options and input their base prompt. The create_prompt() function generates the resulting prompt based on user inputs, which is displayed in the editable text field. The fetch_answer() function fetches the answer from the selected GPT API and displays it in the chat log.

Note that the implementation of the fetch_answer() function depends on the specific GPT API being used, and here we have used a dummy message for demonstration purposes.