76 lines
7.1 KiB
Markdown
76 lines
7.1 KiB
Markdown
|
# API Documentation
|
||
|
|
||
|
## Changing the Configuration of Frontend
|
||
|
|
||
|
The default configuration for backend server URL is [http://127.0.0.1:8000/](http://127.0.0.1:8000/), you can also change it in `/src/utils/config.js`.
|
||
|
|
||
|
You will see blank tables on the frontend if you haven't started the backend Django server, or the backend server URL is configured incorrectly.
|
||
|
|
||
|
## REST API of Backend
|
||
|
The definitions of the fields are as follows:
|
||
|
* `eval_num`: Integer. The number of evaluation times.
|
||
|
* `name`: String. The name of the environment.
|
||
|
* `agent0`: String. Model name.
|
||
|
* `agent1`: String. Model name.
|
||
|
* `win`: Boolean. True if model in the first seat wins.
|
||
|
* `payoff`: Float. The payoff of the agent in the first seat.
|
||
|
* `index`: Integer. The index of the game of the same environent and same agent. It is in the range \[0, eval_num-1\]
|
||
|
|
||
|
| type | Resource | Parameters | Description |
|
||
|
|------|---------------------------|------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|
|
||
|
| GET | tournament/launch | `eval_num`, `name` | Launch tournment on the game. Each pair of models will play `eval_num` times. Results will be saved in database. |
|
||
|
| GET | tournament/query\_game | `name`, `index`, `agent0`, `agent1`, `win`, `payoff`, `elements_every_page`, `page_index` | Query the games with the given parameters |
|
||
|
| GET | tournament/query\_payoff | `name`, `agent0`, `agent1`, `payoff` | Query the payoffs with the given parameters |
|
||
|
| GET | tournament/query\_agent\_payoff | `name`, `elements_every_page`, `page_index`, | Query the payoffs of all the agents |
|
||
|
| GET | tournament/replay | `name`, `agent0`, `agent1`, `index` | Return the replay data |
|
||
|
| POST | tournament/upload\_agent | `model`(Python file), `name`, `game`, `entry` | Upload a model file. `name` is model ID, `entry` is the class name of the model |
|
||
|
| GET | tournament/delete\_agent | `name` | Delete the agent of the given name |
|
||
|
| GET | tournament/list\_uploaded\_agents | `game` | list all the uploaded agents |
|
||
|
| GET | tournament/list\_baseline\_agents | `game` | list all the baseline agents |
|
||
|
|
||
|
### Example API
|
||
|
| API | Description |
|
||
|
|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
|
||
|
| http://127.0.0.1:8000/tournament/launch?eval_num=200&name=leduc-holdem | Evaluate on Leduc Holdem with 200 games for each pair of models |
|
||
|
| http://127.0.0.1:8000/tournament/replay?name=leduc-holdem&agent0=leduc-holdem-rule-v1&agent1=leduc-holdem-cfr&index=3 | Obtain the replay data between rule model and CFR model. Obtain the data of the 3rd game |
|
||
|
| http://127.0.0.1:8000/tournament/query_game&elements_every_page=10&page_index=0 | Get all the game data |
|
||
|
| http://127.0.0.1:8000/tournament/query_game?name=leduc-holdem&elements_every_page=10&page_index=0 | Get all the game data of Leduc Holdem |
|
||
|
| http://127.0.0.1:8000/tournament/query_payoff | Get all the payoffs |
|
||
|
| http://127.0.0.1:8000/tournament/query_payoff?agent0=leduc-holdem-cfr&agent1=leduc-holdem-rule-v1 | Get all the payoffs between rule and CFR models |
|
||
|
| http://127.0.0.1:8000/tournament/query_agent_payoff?name=leduc-holdem&elements_every_page=1&page_index=1 | Get the payoffs of all the agents of leduc-holdem |
|
||
|
| http://127.0.0.1:8000/tournament/list_uploaded_agents?game=leduc-holdem | List the uploaded agents of leduc-holdem |
|
||
|
| http://127.0.0.1:8000/tournament/list_baseline_agents?game=leduc-holdem | List the baseline agents of leduc-holdem |
|
||
|
|
||
|
## Registered Models
|
||
|
Some models have been pre-registered as baselines
|
||
|
| Model | Game | Description |
|
||
|
|----------------------|--------------|---------------------------------------|
|
||
|
| leduc-holdem-random | leduc-holdem | A random model |
|
||
|
| leduc-holdem-cfr | leduc-holdem | Pre-trained CFR model on Leduc Holdem |
|
||
|
| leduc-holdem-rule-v1 | leduc-holdem | A rule model that plays greedily |
|
||
|
| doudizhu-random | doudizhu | A random model |
|
||
|
| doudizhu-rule-v1 | doudizhu | Dou Dizhu rule model |
|
||
|
|
||
|
### Example of uploading a new model
|
||
|
A example model file is prepared:
|
||
|
```
|
||
|
cd server/upload_test
|
||
|
```
|
||
|
Upload the model with `curl`:
|
||
|
```
|
||
|
curl -F 'model=@example_model.py' -F "name=leduc-new" -F "entry=LeducHoldemRuleModelV2" -F "game=leduc-holdem" http://127.0.0.1:8000/tournament/upload_agent
|
||
|
```
|
||
|
Launch the tounament with:
|
||
|
```
|
||
|
curl 'http://127.0.0.1:8000/tournament/launch?eval_num=200&name=leduc-holdem'
|
||
|
```
|
||
|
We list the uploaded agent with
|
||
|
```
|
||
|
curl http://127.0.0.1:8000/tournament/list_uploaded_agents
|
||
|
```
|
||
|
We can delete the agent with
|
||
|
```
|
||
|
curl 'http://127.0.0.1:8000/tournament/delete_agent?name=leduc-new'
|
||
|
```
|
||
|
|