Spaces:
Sleeping
Sleeping
# coding: utf-8 | |
# Copyright (c) 2025 inclusionAI. | |
import json | |
from typing import List, Tuple, Dict, Any | |
from aworld.core.tool.base import Tool | |
from aworld.core.common import Observation, ActionModel, Config | |
from aworld.logs.util import logger | |
from aworld.tools.utils import build_observation | |
class TemplateTool(Tool): | |
def __init__(self, conf: Config, **kwargs) -> None: | |
super(TemplateTool, self).__init__(conf, **kwargs) | |
def reset(self, *, seed: int | None = None, options: Dict[str, str] | None = None) -> Tuple[ | |
Observation, dict[str, Any]]: | |
# from options obtain user query | |
return build_observation(observer=self.name(), | |
ability='', | |
content=options.get("query", None) if options else None), {} | |
def do_step(self, | |
action: List[ActionModel], | |
**kwargs) -> Tuple[Observation, float, bool, bool, Dict[str, Any]]: | |
reward = 0 | |
fail_error = "" | |
action_result = None | |
invalid_acts: List[int] = [] | |
for i, act in enumerate(action): | |
if act.tool_name != self.name(): | |
logger.warning(f"tool {act.tool_name} is not a {self.name()} tool!") | |
invalid_acts.append(i) | |
if invalid_acts: | |
for i in invalid_acts: | |
action[i] = None | |
resp = "" | |
try: | |
action_result, resp = self.action_executor.execute_action(action, **kwargs) | |
reward = 1 | |
except Exception as e: | |
fail_error = str(e) | |
terminated = kwargs.get("terminated", False) | |
for res in action_result: | |
if res.is_done: | |
terminated = res.is_done | |
self._finished = True | |
info = {"exception": fail_error} | |
info.update(kwargs) | |
if resp: | |
resp = json.dumps(resp) | |
else: | |
resp = action_result[0].content | |
observation = build_observation(observer=self.name(), | |
action_result=action_result, | |
ability=action[-1].action_name, | |
content=resp) | |
return (observation, | |
reward, | |
terminated, | |
kwargs.get("truncated", False), | |
info) | |
def close(self) -> None: | |
pass | |
def finished(self) -> bool: | |
# one time | |
return True | |