mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
Co-authored-by: Juan Michelini <juan@juan.com.uy> Co-authored-by: Engel Nyst <enyst@users.noreply.github.com> Co-authored-by: openhands <openhands@all-hands.dev>
27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
from openhands.critic.base import BaseCritic, CriticResult
|
|
from openhands.events import Event
|
|
from openhands.events.action import Action, AgentFinishAction
|
|
|
|
|
|
class AgentFinishedCritic(BaseCritic):
|
|
"""This is a simple rule-based critic that checks if the last event is an AgentFinishAction.
|
|
If not, it will return a score of 0 and a message indicating that the agent did not finish.
|
|
If the git patch is provided and is empty, it will return a score of 0 and a message indicating that the git patch is empty.
|
|
"""
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def evaluate(
|
|
self, events: list[Event], git_patch: str | None = None
|
|
) -> CriticResult:
|
|
last_action = next((h for h in reversed(events) if isinstance(h, Action)), None)
|
|
|
|
if git_patch is not None and len(git_patch.strip()) == 0:
|
|
return CriticResult(score=0, message='Git patch is empty.')
|
|
|
|
if isinstance(last_action, AgentFinishAction):
|
|
return CriticResult(score=1, message='Agent finished.')
|
|
else:
|
|
return CriticResult(score=0, message='Agent did not finish.')
|