Spaces:
Build error
Build error
from abc import ABC, abstractmethod | |
from typing import Any | |
from openhands.events.action import Action | |
class ActionParseError(Exception): | |
"""Exception raised when the response from the LLM cannot be parsed into an action.""" | |
def __init__(self, error: str): | |
self.error = error | |
def __str__(self) -> str: | |
return self.error | |
class ResponseParser(ABC): | |
"""This abstract base class is a general interface for an response parser dedicated to | |
parsing the action from the response from the LLM. | |
""" | |
def __init__( | |
self, | |
) -> None: | |
# Need pay attention to the item order in self.action_parsers | |
self.action_parsers: list[ActionParser] = [] | |
def parse(self, response: Any) -> Action: | |
"""Parses the action from the response from the LLM. | |
Parameters: | |
- response: The response from the LLM, which can be a string or a dictionary. | |
Returns: | |
- action (Action): The action parsed from the response. | |
""" | |
pass | |
def parse_response(self, response: Any) -> str: | |
"""Parses the action from the response from the LLM. | |
Parameters: | |
- response: The response from the LLM, which can be a string or a dictionary. | |
Returns: | |
- action_str (str): The action str parsed from the response. | |
""" | |
pass | |
def parse_action(self, action_str: str) -> Action: | |
"""Parses the action from the response from the LLM. | |
Parameters: | |
- action_str (str): The response from the LLM. | |
Returns: | |
- action (Action): The action parsed from the response. | |
""" | |
pass | |
class ActionParser(ABC): | |
"""This abstract base class is a general interface for an action parser dedicated to | |
parsing the action from the action str from the LLM. | |
""" | |
def check_condition(self, action_str: str) -> bool: | |
"""Check if the action string can be parsed by this parser.""" | |
pass | |
def parse(self, action_str: str) -> Action: | |
"""Parses the action from the action string from the LLM response.""" | |
pass | |