civerson916 commited on
Commit
73b442d
·
verified ·
1 Parent(s): 1871db3

Added a user-specific answer cache

Browse files
Files changed (2) hide show
  1. evaluator.py +4 -6
  2. runner.py +8 -7
evaluator.py CHANGED
@@ -57,14 +57,11 @@ class Evaluator():
57
  questions = self.get_questions()
58
  return questions[random.randint(0, len(questions)-1)]
59
 
60
- def _read_answer_file(self, file_prefix) -> List[str]:
61
-
62
- logger.info(f"File prefix: {file_prefix}")
63
-
64
- with open("answers.json", "r") as f:
65
  pairs = [QuestionAnswerPair(**pair) for pair in json.load(f)]
66
  formatted_data = [pair.get_answer() for pair in pairs]
67
- # Return count and the formatted data
68
  return formatted_data
69
 
70
  def submit_answers(self, username: str) -> str:
@@ -73,6 +70,7 @@ class Evaluator():
73
  answers_payload = self._read_answer_file({username})
74
  except FileNotFoundError:
75
  return "Click 'Get One Answer' or 'Get All Answers' to run before trying to submit."
 
76
  agent_code = f"https://huggingface.co/spaces/{self.settings.space_id}/tree/main"
77
  submission_data = {
78
  "username": self.settings.username,
 
57
  questions = self.get_questions()
58
  return questions[random.randint(0, len(questions)-1)]
59
 
60
+ def _read_answer_file(self, username) -> List[str]:
61
+ """Read the question answer pairs from a user-specific answer file."""
62
+ with open(f"answers_{username}.json", "r") as f:
 
 
63
  pairs = [QuestionAnswerPair(**pair) for pair in json.load(f)]
64
  formatted_data = [pair.get_answer() for pair in pairs]
 
65
  return formatted_data
66
 
67
  def submit_answers(self, username: str) -> str:
 
70
  answers_payload = self._read_answer_file({username})
71
  except FileNotFoundError:
72
  return "Click 'Get One Answer' or 'Get All Answers' to run before trying to submit."
73
+
74
  agent_code = f"https://huggingface.co/spaces/{self.settings.space_id}/tree/main"
75
  submission_data = {
76
  "username": self.settings.username,
runner.py CHANGED
@@ -1,5 +1,5 @@
1
  from settings import Settings
2
- from models import QuestionAnswerPair
3
  from agent import BasicAgent
4
  import pandas as pd
5
  import logging
@@ -14,9 +14,10 @@ class Runner():
14
  def __init__(self, settings: Settings):
15
  self.settings = settings
16
 
17
- def _save_pairs(self, pairs: list[QuestionAnswerPair]):
 
18
  answers = [pair.model_dump() for pair in pairs if pair is not None]
19
- with open("answers.json", "w") as f:
20
  json.dump(answers, f, indent=4)
21
 
22
  def _enrich_question_text(self, item):
@@ -33,7 +34,7 @@ class Runner():
33
  question_text = f"{question_text} file_name: {file_name} (use tools to fetch the file)"
34
  return question_text
35
 
36
- async def _run_agent_async(self, item):
37
  """Runs the agent asynchronously."""
38
  task_id = item.task_id
39
  question_text = self._enrich_question_text(item)
@@ -45,12 +46,12 @@ class Runner():
45
  return QuestionAnswerPair(task_id=task_id,
46
  question=item.question, answer=str(answer))
47
 
48
- def _assign_questions(self, questions):
49
  """Runs the asynchronous loop and returns task outputs."""
50
  tasks = [self._run_agent_async(item) for item in questions]
51
  return asyncio.gather(*tasks)
52
 
53
- def run_agent(self, questions) -> pd.DataFrame:
54
  """Run the agent(s) async, save answers and return a dataframe"""
55
  # Assign questions to agents and wait
56
  try:
@@ -67,7 +68,7 @@ class Runner():
67
  pairs = run_tasks_in_thread()
68
 
69
  # save json to disk and return a dataframe
70
- self._save_pairs(pairs)
71
  results_log = [pair.model_dump() for pair in pairs if pair is not None]
72
  if not results_log:
73
  logger.warning("Agent did not produce any answers to submit.")
 
1
  from settings import Settings
2
+ from models import Question, QuestionAnswerPair
3
  from agent import BasicAgent
4
  import pandas as pd
5
  import logging
 
14
  def __init__(self, settings: Settings):
15
  self.settings = settings
16
 
17
+ def _save_pairs(self, pairs: list[QuestionAnswerPair], username: str):
18
+ """Write the question answer pairs to a user-specific file."""
19
  answers = [pair.model_dump() for pair in pairs if pair is not None]
20
+ with open(f"answers_{username}.json", "w") as f:
21
  json.dump(answers, f, indent=4)
22
 
23
  def _enrich_question_text(self, item):
 
34
  question_text = f"{question_text} file_name: {file_name} (use tools to fetch the file)"
35
  return question_text
36
 
37
+ async def _run_agent_async(self, item: Question):
38
  """Runs the agent asynchronously."""
39
  task_id = item.task_id
40
  question_text = self._enrich_question_text(item)
 
46
  return QuestionAnswerPair(task_id=task_id,
47
  question=item.question, answer=str(answer))
48
 
49
+ def _assign_questions(self, questions: list[Question]):
50
  """Runs the asynchronous loop and returns task outputs."""
51
  tasks = [self._run_agent_async(item) for item in questions]
52
  return asyncio.gather(*tasks)
53
 
54
+ def run_agent(self, questions: list[Question], username: str) -> pd.DataFrame:
55
  """Run the agent(s) async, save answers and return a dataframe"""
56
  # Assign questions to agents and wait
57
  try:
 
68
  pairs = run_tasks_in_thread()
69
 
70
  # save json to disk and return a dataframe
71
+ self._save_pairs(pairs, username)
72
  results_log = [pair.model_dump() for pair in pairs if pair is not None]
73
  if not results_log:
74
  logger.warning("Agent did not produce any answers to submit.")