-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
70 lines (52 loc) · 2.55 KB
/
app.py
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
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()