| 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 |
|
|