-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrun_script.py
52 lines (37 loc) · 1.8 KB
/
run_script.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
from datetime import datetime
from evaluator.evaluator import MessageEvaluation, evaluate_message_importance
from mail_client.get_mail import get_unread_messages
import commentjson
def start():
# get unread emails
messages = get_unread_messages(1, ['INBOX', 'UNREAD'])
if not messages:
print('\n\n- No unread messages found -\n\n')
return
# Open the config file to get context and settings
with open('prompt-config-setup.json', 'r') as file:
prompt_config = commentjson.load(file)
print(f'\n\n-------- Evaluating messages ({len(messages)}) --------\n')
evaluations: list[MessageEvaluation] = []
for message in messages:
# Print message headers in green
print('\033[92m' + f"Message ID: {message['id']} - Subject: {message['subject']}" + '\033[0m')
print(f"Snippet: {message['snippet']}")
evaluation = evaluate_message_importance(prompt_config, message)
print(f'Rating: {evaluation["rating"]}')
print(f'Evaluation: {evaluation["response"]}')
print('\n----------------\n')
evaluations.append(evaluation)
print('\n\n-------- Finished evaluating messages --------\n')
# Save evaluations to CSV file
filename = f'evaluation-results-{datetime.now().strftime("%Y-%m-%d-%H-%M-%S")}.csv'
with open(filename, 'w') as file:
# format MessageEvaluation objects to CSV
csv = 'Rating,Message Subject,Message Content,Evaluation,Model\n'
# double quote values to avoid issues with commas
for evaluation in evaluations:
csv += f'"{evaluation["rating"]}", "{evaluation["message"]["subject"]}", "{evaluation["response"]}", "{evaluation["model"]}"\n'
file.write(csv)
print(f'Evaluation results saved to {filename}')
if __name__ == '__main__':
start()