mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-28 16:07:46 +00:00
6da6fb5ee5
* refactor: Remove unused code and update documentation in CoSTEER module * fix mypy error * fix black error --------- Co-authored-by: Young <afe.young@gmail.com>
51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
"""
|
|
It is expected to be shared among different frameworks.
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
|
|
|
|
class Feedback:
|
|
"""
|
|
Design Principle:
|
|
It will be more like a **dataclass**.
|
|
The building process of feedback will should be in evaluator
|
|
"""
|
|
|
|
def finished(self) -> bool:
|
|
"""
|
|
In some implementations, tasks may fail multiple times, leading agents to skip the implementation.
|
|
So both skip and success indicate the task is finished.
|
|
"""
|
|
return self.__bool__()
|
|
|
|
def __bool__(self) -> bool:
|
|
return True
|
|
|
|
|
|
class EvaluableObj:
|
|
"""
|
|
A set of information that is evaluable. Following things can be included.
|
|
- Task
|
|
- Solution
|
|
- Ground Truth
|
|
"""
|
|
|
|
|
|
class Evaluator(ABC):
|
|
"""
|
|
Design Principle:
|
|
|
|
It should cover the building process of feedback from raw information.
|
|
Typically the building of feedback will be two phases.
|
|
1. raw information including stdout & workspace (feedback itself will handle this)
|
|
2. advanced/summarized feedback information. (evaluate will handle this)
|
|
"""
|
|
|
|
@abstractmethod
|
|
def evaluate(
|
|
self,
|
|
eo: EvaluableObj,
|
|
) -> Feedback:
|
|
raise NotImplementedError
|