webrl/docs/Config_en.md
2024-08-08 23:40:38 +08:00

155 lines
4.4 KiB
Markdown

# Configuration System
[🌏中文版](Config_cn.md)
## Basic Syntax
The configuration system uses the YAML format. To simplify the configuration, we made some extensions on top of the
basic YAML syntax. `import`, `default`, `overwrite` are our extended keywords.
### import
The `import` keyword is used to import configurations from other files. For example, the following two ways are
equivalent:
Method one:
```yaml
# config.yaml
definition:
def1: something...
def2: something...
```
Method two:
```yaml
# def1.yaml
def1: something...
# def2.yaml
def2: something...
# config.yaml
definition:
import:
- def1.yaml
- def2.yaml
```
The `import` keyword supports using a string or list as its value, corresponding to importing a single file or multiple
files respectively.
During the import process, if there's an `import` keyword in the imported file, the `import` in the imported file will
be executed first. The same applies to the other two keywords.
During the import process, if a key conflict occurs, the system will try to recursively merge the values of the
conflicting keys. If the merge is not possible, the later value will overwrite the earlier one.
### default
The `default` keyword is used to specify default values. The following two ways are equivalent:
Method one:
```yaml
definition:
def1:
type: int
value: 1
def2:
type: int
value: 2
def3:
type: float
value: 1.1
```
Method two:
```yaml
definition:
default:
type: int
def1:
value: 1
def2:
value: 2
def3:
type: float
value: 1.1
```
The `default` keyword supports a string, list, or dictionary as its value. The config parser will try to merge
the `default` value with the value of the keys at the same level as `default`. In the event of a conflict, the `default`
keyword value has a lower priority.
### overwrite
The `overwrite` keyword works similarly to `default`. However, in the event of a conflict, the `overwrite` keyword value
has a higher priority. This keyword is often used with `import` to set the required values under this configuration
file.
## Configuration File
The main directory structure of the configuration file is as follows:
```
configs
├── assignments
│ ├── definition.yaml
│ ├── default.yaml
│ └── ...
├── agents
├── tasks
│ ├── task_assembly.yaml
│ └── ...
└── start_task.yaml
```
### assignments
The `assignments` directory contains all task configuration files. The `definition.yaml` collects all task definitions
and model definitions.
A single task configuration file mainly requires the following fields:
- `definition`: usually imported from `definition.yaml`, for defining tasks and models.
- `concurrency`: defines the maximum concurrency of the model.
- `assignments`: accepts multiple `assignment`, defining the specific allocation of tasks.
- `output`: defines the path of the output file.
A single `assignment` requires two fields:
- `agent`: the name of the agent required for this task.
- `task`: the name of the task required for this task.
### agents
The `agents` directory contains all agent configuration files. The key in the configuration is the agent's name, and the
value is the agent's configuration. A single agent configuration requires the following fields:
- `module`: defines the corresponding agent client module.
- `parameters`: defines the parameters to be passed to the corresponding module.
### tasks
The `tasks` directory contains all task configuration files. The `task_assembly.yaml` collects all task definitions. If
you only want to run existing tasks, you generally do not need to modify the files in this directory.
Similar to the agent configuration, the key is the task's name, and the value is the task's configuration. A single task
configuration requires the following fields:
- `module`: defines the corresponding task module.
- `parameters`: defines the parameters to be passed to the corresponding module.
### start_task.yaml
This configuration file is used in conjunction with `src.start_task` to automate the bulk launch of task_workers. This
file's fields are as follows:
- `definition`: used to define tasks, usually imported from `task_assembly.yaml`.
- `start(Optional)`: used to specify the tasks to start, the key is the task name, and the value is the number of
workers to start.
- `controller_address(Optional)`: used to specify the address of the controller, default is http://localhost:5000/api/