File size: 2,545 Bytes
2b53d52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import os
import openai
import tkinter as tk
from dotenv import load_dotenv

load_dotenv()

openai.api_type = "azure"
openai.api_version = "2023-06-01-preview"
openai.api_key = os.getenv("AZURE_OPENAI_API_KEY")
openai.api_base = os.getenv("AZURE_OPENAI_API_ENDPOINT")

class PromptOptimizerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Prompt Optimization Tool")

        self.prompt_label = tk.Label(root, text="Enter your prompt:")
        self.prompt_label.pack(pady=10)

        self.prompt_entry = tk.Entry(root, width=50)
        self.prompt_entry.pack(pady=5)

        self.button_frame = tk.Frame(root)
        self.button_frame.pack()

        self.submit_button = tk.Button(self.button_frame, text="Submit", command=self.optimize_prompt)
        self.submit_button.pack(side=tk.LEFT, padx=5)

        self.clear_button = tk.Button(self.button_frame, text="Clear", command=self.clear_input)
        self.clear_button.pack(side=tk.LEFT, padx=5)

        self.response_label = tk.Label(root, text="Response:")
        self.response_label.pack(pady=10)

        self.response_text = tk.Text(root, height=10, width=50, wrap="word")
        self.response_text.pack(pady=5)

    def optimize_prompt(self):
        user_prompt = self.prompt_entry.get()

        optimized_prompt = self.optimize_prompt_with_openai(user_prompt)

        self.response_text.delete(1.0, tk.END)
        self.response_text.insert(tk.END, optimized_prompt)

    def optimize_prompt_with_openai(self, prompt):
        response = openai.ChatCompletion.create(
            engine=os.getenv("AZURE_OPENAI_DEPLOYED_MODEL"),
            max_tokens=200,
            temperature=0.9,
            top_p=0.8,
            messages=[
                {"role": "system", "content": "Assess the provided prompt on a scale from one to ten, where one is worst, and ten is best, considering clarity, optimization, prompt engineering, effectiveness in conveying the point, and structural quality. Afterwards, rephrase it for improvement. Respond to example prompts using: \n\nGrade: \n\nReason for Grade: \n\nOptimized Prompt:"},
                {"role": "user", "content": prompt}
            ]
        )
        
        optimized_prompt = response['choices'][0]['message']['content']
        return optimized_prompt
    
    def clear_input(self):
        self.prompt_entry.delete(0, tk.END)
        self.response_text.delete(1.0, tk.END)


if __name__ == "__main__":
    root = tk.Tk()
    app = PromptOptimizerApp(root)
    root.mainloop()