102 lines
2.6 KiB
Python
102 lines
2.6 KiB
Python
import os
|
|
from prompt_techniques import LLM_prompt_technique
|
|
from datetime import datetime
|
|
import uuid
|
|
from pathlib import Path
|
|
|
|
|
|
class ResearchLogger():
|
|
|
|
def __init__(self, prefix_name, temperature, scenario_name: str = "" ) -> None:
|
|
self.log_directory = "output_dataset/"
|
|
self.timestamp = datetime.now().strftime("%m_%d_%Y__%H:%M:%S")
|
|
self.prefix = prefix_name
|
|
self.scenario = scenario_name
|
|
self.llm_temp = temperature
|
|
|
|
self.directory = f"{self.log_directory}/{self.prefix}_{self.llm_temp}temp"
|
|
self.log_file = f"{self.directory}/{self.scenario}__{self.timestamp}.md"
|
|
self.file_contents = ""
|
|
self.final_score = 0
|
|
self.number_of_scores = 0
|
|
self.researcher_score = 0
|
|
Path(self.directory).mkdir(parents=True, exist_ok=True)
|
|
|
|
self.write_header()
|
|
|
|
|
|
def write_header(self):
|
|
self.file_contents += f"""
|
|
|
|
# LLM Experiment Information
|
|
* Prefix: {self.prefix}
|
|
* Datetime: {self.timestamp}
|
|
* UniqueID: {uuid.uuid4()}
|
|
* Gherkinscenario name: {self.scenario}
|
|
* LLM-temperature: {self.llm_temp}
|
|
|
|
"""
|
|
self.write_to_file()
|
|
|
|
def write_to_file(self):
|
|
f = open(self.log_file, "a")
|
|
f.write(self.file_contents)
|
|
self.file_contents = ""
|
|
f.close()
|
|
|
|
def append_score(self, score):
|
|
self.final_score += score
|
|
self.number_of_scores += 1
|
|
|
|
def custom_researcher_score(self, score):
|
|
self.researcher_score = score
|
|
self.file_contents = f"""
|
|
### Researcher score
|
|
Researcher_score = {score}
|
|
|
|
|
|
"""
|
|
|
|
|
|
self.write_to_file()
|
|
|
|
|
|
def generate_final_score(self):
|
|
if self.researcher_score > 0 :
|
|
|
|
this_score = min(100, ( self.final_score / self.number_of_scores ) + self.researcher_score)
|
|
else:
|
|
this_score = min(100, ( self.final_score / self.number_of_scores ) - abs(self.researcher_score))
|
|
|
|
print("FINAL score")
|
|
print(self.researcher_score )
|
|
print(self.final_score)
|
|
print(self.number_of_scores)
|
|
print(self.researcher_score)
|
|
print("Final:")
|
|
print(this_score)
|
|
|
|
self.file_contents = f"""
|
|
### Final Score
|
|
Final_score = {this_score}
|
|
|
|
Progressbar: 
|
|
|
|
"""
|
|
|
|
|
|
self.write_to_file()
|
|
|
|
# Absolute path of a file
|
|
old_name = self.log_file
|
|
new_name = f"{self.directory}/{self.scenario}__{self.timestamp}__{this_score}_score.md"
|
|
|
|
# Renaming the file
|
|
os.rename(old_name, new_name)
|
|
|
|
|
|
def append_result(self, result):
|
|
self.file_contents += f"\n{result}\n"
|
|
self.write_to_file()
|
|
|