| 60 | return await self.step() |
| 61 | |
| 62 | async def step(self) -> Optional[Task]: |
| 63 | if self._index >= len(self._data_records): |
| 64 | return None |
| 65 | |
| 66 | record = self._data_records[self._index] |
| 67 | self._index += 1 |
| 68 | |
| 69 | return Task( |
| 70 | task_id=f"{self._index:04d}", |
| 71 | input=record.get("question") or record.get("prompt") or "", |
| 72 | system_prompt=self.system_prompt, |
| 73 | ground_truth=record.get("true_answer") or record.get("answer"), |
| 74 | extra={k: v for k, v in record.items() if k not in ["true_answer", "answer", "task_id", "id", "question", "prompt"]} |
| 75 | ) |
| 76 | |
| 77 | async def eval(self, task: Task) -> Optional[Task]: |
| 78 | result = str(task.result) if task.result is not None else "" |