Source code for agentscope._init

# -*- coding: utf-8 -*-
"""The init function for the package."""
import json
from typing import Optional, Union, Sequence
from agentscope import agents
from .agents import AgentBase
from .logging import LOG_LEVEL
from .constants import _DEFAULT_SAVE_DIR
from .constants import _DEFAULT_LOG_LEVEL
from .constants import _DEFAULT_CACHE_DIR
from .manager import ASManager

# init the singleton class by default settings to avoid reinit in subprocess
# especially in spawn mode, which will copy the object from the parent process
# to the child process rather than re-import the module (fork mode)
ASManager()


[docs] def init( model_configs: Optional[Union[dict, str, list]] = None, project: Optional[str] = None, name: Optional[str] = None, disable_saving: bool = False, save_dir: str = _DEFAULT_SAVE_DIR, save_log: bool = True, save_code: bool = True, save_api_invoke: bool = False, cache_dir: str = _DEFAULT_CACHE_DIR, use_monitor: bool = True, logger_level: LOG_LEVEL = _DEFAULT_LOG_LEVEL, runtime_id: Optional[str] = None, agent_configs: Optional[Union[str, list, dict]] = None, studio_url: Optional[str] = None, ) -> Sequence[AgentBase]: """A unified entry to initialize the package, including model configs, runtime names, saving directories and logging settings. Args: model_configs (`Optional[Union[dict, str, list]]`, defaults to `None`): A dict, a list of dicts, or a path to a json file containing model configs. project (`Optional[str]`, defaults to `None`): The project name, which is used to identify the project. name (`Optional[str]`, defaults to `None`): The name for runtime, which is used to identify this runtime. disable_saving (`bool`, defaults to `False`): Whether to disable saving files. If `True`, this will override the `save_log`, `save_code`, and `save_api_invoke` parameters. runtime_id (`Optional[str]`, defaults to `None`): The id for runtime, which is used to identify this runtime. Use `None` will generate a random id. save_dir (`str`, defaults to `./runs`): The directory to save logs, files, codes, and api invocations. If `dir` is `None`, when saving logs, files, codes, and api invocations, the default directory `./runs` will be created. save_log (`bool`, defaults to `False`): Whether to save logs locally. save_code (`bool`, defaults to `False`): Whether to save codes locally. save_api_invoke (`bool`, defaults to `False`): Whether to save api invocations locally, including model and web search invocation. cache_dir (`str`): The directory to cache files. In Linux/Mac, the dir defaults to `~/.cache/agentscope`. In Windows, the dir defaults to `C:\\users\\<username>\\.cache\\agentscope`. use_monitor (`bool`, defaults to `True`): Whether to activate the monitor. logger_level (`LOG_LEVEL`, defaults to `"INFO"`): The logging level of logger. agent_configs (`Optional[Union[str, list, dict]]`, defaults to `None`): The config dict(s) of agents or the path to the config file, which can be loaded by json.loads(). One agent config should cover the required arguments to initialize a specific agent object, otherwise the default values will be used. studio_url (`Optional[str]`, defaults to `None`): The url of the agentscope studio. """ # Init the runtime ASManager.get_instance().initialize( model_configs=model_configs, project=project, name=name, disable_saving=disable_saving, save_dir=save_dir, save_log=save_log, save_code=save_code, save_api_invoke=save_api_invoke, cache_dir=cache_dir, use_monitor=use_monitor, logger_level=logger_level, run_id=runtime_id, studio_url=studio_url, ) # Load config and init agent by configs if agent_configs is not None: if isinstance(agent_configs, str): with open(agent_configs, "r", encoding="utf-8") as file: configs = json.load(file) elif isinstance(agent_configs, dict): configs = [agent_configs] else: configs = agent_configs # setup agents agent_objs = [] for config in configs: agent_cls = getattr(agents, config["class"]) agent_args = config["args"] agent = agent_cls(**agent_args) agent_objs.append(agent) return agent_objs return []
[docs] def state_dict() -> dict: """Get the status of agentscope.""" return ASManager.get_instance().state_dict()