|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from abc import ABC, abstractmethod |
|
|
from typing import Any, List, Union |
|
|
|
|
|
from camel.toolkits import FunctionTool |
|
|
|
|
|
|
|
|
class BaseRuntime(ABC): |
|
|
r"""An abstract base class for all CAMEL runtimes.""" |
|
|
|
|
|
def __init__(self): |
|
|
super().__init__() |
|
|
|
|
|
self.tools_map = dict() |
|
|
|
|
|
@abstractmethod |
|
|
def add( |
|
|
self, |
|
|
funcs: Union[FunctionTool, List[FunctionTool]], |
|
|
*args: Any, |
|
|
**kwargs: Any, |
|
|
) -> "BaseRuntime": |
|
|
r"""Adds a new tool to the runtime.""" |
|
|
pass |
|
|
|
|
|
@abstractmethod |
|
|
def reset(self, *args: Any, **kwargs: Any) -> Any: |
|
|
r"""Resets the runtime to its initial state.""" |
|
|
pass |
|
|
|
|
|
def get_tools(self) -> List[FunctionTool]: |
|
|
r"""Returns a list of all tools in the runtime.""" |
|
|
return list(self.tools_map.values()) |
|
|
|