Lagent / lagent /actions /builtin_actions.py
Superkingjcj's picture
Upload 111 files
e679d69 verified
raw
history blame
3.49 kB
from typing import Optional
from lagent.actions.base_action import BaseAction, tool_api
from lagent.actions.parser import BaseParser
from lagent.schema import ActionReturn, ActionStatusCode, ActionValidCode
class InvalidAction(BaseAction):
"""This is a invalid action class, which is used to return error message
when the action is invalid.
Args:
err_msg (str): The error message. Defaults to 'The action is invalid,
please check the action name'.
Returns:
ActionReturn: The action return.
"""
def __init__(self,
err_msg:
str = 'The action is invalid, please check the action name.',
description: Optional[dict] = None,
parser=BaseParser) -> None:
super().__init__(description, parser)
self._err_msg = err_msg
@tool_api
def run(self, err_msg: Optional[str] = None) -> ActionReturn:
"""Return the error message.
Args:
err_msg (str, optional): The error message. If err_msg is not None,
it will be returned, otherwise the default error message will
be returned. Defaults to None.
"""
action_return = ActionReturn(
url=None,
args=dict(text=err_msg),
errmsg=err_msg or self._err_msg,
type=self.name,
valid=ActionValidCode.INVALID,
state=ActionStatusCode.API_ERROR)
return action_return
class NoAction(BaseAction):
"""This is a no action class, which is used to return error message when
the response does not follow the format.
Args:
err_msg (str): The error message. Defaults to
'Please follow the format'.
"""
def __init__(self,
err_msg: str = 'Please follow the format',
description: Optional[dict] = None,
parser=BaseParser):
super().__init__(description, parser)
self._err_msg = err_msg
@tool_api
def run(self, err_msg: Optional[str] = None) -> ActionReturn:
"""Return the error message.
Args:
err_msg (str, optional): The error message. If err_msg is not None,
it will be returned, otherwise the default error message will
be returned. Defaults to None.
Returns:
ActionReturn: The action return.
"""
action_return = ActionReturn(
url=None,
args=dict(text=err_msg),
type=self.name,
errmsg=err_msg or self._err_msg,
valid=ActionValidCode.INVALID,
state=ActionStatusCode.API_ERROR)
return action_return
class FinishAction(BaseAction):
"""This is a finish action class, which is used to return the final
result."""
def __init__(self, description: Optional[dict] = None, parser=BaseParser):
super().__init__(description, parser)
@tool_api
def run(self, response: str) -> ActionReturn:
"""Return the final result.
Args:
response (str): The final result.
Returns:
ActionReturn: The action return.
"""
action_return = ActionReturn(
url=None,
args=dict(text=response),
result=[dict(type='text', content=response)],
type=self.name,
valid=ActionValidCode.FINISH,
state=ActionStatusCode.SUCCESS)
return action_return