-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathprompt_pattern_pr.py
78 lines (63 loc) · 3.15 KB
/
prompt_pattern_pr.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
71
72
73
74
75
76
77
78
# prompt_pattern_pr
import json
import csv
from datetime import datetime
with open('raw/pr2.json', 'r') as file:
data = json.load(file)
def analyze_prompt_structure(data):
detected_patterns = []
persona_keywords = ["you are", "act as", "pretend to be", "pretend you are"]
recipe_keywords = ["step-by-step", "recipe", "guide"]
template_keywords = ["template", "formatting"]
automator_keywords = ["script", "code", "executable"]
simple_instruction_keywords = ["explain", "describe", "list", "tell me", "give me"]
context_instruction_keywords = ["based on", "with this information"]
question_keywords = ["what", "where", "when", "who", "why"]
def contains_keywords(text, keywords):
return any(keyword in text.lower() for keyword in keywords)
for source in data.get("Sources", []):
body = source.get("Body", "")
created_at = source.get("CreatedAt")
closed_at = source.get("ClosedAt")
state = "Closed" if closed_at is not None else "Open"
time_lapsed = None
if created_at and closed_at:
created_at_dt = datetime.strptime(created_at, "%Y-%m-%dT%H:%M:%SZ")
closed_at_dt = datetime.strptime(closed_at, "%Y-%m-%dT%H:%M:%SZ")
time_lapsed = closed_at_dt - created_at_dt
body_patterns = []
if contains_keywords(body, persona_keywords):
body_patterns.append("Persona Pattern")
if contains_keywords(body, recipe_keywords):
body_patterns.append("Recipe Pattern")
if contains_keywords(body, template_keywords):
body_patterns.append("Template Pattern")
if contains_keywords(body, automator_keywords):
body_patterns.append("Output Automator Pattern")
if contains_keywords(body, simple_instruction_keywords):
body_patterns.append("Simple Instruction Pattern")
if contains_keywords(body, context_instruction_keywords):
body_patterns.append("Context and Instruction Pattern")
if contains_keywords(body, question_keywords):
body_patterns.append("Question Pattern")
conversations = source.get("ChatgptSharing", [])
for item in conversations:
number_of_prompts = item.get("NumberOfPrompts", "N/A")
conversation_url = item.get("URL", "N/A")
for pattern in body_patterns:
detected_patterns.append((
source['Number'],
pattern,
state,
time_lapsed,
number_of_prompts,
conversation_url
))
return detected_patterns
patterns = analyze_prompt_structure(data)
with open("detected_patterns_pr2.csv", "w", newline="", encoding="utf-8") as csvfile:
csv_writer = csv.writer(csvfile)
csv_writer.writerow(["Pull Request Number", "Detected Pattern", "State", "Time Lapsed", "Number of Prompts", "Conversation"])
for number, pattern, state, time_lapsed, number_of_prompts, conversation_url in patterns:
csv_writer.writerow([number, pattern, state, time_lapsed, number_of_prompts, conversation_url])
print("detected_patterns.csv_pr2.")