mirror of
https://github.com/kolbytn/mindcraft.git
synced 2025-08-25 16:43:45 +02:00
Merge branch 'mercury' into New-Model-Support-Mercury
This commit is contained in:
commit
2fc3a9522f
140 changed files with 30280 additions and 26967 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -27,3 +27,4 @@ tasks/construction_tasks/test/**
|
|||
tasks/construction_tasks/train/**
|
||||
server_data*
|
||||
**/.DS_Store
|
||||
src/mindcraft-py/__pycache__/
|
||||
|
|
19
Dockerfile
19
Dockerfile
|
@ -13,7 +13,7 @@ RUN apt-get -y install python3-boto3
|
|||
RUN apt-get -y install python3-tqdm
|
||||
RUN apt-get -y install tmux
|
||||
|
||||
RUN git clone https://github.com/icwhite/mindcraft.git /mindcraft
|
||||
RUN git clone https://github.com/kolbytn/mindcraft.git /mindcraft
|
||||
WORKDIR /mindcraft
|
||||
COPY ./server_data.zip /mindcraft
|
||||
RUN unzip server_data.zip
|
||||
|
@ -22,9 +22,22 @@ RUN npm install
|
|||
|
||||
|
||||
# Copy the rest of the application code to the working directory
|
||||
# RUN apt update
|
||||
# RUN apt install bash ca-certificates wget git -y # install first to avoid openjdk install bug
|
||||
# RUN apt install openjdk-17-jre-headless -y
|
||||
RUN apt install -y wget apt-transport-https gnupg lsb-release
|
||||
|
||||
# Add Adoptium repository key
|
||||
RUN wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | apt-key add -
|
||||
|
||||
# Add Adoptium repository
|
||||
RUN echo "deb https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" > /etc/apt/sources.list.d/adoptium.list
|
||||
|
||||
# Update package lists
|
||||
RUN apt update
|
||||
RUN apt install bash ca-certificates wget git -y # install first to avoid openjdk install bug
|
||||
RUN apt install openjdk-17-jre-headless -y
|
||||
|
||||
# Install Temurin (Adoptium) Java 21
|
||||
RUN apt install temurin-21-jdk -y
|
||||
|
||||
# Install unzip
|
||||
|
||||
|
|
24
README.md
24
README.md
|
@ -10,15 +10,15 @@ Do not connect this bot to public servers with coding enabled. This project allo
|
|||
|
||||
## Requirements
|
||||
|
||||
- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-bedrock-edition-pc) (up to v1.21.1, recommend v1.20.4)
|
||||
- [Node.js Installed](https://nodejs.org/) (at least v14)
|
||||
- One of these: [OpenAI API Key](https://openai.com/blog/openai-api) | [Gemini API Key](https://aistudio.google.com/app/apikey) | [Anthropic API Key](https://docs.anthropic.com/claude/docs/getting-access-to-claude) | [Replicate API Key](https://replicate.com/) | [Hugging Face API Key](https://huggingface.co/) | [Groq API Key](https://console.groq.com/keys) | [Ollama Installed](https://ollama.com/download). | [Mistral API Key](https://docs.mistral.ai/getting-started/models/models_overview/) | [Qwen API Key [Intl.]](https://www.alibabacloud.com/help/en/model-studio/developer-reference/get-api-key)/[[cn]](https://help.aliyun.com/zh/model-studio/getting-started/first-api-call-to-qwen?) | [Novita AI API Key](https://novita.ai/settings?utm_source=github_mindcraft&utm_medium=github_readme&utm_campaign=link#key-management) | [Mercury API](https://platform.inceptionlabs.ai/docs)
|
||||
- [Minecraft Java Edition](https://www.minecraft.net/en-us/store/minecraft-java-bedrock-edition-pc) (up to v1.21.1, recommend v1.21.1)
|
||||
- [Node.js Installed](https://nodejs.org/) (at least v18)
|
||||
- One of these: [OpenAI API Key](https://openai.com/blog/openai-api) | [Gemini API Key](https://aistudio.google.com/app/apikey) | [Anthropic API Key](https://docs.anthropic.com/claude/docs/getting-access-to-claude) | [Replicate API Key](https://replicate.com/) | [Hugging Face API Key](https://huggingface.co/) | [Groq API Key](https://console.groq.com/keys) | [Ollama Installed](https://ollama.com/download). | [Mistral API Key](https://docs.mistral.ai/getting-started/models/models_overview/) | [Qwen API Key [Intl.]](https://www.alibabacloud.com/help/en/model-studio/developer-reference/get-api-key)/[[cn]](https://help.aliyun.com/zh/model-studio/getting-started/first-api-call-to-qwen?) | [Novita AI API Key](https://novita.ai/settings?utm_source=github_mindcraft&utm_medium=github_readme&utm_campaign=link#key-management) | [Cerebras API Key](https://cloud.cerebras.ai) | [Mercury API](https://platform.inceptionlabs.ai/docs)
|
||||
|
||||
## Install and Run
|
||||
|
||||
1. Make sure you have the requirements above.
|
||||
|
||||
2. Clone or download this repository (big green button)
|
||||
2. Clone or download this repository (big green button) 'git clone https://github.com/kolbytn/mindcraft.git'
|
||||
|
||||
3. Rename `keys.example.json` to `keys.json` and fill in your API keys (you only need one). The desired model is set in `andy.json` or other profiles. For other models refer to the table below.
|
||||
|
||||
|
@ -28,7 +28,7 @@ Do not connect this bot to public servers with coding enabled. This project allo
|
|||
|
||||
6. Run `node main.js` from the installed directory
|
||||
|
||||
If you encounter issues, check the [FAQ](https://github.com/kolbytn/mindcraft/blob/main/FAQ.md) or find support on [discord](https://discord.gg/mp73p35dzC). We are currently not very responsive to github issues.
|
||||
If you encounter issues, check the [FAQ](https://github.com/kolbytn/mindcraft/blob/main/FAQ.md) or find support on [discord](https://discord.gg/mp73p35dzC). We are currently not very responsive to github issues. To run tasks please refer to [Minecollab Instructions](minecollab.md#installation)
|
||||
|
||||
## Tasks
|
||||
|
||||
|
@ -64,6 +64,7 @@ You can configure the agent's name, model, and prompts in their profile like `an
|
|||
| `glhf.chat` | `GHLF_API_KEY` | `glhf/hf:meta-llama/Llama-3.1-405B-Instruct` | [docs](https://glhf.chat/user-settings/api) |
|
||||
| `hyperbolic` | `HYPERBOLIC_API_KEY` | `hyperbolic/deepseek-ai/DeepSeek-V3` | [docs](https://docs.hyperbolic.xyz/docs/getting-started) |
|
||||
| `vllm` | n/a | `vllm/llama3` | n/a |
|
||||
| `cerebras` | `CEREBRAS_API_KEY` | `cerebras/llama-3.3-70b` | [docs](https://inference-docs.cerebras.ai/introduction) |
|
||||
| `mercury(EA)` | `MERCURY_API_KEY` | `mercury-coder-small` | [docs](https://www.inceptionlabs.ai/) |
|
||||
|
||||
If you use Ollama, to install the models used by default (generation and embedding), execute the following terminal command:
|
||||
|
@ -167,10 +168,13 @@ Some of the node modules that we depend on have bugs in them. To add a patch, ch
|
|||
## Citation:
|
||||
|
||||
```
|
||||
@misc{mindcraft2023,
|
||||
Author = {Kolby Nottingham and Max Robinson},
|
||||
Title = {MINDcraft: LLM Agents for cooperation, competition, and creativity in Minecraft},
|
||||
Year = {2023},
|
||||
url={https://github.com/kolbytn/mindcraft}
|
||||
@article{mindcraft2025,
|
||||
title = {Collaborating Action by Action: A Multi-agent LLM Framework for Embodied Reasoning},
|
||||
author = {White*, Isadora and Nottingham*, Kolby and Maniar, Ayush and Robinson, Max and Lillemark, Hansen and Maheshwari, Mehul and Qin, Lianhui and Ammanabrolu, Prithviraj},
|
||||
journal = {arXiv preprint arXiv:2504.17950},
|
||||
year = {2025},
|
||||
url = {https://arxiv.org/abs/2504.17950},
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
|
|
@ -14,5 +14,6 @@
|
|||
"HYPERBOLIC_API_KEY": "",
|
||||
"NOVITA_API_KEY": "",
|
||||
"OPENROUTER_API_KEY": "",
|
||||
"CEREBRAS_API_KEY": "",
|
||||
"MERCURY_API_KEY":""
|
||||
}
|
||||
|
|
72
main.js
72
main.js
|
@ -1,9 +1,7 @@
|
|||
import { AgentProcess } from './src/process/agent_process.js';
|
||||
import * as Mindcraft from './src/mindcraft/mindcraft.js';
|
||||
import settings from './settings.js';
|
||||
import yargs from 'yargs';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
import { createMindServer } from './src/server/mind_server.js';
|
||||
import { mainProxy } from './src/process/main_proxy.js';
|
||||
import { readFileSync } from 'fs';
|
||||
|
||||
function parseArguments() {
|
||||
|
@ -24,35 +22,51 @@ function parseArguments() {
|
|||
.alias('help', 'h')
|
||||
.parse();
|
||||
}
|
||||
|
||||
function getProfiles(args) {
|
||||
return args.profiles || settings.profiles;
|
||||
const args = parseArguments();
|
||||
if (args.profiles) {
|
||||
settings.profiles = args.profiles;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
if (settings.host_mindserver) {
|
||||
const mindServer = createMindServer(settings.mindserver_port);
|
||||
if (args.task_path) {
|
||||
let tasks = JSON.parse(readFileSync(args.task_path, 'utf8'));
|
||||
if (args.task_id) {
|
||||
settings.task = tasks[args.task_id];
|
||||
settings.task.task_id = args.task_id;
|
||||
}
|
||||
mainProxy.connect();
|
||||
|
||||
const args = parseArguments();
|
||||
const profiles = getProfiles(args);
|
||||
console.log(profiles);
|
||||
const { load_memory, init_message } = settings;
|
||||
|
||||
for (let i=0; i<profiles.length; i++) {
|
||||
const agent_process = new AgentProcess();
|
||||
const profile = readFileSync(profiles[i], 'utf8');
|
||||
const agent_json = JSON.parse(profile);
|
||||
mainProxy.registerAgent(agent_json.name, agent_process);
|
||||
agent_process.start(profiles[i], load_memory, init_message, i, args.task_path, args.task_id);
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
else {
|
||||
throw new Error('task_id is required when task_path is provided');
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
main();
|
||||
} catch (error) {
|
||||
console.error('An error occurred:', error);
|
||||
process.exit(1);
|
||||
// these environment variables override certain settings
|
||||
if (process.env.MINECRAFT_PORT) {
|
||||
settings.port = process.env.MINECRAFT_PORT;
|
||||
}
|
||||
if (process.env.MINDSERVER_PORT) {
|
||||
settings.mindserver_port = process.env.MINDSERVER_PORT;
|
||||
}
|
||||
if (process.env.PROFILES && JSON.parse(process.env.PROFILES).length > 0) {
|
||||
settings.profiles = JSON.parse(process.env.PROFILES);
|
||||
}
|
||||
if (process.env.INSECURE_CODING) {
|
||||
settings.allow_insecure_coding = true;
|
||||
}
|
||||
if (process.env.BLOCKED_ACTIONS) {
|
||||
settings.blocked_actions = JSON.parse(process.env.BLOCKED_ACTIONS);
|
||||
}
|
||||
if (process.env.MAX_MESSAGES) {
|
||||
settings.max_messages = process.env.MAX_MESSAGES;
|
||||
}
|
||||
if (process.env.NUM_EXAMPLES) {
|
||||
settings.num_examples = process.env.NUM_EXAMPLES;
|
||||
}
|
||||
if (process.env.LOG_ALL) {
|
||||
settings.log_all_prompts = process.env.LOG_ALL;
|
||||
}
|
||||
|
||||
Mindcraft.init(false, settings.mindserver_port);
|
||||
|
||||
for (let profile of settings.profiles) {
|
||||
const profile_json = JSON.parse(readFileSync(profile, 'utf8'));
|
||||
settings.profile = profile_json;
|
||||
Mindcraft.createAgent(settings);
|
||||
}
|
|
@ -41,8 +41,16 @@ You can view the crafting task in action [here](https://www.youtube.com/shorts/V
|
|||
|
||||
## Installation
|
||||
|
||||
You **DO NOT** need Linux to run this, you can run on Windows with the --no-launch-world flag and by installing git bash.
|
||||
|
||||
Please follow the installation docs in the README to install mindcraft. You can create a docker image using the Dockerfile.
|
||||
|
||||
If you don't own Minecraft you can run a limited version solely for offline games using these instructions:
|
||||
1. Download the TLauncher https://tlauncher.org/en/
|
||||
2. Enter a username and select version 1.21.1
|
||||
3. Click "Multiplayer" and then "Direct Connection"
|
||||
4. Then enter "localhost:55916" and hit `Join Server`
|
||||
|
||||
Download the relevant task files and server data files, you can find the link [here](https://drive.google.com/drive/folders/1XygbitBBTsNO6q_doEiZHmdETpnyRmCS). The tasks files are for specifying the tasks to run and the server data is for allowing the models to launch the task in the correct world automatically. **Unzip the server_data.zip in the base `tasks/` folder**.
|
||||
|
||||
Then, set up your conda environment:
|
||||
|
@ -55,9 +63,22 @@ pip install -r requirements.txt
|
|||
|
||||
Then, you can run the evaluation_script **from the project root** using `python tasks/evaluation_script.py --task_path {your-task-path} --model {model you want to use}`.
|
||||
|
||||
### Tmux Installation
|
||||
**MacOS**:
|
||||
1. If brew isn't already installed run `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
||||
2. `brew install tmux`
|
||||
|
||||
**Linux**: `apt-get -y install tmux`
|
||||
|
||||
**Windows**: You can not use tmux on Windows, but you can run tasks with the --no-launch-world flag. Run
|
||||
```
|
||||
cd /tasks/server_data/
|
||||
java -jar server.jar
|
||||
```
|
||||
|
||||
If you want to run with vllm be sure to run with `--api vllm --url {your_url_for_vllm} --model {model_name}`, by default vllm will use http://127.0.0.1:8000/v1 as the url for quering the model!
|
||||
|
||||
When running with construction tasks, make sure to set the flag `--insecure_coding` so that the agents can be allowed to write freeform javascript code to complete the tasks. However, when using insecure coding it is highly recommended to use a docker container to avoid damage to your computer.
|
||||
When running with construction tasks, make sure to set the flag `--insecure_coding` so that the agents can be allowed to write freeform javascript code to complete the tasks. However, when using insecure coding it is **highly recommended** to use a docker container to avoid damage to your computer.
|
||||
|
||||
When running an experiment that requires more than 2 agents, use the `--num_agents` flag to match the number of agents in your task file. For example, if you are running a task file with 3 agents, use `--num_agents 3`.
|
||||
|
||||
|
@ -81,7 +102,7 @@ python tasks/evaluation_script.py --task_path {path_to_two_agent_construction_ta
|
|||
|
||||
When you launch the evaluation script, you will see the minecraft server being launched. If you want to join this world, you can connect to it on the port localhost:55916 the way you would a standard Minecraft world (go to single player -> direct connection -> type in localhost:55916) It may take a few minutes for everything to be properly loaded - as first the agents need to be added to the world and given the correct permissions to use cheats and add inventory. After about 5 minutes everything should be loaded and working. If you wish to kill the experiment run `tmux kill-server`. Sometimes there will be issues copying the files, if this happens you can run the python file twice.
|
||||
|
||||
## Installation (without tmux)
|
||||
## Windows Installation (without tmux)
|
||||
|
||||
If you are on a machine that can't run tmux (like a Windows PC without WSL) or you don't care about doing evaluations only running tasks you can run the following script
|
||||
|
||||
|
@ -99,7 +120,7 @@ As you run, the evalaution script will evaluate the performance so far. It will
|
|||
|
||||
### Running multiple worlds in parallel
|
||||
|
||||
You can use `--num_parallel` to run multiple Minecraft worlds in parallel. This will launch `n` tmux shells, claled `server_i` and shell `i`, where `i` corresponds to ith parallel world. It will also copy worlds into `server_data_i` as well. On an M3 Mac with 34 GB of RAM, we can normally support up to 4 parallel worlds. When running an open source model, it is more likely you will be constrained by the throughput and size of your GPU RAM. On a cluster of 8 H100s you can expect to run 4 experiments in parallel. However, for best performance it is advisable to only use one parallel world.
|
||||
You can use `--num_parallel` to run multiple Minecraft worlds in parallel. This will launch `n` tmux shells, called `server_i` and shell `i`, where `i` corresponds to ith parallel world. It will also copy worlds into `server_data_i` as well. On an M3 Mac with 34 GB of RAM, we can normally support up to 4 parallel worlds. When running an open source model, it is more likely you will be constrained by the throughput and size of your GPU RAM. On a cluster of 8 H100s you can expect to run 4 experiments in parallel. However, for best performance it is advisable to only use one parallel world.
|
||||
|
||||
### Using an S3 Bucket to store files
|
||||
To use S3 set the --s3 flag and the --bucket_name to use an s3 bucket to log all the files collected. It will also copy the /bots folder in this case with all of the files in there.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
"type": "module",
|
||||
"dependencies": {
|
||||
"@anthropic-ai/sdk": "^0.17.1",
|
||||
"@cerebras/cerebras_cloud_sdk": "^1.46.0",
|
||||
"@google/generative-ai": "^0.2.1",
|
||||
"@huggingface/inference": "^2.8.1",
|
||||
"@mistralai/mistralai": "^1.1.0",
|
||||
|
@ -11,7 +12,7 @@
|
|||
"google-translate-api-x": "^10.7.1",
|
||||
"groq-sdk": "^0.15.0",
|
||||
"minecraft-data": "^3.78.0",
|
||||
"mineflayer": "^4.26.0",
|
||||
"mineflayer": "^4.29.0",
|
||||
"mineflayer-armor-manager": "^2.0.1",
|
||||
"mineflayer-auto-eat": "^3.3.6",
|
||||
"mineflayer-collectblock": "^1.4.1",
|
||||
|
|
|
@ -1,8 +1,35 @@
|
|||
diff --git a/node_modules/mineflayer-pathfinder/index.js b/node_modules/mineflayer-pathfinder/index.js
|
||||
index b38bd30..bf16a63 100644
|
||||
index b38bd30..fb39b45 100644
|
||||
--- a/node_modules/mineflayer-pathfinder/index.js
|
||||
+++ b/node_modules/mineflayer-pathfinder/index.js
|
||||
@@ -550,6 +550,7 @@ function inject (bot) {
|
||||
@@ -170,6 +170,16 @@ function inject (bot) {
|
||||
const curPoint = path[i]
|
||||
if (curPoint.toBreak.length > 0 || curPoint.toPlace.length > 0) break
|
||||
const b = bot.blockAt(new Vec3(curPoint.x, curPoint.y, curPoint.z))
|
||||
+
|
||||
+ // openned doors have small Collision box
|
||||
+ // that may stop the bot from moving forward
|
||||
+ if(i === 0 && b.name.includes('door')) {
|
||||
+ curPoint.x = Math.floor(curPoint.x) + 0.5
|
||||
+ curPoint.y = Math.floor(curPoint.y)
|
||||
+ curPoint.z = Math.floor(curPoint.z) + 0.5
|
||||
+ continue
|
||||
+ }
|
||||
+
|
||||
if (b && (b.type === waterType || ((b.type === ladderId || b.type === vineId) && i + 1 < path.length && path[i + 1].y < curPoint.y))) {
|
||||
curPoint.x = Math.floor(curPoint.x) + 0.5
|
||||
curPoint.y = Math.floor(curPoint.y)
|
||||
@@ -524,6 +534,9 @@ function inject (bot) {
|
||||
bot.activateBlock(bot.blockAt(new Vec3(placingBlock.x, placingBlock.y, placingBlock.z))).then(() => {
|
||||
lockUseBlock.release()
|
||||
placingBlock = nextPoint.toPlace.shift()
|
||||
+ if (!placingBlock) {
|
||||
+ placing = false
|
||||
+ }
|
||||
}, err => {
|
||||
console.error(err)
|
||||
lockUseBlock.release()
|
||||
@@ -550,6 +563,7 @@ function inject (bot) {
|
||||
lockEquipItem.release()
|
||||
const refBlock = bot.blockAt(new Vec3(placingBlock.x, placingBlock.y, placingBlock.z), false)
|
||||
if (!lockPlaceBlock.tryAcquire()) return
|
||||
|
@ -10,7 +37,7 @@ index b38bd30..bf16a63 100644
|
|||
if (interactableBlocks.includes(refBlock.name)) {
|
||||
bot.setControlState('sneak', true)
|
||||
}
|
||||
@@ -557,6 +558,7 @@ function inject (bot) {
|
||||
@@ -557,6 +571,7 @@ function inject (bot) {
|
||||
.then(function () {
|
||||
// Dont release Sneak if the block placement was not successful
|
||||
bot.setControlState('sneak', false)
|
||||
|
@ -18,3 +45,152 @@ index b38bd30..bf16a63 100644
|
|||
if (bot.pathfinder.LOSWhenPlacingBlocks && placingBlock.returnPos) returningPos = placingBlock.returnPos.clone()
|
||||
})
|
||||
.catch(_ignoreError => {
|
||||
diff --git a/node_modules/mineflayer-pathfinder/lib/movements.js b/node_modules/mineflayer-pathfinder/lib/movements.js
|
||||
index a7e3505..3c4a8f2 100644
|
||||
--- a/node_modules/mineflayer-pathfinder/lib/movements.js
|
||||
+++ b/node_modules/mineflayer-pathfinder/lib/movements.js
|
||||
@@ -62,7 +62,13 @@
|
||||
|
||||
this.climbables = new Set()
|
||||
this.climbables.add(registry.blocksByName.ladder.id)
|
||||
- // this.climbables.add(registry.blocksByName.vine.id)
|
||||
+ if (registry.blocksByName.vine) this.climbables.add(registry.blocksByName.vine.id)
|
||||
+ if (registry.blocksByName.weeping_vines) this.climbables.add(registry.blocksByName.weeping_vines.id)
|
||||
+ if (registry.blocksByName.weeping_vines_plant) this.climbables.add(registry.blocksByName.weeping_vines_plant.id)
|
||||
+ if (registry.blocksByName.twisting_vines) this.climbables.add(registry.blocksByName.twisting_vines.id)
|
||||
+ if (registry.blocksByName.twisting_vines_plant) this.climbables.add(registry.blocksByName.twisting_vines_plant.id)
|
||||
+ if (registry.blocksByName.cave_vines) this.climbables.add(registry.blocksByName.cave_vines.id)
|
||||
+ if (registry.blocksByName.cave_vines_plant) this.climbables.add(registry.blocksByName.cave_vines_plant.id)
|
||||
this.emptyBlocks = new Set()
|
||||
|
||||
this.replaceables = new Set()
|
||||
@@ -92,13 +98,15 @@
|
||||
}
|
||||
})
|
||||
registry.blocksArray.forEach(block => {
|
||||
- if (this.interactableBlocks.has(block.name) && block.name.toLowerCase().includes('gate') && !block.name.toLowerCase().includes('iron')) {
|
||||
+ if (this.interactableBlocks.has(block.name)
|
||||
+ && (block.name.toLowerCase().includes('gate') || block.name.toLowerCase().includes('door') || block.name.toLowerCase().includes('trapdoor'))
|
||||
+ && !block.name.toLowerCase().includes('iron')) {
|
||||
// console.info(block)
|
||||
this.openable.add(block.id)
|
||||
}
|
||||
})
|
||||
|
||||
- this.canOpenDoors = false // Causes issues. Probably due to none paper servers.
|
||||
+ this.canOpenDoors = true
|
||||
|
||||
this.exclusionAreasStep = []
|
||||
this.exclusionAreasBreak = []
|
||||
@@ -230,8 +238,13 @@
|
||||
}
|
||||
}
|
||||
b.climbable = this.climbables.has(b.type)
|
||||
- b.safe = (b.boundingBox === 'empty' || b.climbable || this.carpets.has(b.type)) && !this.blocksToAvoid.has(b.type)
|
||||
- b.physical = b.boundingBox === 'block' && !this.fences.has(b.type)
|
||||
+
|
||||
+ // Enhanced trapdoor logic - open trapdoors are safe to pass through
|
||||
+ const isOpenTrapdoor = this.openable.has(b.type) && b.name.includes('trapdoor') && b._properties?.open === true
|
||||
+ const isClosedTrapdoor = this.openable.has(b.type) && b.name.includes('trapdoor') && b._properties?.open !== true
|
||||
+
|
||||
+ b.safe = (b.boundingBox === 'empty' || b.climbable || this.carpets.has(b.type) || isOpenTrapdoor) && !this.blocksToAvoid.has(b.type)
|
||||
+ b.physical = (b.boundingBox === 'block' && !this.fences.has(b.type)) || isClosedTrapdoor
|
||||
b.replaceable = this.replaceables.has(b.type) && !b.physical
|
||||
b.liquid = this.liquids.has(b.type)
|
||||
b.height = pos.y + dy
|
||||
@@ -284,6 +297,18 @@
|
||||
cost += this.exclusionStep(block) // Is excluded so can't move or break
|
||||
cost += this.getNumEntitiesAt(block.position, 0, 0, 0) * this.entityCost
|
||||
if (block.safe) return cost
|
||||
+
|
||||
+ // process door cost
|
||||
+ if ((this.canOpenDoors && block.openable)
|
||||
+ || (block.openable && block._properties?.open === true)) {
|
||||
+ return cost
|
||||
+ }
|
||||
+
|
||||
+ // Handle trapdoors specifically - they can be opened instead of broken
|
||||
+ if (this.canOpenDoors && block.openable && block.name.includes('trapdoor') && !block.name.includes('iron')) {
|
||||
+ return cost + 1 // Small cost for opening trapdoor
|
||||
+ }
|
||||
+
|
||||
if (!this.safeToBreak(block)) return 100 // Can't break, so can't move
|
||||
toBreak.push(block.position)
|
||||
|
||||
@@ -387,8 +412,8 @@
|
||||
cost += this.safeOrBreak(blockB, toBreak)
|
||||
if (cost > 100) return
|
||||
|
||||
- // Open fence gates
|
||||
- if (this.canOpenDoors && blockC.openable && blockC.shapes && blockC.shapes.length !== 0) {
|
||||
+ // Open fence gates and doors
|
||||
+ if (this.canOpenDoors && blockC.openable && !blockC._properties.open) {
|
||||
toPlace.push({ x: node.x + dir.x, y: node.y, z: node.z + dir.z, dx: 0, dy: 0, dz: 0, useOne: true }) // Indicate that a block should be used on this block not placed
|
||||
} else {
|
||||
cost += this.safeOrBreak(blockC, toBreak)
|
||||
@@ -552,6 +577,54 @@
|
||||
if (cost > 100) return
|
||||
|
||||
neighbors.push(new Move(node.x, node.y + 1, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
|
||||
+ }
|
||||
+
|
||||
+ getMoveClimbUpThroughTrapdoor (node, neighbors) {
|
||||
+ const blockCurrent = this.getBlock(node, 0, 0, 0) // Current position (should be climbable)
|
||||
+ const blockAbove = this.getBlock(node, 0, 1, 0) // Block directly above
|
||||
+ const blockCeiling = this.getBlock(node, 0, 2, 0) // Trapdoor or ceiling block
|
||||
+
|
||||
+ // Only attempt this move if we're on a climbable block (ladder/vine)
|
||||
+ if (!blockCurrent.climbable) return
|
||||
+
|
||||
+ // Check if there's a closed trapdoor above us
|
||||
+ if (!blockCeiling.openable || blockCeiling._properties?.open === true) return
|
||||
+
|
||||
+ let cost = 2 // Base cost for climbing up and opening trapdoor
|
||||
+ const toBreak = []
|
||||
+ const toPlace = []
|
||||
+
|
||||
+ // Make sure we can break/pass through the block above if needed
|
||||
+ cost += this.safeOrBreak(blockAbove, toBreak)
|
||||
+ if (cost > 100) return
|
||||
+
|
||||
+ // Add cost for opening the trapdoor
|
||||
+ toPlace.push({ x: node.x, y: node.y + 2, z: node.z, dx: 0, dy: 0, dz: 0, useOne: true })
|
||||
+
|
||||
+ neighbors.push(new Move(node.x, node.y + 2, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
|
||||
+ }
|
||||
+
|
||||
+ // Enhanced ladder/vine climbing that can handle stepping on top and jumping
|
||||
+ getMoveClimbTop (node, neighbors) {
|
||||
+ const blockCurrent = this.getBlock(node, 0, 0, 0) // Current position (should be climbable)
|
||||
+ const blockAbove = this.getBlock(node, 0, 1, 0) // Block directly above
|
||||
+
|
||||
+ // Only attempt this move if we're on a climbable block (ladder/vine)
|
||||
+ if (!blockCurrent.climbable) return
|
||||
+
|
||||
+ // Check if we can step on top of the ladder/vine and then jump up
|
||||
+ if (!blockAbove.safe) return
|
||||
+
|
||||
+ let cost = 2 // Cost for climbing to top of ladder and jumping
|
||||
+ const toBreak = []
|
||||
+ const toPlace = []
|
||||
+
|
||||
+ // Check if there's space to jump up from the top of the ladder
|
||||
+ const blockJumpTarget = this.getBlock(node, 0, 2, 0)
|
||||
+ cost += this.safeOrBreak(blockJumpTarget, toBreak)
|
||||
+ if (cost > 100) return
|
||||
+
|
||||
+ neighbors.push(new Move(node.x, node.y + 2, node.z, node.remainingBlocks - toPlace.length, cost, toBreak, toPlace))
|
||||
}
|
||||
|
||||
// Jump up, down or forward over a 1 block gap
|
||||
@@ -655,6 +728,10 @@
|
||||
|
||||
this.getMoveDown(node, neighbors)
|
||||
this.getMoveUp(node, neighbors)
|
||||
+
|
||||
+ // Enhanced climbing moves for ladders, vines, and trapdoors
|
||||
+ this.getMoveClimbUpThroughTrapdoor(node, neighbors)
|
||||
+ this.getMoveClimbTop(node, neighbors)
|
||||
|
||||
return neighbors
|
||||
}
|
13
patches/prismarine-item+1.17.0.patch
Normal file
13
patches/prismarine-item+1.17.0.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/node_modules/prismarine-item/index.js b/node_modules/prismarine-item/index.js
|
||||
index a1397a2..1d75cad 100644
|
||||
--- a/node_modules/prismarine-item/index.js
|
||||
+++ b/node_modules/prismarine-item/index.js
|
||||
@@ -231,7 +231,7 @@ function loader (registryOrVersion) {
|
||||
const typeOfEnchantLevelValue = registry.supportFeature('typeOfValueForEnchantLevel')
|
||||
const useStoredEnchantments = registry.supportFeature('booksUseStoredEnchantments') && this.name === 'enchanted_book'
|
||||
|
||||
- if (typeOfEnchantLevelValue === 'short' && enchantNbtKey === 'ench') {
|
||||
+ if (typeOfEnchantLevelValue === 'short' && (enchantNbtKey === 'ench' || enchantNbtKey === 'componentEnchantments')) {
|
||||
let itemEnch = []
|
||||
|
||||
if (useStoredEnchantments && this?.nbt?.value?.StoredEnchantments) {
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "claude",
|
||||
|
||||
"model": "claude-3-5-sonnet-latest",
|
||||
"model": "claude-4-sonnet-latest",
|
||||
|
||||
"embedding": "openai"
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
"name": "claude_thinker",
|
||||
|
||||
"model": {
|
||||
"model": "claude-3-7-sonnet-latest",
|
||||
"model": "claude-4-sonnet-latest",
|
||||
"params": {
|
||||
"thinking": {
|
||||
"type": "enabled",
|
||||
|
|
14
profiles/defaults/assistant.json
Normal file
14
profiles/defaults/assistant.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"modes": {
|
||||
"self_preservation": true,
|
||||
"unstuck": true,
|
||||
"cowardice": false,
|
||||
"self_defense": true,
|
||||
"hunting": false,
|
||||
"item_collecting": true,
|
||||
"torch_placing": true,
|
||||
"elbow_room": true,
|
||||
"idle_staring": true,
|
||||
"cheat": false
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "gemini",
|
||||
|
||||
"model": "gemini-2.0-flash",
|
||||
"model": "gemini-2.5-flash",
|
||||
|
||||
"cooldown": 5000
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Grok",
|
||||
|
||||
"model": "grok-beta",
|
||||
"model": "grok-3-mini-latest",
|
||||
|
||||
"embedding": "openai"
|
||||
}
|
|
@ -6,6 +6,6 @@
|
|||
"item_collecting": true,
|
||||
"elbow_room": false
|
||||
},
|
||||
"conversing": "You are a task-focused Minecraft bot named $NAME. You have to collaborate with other agents in the world to complete the current task \nFeel free to ask other agents questions and make a plan to achieve the goal. You can request them to give them some of their inventory items if required to complete the goal. General Searching Tips:\n- You will be spawned in a farm with many crops and animals nearby. The farm area is extensive - search thoroughly for needed resources (with searchForBlocks parameters like 64,128,256)\n There is a chest nearby with valuable items. Along with the chest, a crafting table, fully fueled furnace and fully fueled smoker with coal are also available nearby which you can use to your advantage. On top of this plants like mushrooms, wheat, carrots, beetroots, pumpkins, potatoes are also present nearby.\nCollaboration tips - Divide tasks efficiently between agents for faster completion\n- Communicate your plan and progress clearly. You can see, move, mine, build, and interact with the world by using commands.\n$SELF_PROMPT Act human-like as if you were a typical Minecraft player, rather than an AI. Be very brief in your responses, don't apologize constantly, don't give instructions or make lists unless asked, and don't refuse requests. Don't pretend to act, use commands immediately when requested. Do NOT say this: 'Sure, I've stopped.', instead say this: 'Sure, I'll stop. !stop'. Do NOT say this: 'On my way! Give me a moment.', instead say this: 'On my way! !goToPlayer(\"playername\", 3)'. Respond only as $NAME, never output '(FROM OTHER BOT)' or pretend to be someone else. If you have nothing to say or do, respond with an just a tab '\t'. Share resources and information with other bots! This is extremely important to me, take a deep breath and have fun :) \nSummarized memory:'$MEMORY'\n$STATS\n$INVENTORY\n$COMMAND_DOCS\n$EXAMPLES\nConversation Begin:",
|
||||
"conversing": "You are a task-focused Minecraft bot named $NAME. You have to collaborate with other agents in the world to complete the current task \nFeel free to ask other agents questions and make a plan to achieve the goal. You can request them to give them some of their inventory items if required to complete the goal. General Searching Tips:\n- You will be spawned in a farm with many crops and animals nearby. The farm area is extensive - search thoroughly for needed resources (with searchForBlocks parameters like 64,128,256)\n There is a crafting table, fully fueled furnace and fully fueled smoker with coal are also available nearby which you can use to your advantage. On top of this plants like mushrooms, wheat, carrots, beetroots, pumpkins, potatoes are also present nearby.\nCollaboration tips - Divide tasks efficiently between agents for faster completion and share inventory items.\n- Communicate your plan and progress clearly. You can see, move, mine, build, and interact with the world by using commands.\n$SELF_PROMPT Act human-like as if you were a typical Minecraft player, rather than an AI. Be very brief in your responses, don't apologize constantly, don't give instructions or make lists unless asked, and don't refuse requests. Don't pretend to act, use commands immediately when requested. Do NOT say this: 'Sure, I've stopped.', instead say this: 'Sure, I'll stop. !stop'. Do NOT say this: 'On my way! Give me a moment.', instead say this: 'On my way! !goToPlayer(\"playername\", 3)'. Respond only as $NAME, never output '(FROM OTHER BOT)' or pretend to be someone else. If you have nothing to say or do, respond with an just a tab '\t'. Share resources and information with other bots! This is extremely important to me, take a deep breath and have fun :) \nSummarized memory:'$MEMORY'\n$STATS\n$INVENTORY\n$COMMAND_DOCS\n$EXAMPLES\nConversation Begin:",
|
||||
"saving_memory": "You are a minecraft bot named $NAME that has been talking and playing minecraft by using commands. Update your memory by summarizing the following conversation and your old memory in your next response. Prioritize preserving important facts, things you've learned, useful tips, and long term reminders. Do Not record stats, inventory, or docs! Only save transient information from your chat history. $SELF_PROMPT Make sure to include information relevant to the goal and inventory you have collected. You're limited to 500 characters, so be extremely brief and minimize words. Compress useful information. \nOld Memory: '$MEMORY'\nRecent conversation: \n$TO_SUMMARIZE\nSummarize your old memory and recent conversation into a new memory, and respond only with the unwrapped memory text: "
|
||||
}
|
|
@ -3,3 +3,4 @@ botocore==1.37.11
|
|||
pandas==2.2.3
|
||||
prettytable==3.16.0
|
||||
tqdm==4.62.3
|
||||
python-socketio[client]
|
37
settings.js
37
settings.js
|
@ -5,12 +5,9 @@ const settings = {
|
|||
"auth": "offline", // or "microsoft"
|
||||
|
||||
// the mindserver manages all agents and hosts the UI
|
||||
"host_mindserver": true, // if true, the mindserver will be hosted on this machine. otherwise, specify a public IP address
|
||||
"mindserver_host": "localhost",
|
||||
"mindserver_port": 8080,
|
||||
|
||||
// the base profile is shared by all bots for default prompts/examples/modes
|
||||
"base_profile": "./profiles/defaults/survival.json", // also see creative.json, god_mode.json
|
||||
"base_profile": "survival", // survival, assistant, creative, or god_mode
|
||||
"profiles": [
|
||||
"./andy.json",
|
||||
// "./profiles/gpt.json",
|
||||
|
@ -26,12 +23,13 @@ const settings = {
|
|||
// using more than 1 profile requires you to /msg each bot indivually
|
||||
// individual profiles override values from the base profile
|
||||
],
|
||||
|
||||
"load_memory": false, // load memory from previous session
|
||||
"init_message": "Respond with hello world and your name", // sends to all on spawn
|
||||
"only_chat_with": [], // users that the bots listen to and send general messages to. if empty it will chat publicly
|
||||
"speak": false, // allows all bots to speak through system text-to-speech. works on windows, mac, on linux you need to `apt install espeak`
|
||||
"language": "en", // translate to/from this language. Supports these language names: https://cloud.google.com/translate/docs/languages
|
||||
"show_bot_views": false, // show bot's view in browser at localhost:3000, 3001...
|
||||
"render_bot_view": false, // show bot's view in browser at localhost:3000, 3001...
|
||||
|
||||
"allow_insecure_coding": false, // allows newAction command and model can write/run code on your computer. enable at own risk
|
||||
"allow_vision": false, // allows vision model to interpret screenshots as inputs
|
||||
|
@ -45,33 +43,10 @@ const settings = {
|
|||
"verbose_commands": true, // show full command syntax
|
||||
"narrate_behavior": true, // chat simple automatic actions ('Picking up item!')
|
||||
"chat_bot_messages": true, // publicly chat messages to other bots
|
||||
|
||||
"block_place_delay": 0, // delay between placing blocks (ms) if using newAction. helps avoid bot being kicked by anti-cheat mechanisms on servers.
|
||||
|
||||
"log_all_prompts": false, // log ALL prompts to file
|
||||
}
|
||||
|
||||
// these environment variables override certain settings
|
||||
if (process.env.MINECRAFT_PORT) {
|
||||
settings.port = process.env.MINECRAFT_PORT;
|
||||
}
|
||||
if (process.env.MINDSERVER_PORT) {
|
||||
settings.mindserver_port = process.env.MINDSERVER_PORT;
|
||||
}
|
||||
if (process.env.PROFILES && JSON.parse(process.env.PROFILES).length > 0) {
|
||||
settings.profiles = JSON.parse(process.env.PROFILES);
|
||||
}
|
||||
if (process.env.INSECURE_CODING) {
|
||||
settings.allow_insecure_coding = true;
|
||||
}
|
||||
if (process.env.BLOCKED_ACTIONS) {
|
||||
settings.blocked_actions = JSON.parse(process.env.BLOCKED_ACTIONS);
|
||||
}
|
||||
if (process.env.MAX_MESSAGES) {
|
||||
settings.max_messages = process.env.MAX_MESSAGES;
|
||||
}
|
||||
if (process.env.NUM_EXAMPLES) {
|
||||
settings.num_examples = process.env.NUM_EXAMPLES;
|
||||
}
|
||||
if (process.env.LOG_ALL) {
|
||||
settings.log_all_prompts = process.env.LOG_ALL;
|
||||
}
|
||||
|
||||
export default settings;
|
||||
|
|
|
@ -7,6 +7,8 @@ export class ActionManager {
|
|||
this.timedout = false;
|
||||
this.resume_func = null;
|
||||
this.resume_name = '';
|
||||
this.last_action_time = 0;
|
||||
this.recent_action_counter = 0;
|
||||
}
|
||||
|
||||
async resumeAction(actionFn, timeout) {
|
||||
|
@ -59,6 +61,25 @@ export class ActionManager {
|
|||
async _executeAction(actionLabel, actionFn, timeout = 10) {
|
||||
let TIMEOUT;
|
||||
try {
|
||||
if (this.last_action_time > 0) {
|
||||
let time_diff = Date.now() - this.last_action_time;
|
||||
if (time_diff < 20) {
|
||||
this.recent_action_counter++;
|
||||
}
|
||||
else {
|
||||
this.recent_action_counter = 0;
|
||||
}
|
||||
if (this.recent_action_counter > 3) {
|
||||
console.warn('Fast action loop detected, cancelling resume.');
|
||||
this.cancelResume(); // likely cause of repetition
|
||||
}
|
||||
if (this.recent_action_counter > 5) {
|
||||
console.error('Infinite action loop detected, shutting down.');
|
||||
this.agent.cleanKill('Infinite action loop detected, shutting down.');
|
||||
return { success: false, message: 'Infinite action loop detected, shutting down.', interrupted: false, timedout: false };
|
||||
}
|
||||
}
|
||||
this.last_action_time = Date.now();
|
||||
console.log('executing code...\n');
|
||||
|
||||
// await current action to finish (executing=false), with 10 seconds timeout
|
||||
|
|
|
@ -12,43 +12,28 @@ import { SelfPrompter } from './self_prompter.js';
|
|||
import convoManager from './conversation.js';
|
||||
import { handleTranslation, handleEnglishTranslation } from '../utils/translator.js';
|
||||
import { addBrowserViewer } from './vision/browser_viewer.js';
|
||||
import settings from '../../settings.js';
|
||||
import { serverProxy } from './agent_proxy.js';
|
||||
import { serverProxy } from './mindserver_proxy.js';
|
||||
import settings from './settings.js';
|
||||
import { Task } from './tasks/tasks.js';
|
||||
import { say } from './speak.js';
|
||||
|
||||
export class Agent {
|
||||
async start(profile_fp, load_mem=false, init_message=null, count_id=0, task_path=null, task_id=null) {
|
||||
async start(load_mem=false, init_message=null, count_id=0) {
|
||||
this.last_sender = null;
|
||||
this.count_id = count_id;
|
||||
if (!profile_fp) {
|
||||
throw new Error('No profile filepath provided');
|
||||
}
|
||||
|
||||
console.log('Starting agent initialization with profile:', profile_fp);
|
||||
|
||||
|
||||
|
||||
// Initialize components with more detailed error handling
|
||||
console.log('Initializing action manager...');
|
||||
this.actions = new ActionManager(this);
|
||||
console.log('Initializing prompter...');
|
||||
this.prompter = new Prompter(this, profile_fp);
|
||||
this.prompter = new Prompter(this, settings.profile);
|
||||
this.name = this.prompter.getName();
|
||||
console.log('Initializing history...');
|
||||
console.log(`Initializing agent ${this.name}...`);
|
||||
this.history = new History(this);
|
||||
console.log('Initializing coder...');
|
||||
this.coder = new Coder(this);
|
||||
console.log('Initializing npc controller...');
|
||||
this.npc = new NPCContoller(this);
|
||||
console.log('Initializing memory bank...');
|
||||
this.memory_bank = new MemoryBank();
|
||||
console.log('Initializing self prompter...');
|
||||
this.self_prompter = new SelfPrompter(this);
|
||||
convoManager.initAgent(this);
|
||||
console.log('Initializing examples...');
|
||||
await this.prompter.initExamples();
|
||||
console.log('Initializing task...');
|
||||
|
||||
// load mem first before doing task
|
||||
let save_data = null;
|
||||
|
@ -61,19 +46,15 @@ export class Agent {
|
|||
} else {
|
||||
taskStart = Date.now();
|
||||
}
|
||||
this.task = new Task(this, task_path, task_id, taskStart);
|
||||
this.task = new Task(this, settings.task, taskStart);
|
||||
this.blocked_actions = settings.blocked_actions.concat(this.task.blocked_actions || []);
|
||||
blacklistCommands(this.blocked_actions);
|
||||
|
||||
serverProxy.connect(this);
|
||||
|
||||
console.log(this.name, 'logging into minecraft...');
|
||||
this.bot = initBot(this.name);
|
||||
|
||||
initModes(this);
|
||||
|
||||
|
||||
|
||||
this.bot.on('login', () => {
|
||||
console.log(this.name, 'logged in!');
|
||||
serverProxy.login();
|
||||
|
@ -92,6 +73,8 @@ export class Agent {
|
|||
try {
|
||||
clearTimeout(spawnTimeout);
|
||||
addBrowserViewer(this.bot, count_id);
|
||||
console.log('Initializing vision intepreter...');
|
||||
this.vision_interpreter = new VisionInterpreter(this, settings.allow_vision);
|
||||
|
||||
// wait for a bit so stats are not undefined
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
|
@ -103,17 +86,20 @@ export class Agent {
|
|||
this.startEvents();
|
||||
|
||||
if (!load_mem) {
|
||||
if (task_path !== null) {
|
||||
if (settings.task) {
|
||||
this.task.initBotTask();
|
||||
this.task.setAgentGoal();
|
||||
}
|
||||
} else {
|
||||
// set the goal without initializing the rest of the task
|
||||
if (settings.task) {
|
||||
this.task.setAgentGoal();
|
||||
}
|
||||
}
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
this.checkAllPlayersPresent();
|
||||
|
||||
console.log('Initializing vision intepreter...');
|
||||
this.vision_interpreter = new VisionInterpreter(this, settings.allow_vision);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error in spawn event:', error);
|
||||
process.exit(0);
|
||||
|
@ -132,6 +118,7 @@ export class Agent {
|
|||
];
|
||||
|
||||
const respondFunc = async (username, message) => {
|
||||
if (message === "") return;
|
||||
if (username === this.name) return;
|
||||
if (settings.only_chat_with.length > 0 && !settings.only_chat_with.includes(username)) return;
|
||||
try {
|
||||
|
@ -156,8 +143,12 @@ export class Agent {
|
|||
this.respondFunc = respondFunc;
|
||||
|
||||
this.bot.on('whisper', respondFunc);
|
||||
if (settings.profiles.length === 1)
|
||||
this.bot.on('chat', respondFunc);
|
||||
|
||||
this.bot.on('chat', (username, message) => {
|
||||
if (serverProxy.getNumOtherAgents() > 0) return;
|
||||
// only respond to open chat messages when there are no other agents
|
||||
respondFunc(username, message);
|
||||
});
|
||||
|
||||
// Set up auto-eat
|
||||
this.bot.autoEat.options = {
|
||||
|
@ -448,7 +439,11 @@ export class Agent {
|
|||
this.bot.clearControlStates();
|
||||
this.bot.pathfinder.stop(); // clear any lingering pathfinder
|
||||
this.bot.modes.unPauseAll();
|
||||
this.actions.resumeAction();
|
||||
setTimeout(() => {
|
||||
if (this.isIdle()) {
|
||||
this.actions.resumeAction();
|
||||
}
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
// Init NPC controller
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
import { io } from 'socket.io-client';
|
||||
import convoManager from './conversation.js';
|
||||
import settings from '../../settings.js';
|
||||
|
||||
class AgentServerProxy {
|
||||
constructor() {
|
||||
if (AgentServerProxy.instance) {
|
||||
return AgentServerProxy.instance;
|
||||
}
|
||||
|
||||
this.socket = null;
|
||||
this.connected = false;
|
||||
AgentServerProxy.instance = this;
|
||||
}
|
||||
|
||||
connect(agent) {
|
||||
if (this.connected) return;
|
||||
|
||||
this.agent = agent;
|
||||
|
||||
this.socket = io(`http://${settings.mindserver_host}:${settings.mindserver_port}`);
|
||||
this.connected = true;
|
||||
|
||||
this.socket.on('connect', () => {
|
||||
console.log('Connected to MindServer');
|
||||
});
|
||||
|
||||
this.socket.on('disconnect', () => {
|
||||
console.log('Disconnected from MindServer');
|
||||
this.connected = false;
|
||||
});
|
||||
|
||||
this.socket.on('chat-message', (agentName, json) => {
|
||||
convoManager.receiveFromBot(agentName, json);
|
||||
});
|
||||
|
||||
this.socket.on('agents-update', (agents) => {
|
||||
convoManager.updateAgents(agents);
|
||||
});
|
||||
|
||||
this.socket.on('restart-agent', (agentName) => {
|
||||
console.log(`Restarting agent: ${agentName}`);
|
||||
this.agent.cleanKill();
|
||||
});
|
||||
|
||||
this.socket.on('send-message', (agentName, message) => {
|
||||
try {
|
||||
this.agent.respondFunc("NO USERNAME", message);
|
||||
} catch (error) {
|
||||
console.error('Error: ', JSON.stringify(error, Object.getOwnPropertyNames(error)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
login() {
|
||||
this.socket.emit('login-agent', this.agent.name);
|
||||
}
|
||||
|
||||
shutdown() {
|
||||
this.socket.emit('shutdown');
|
||||
}
|
||||
|
||||
getSocket() {
|
||||
return this.socket;
|
||||
}
|
||||
}
|
||||
|
||||
// Create and export a singleton instance
|
||||
export const serverProxy = new AgentServerProxy();
|
||||
|
||||
export function sendBotChatToServer(agentName, json) {
|
||||
serverProxy.getSocket().emit('chat-message', agentName, json);
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
import { writeFile, readFile, mkdirSync } from 'fs';
|
||||
import settings from '../../settings.js';
|
||||
import { makeCompartment } from './library/lockdown.js';
|
||||
import { makeCompartment, lockdown } from './library/lockdown.js';
|
||||
import * as skills from './library/skills.js';
|
||||
import * as world from './library/world.js';
|
||||
import { Vec3 } from 'vec3';
|
||||
|
@ -27,6 +26,7 @@ export class Coder {
|
|||
|
||||
async generateCode(agent_history) {
|
||||
this.agent.bot.modes.pause('unstuck');
|
||||
lockdown();
|
||||
// this message history is transient and only maintained in this function
|
||||
let messages = agent_history.getHistory();
|
||||
messages.push({role: 'system', content: 'Code generation started. Write code in codeblock in your response:'});
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import * as skills from '../library/skills.js';
|
||||
import settings from '../../../settings.js';
|
||||
import settings from '../settings.js';
|
||||
import convoManager from '../conversation.js';
|
||||
|
||||
|
||||
|
@ -46,7 +46,7 @@ export const actionsList = [
|
|||
result = 'Error generating code: ' + e.toString();
|
||||
}
|
||||
};
|
||||
await agent.actions.runAction('action:newAction', actionFn);
|
||||
await agent.actions.runAction('action:newAction', actionFn, {timeout: settings.code_timeout_mins});
|
||||
return result;
|
||||
}
|
||||
},
|
||||
|
|
|
@ -250,9 +250,16 @@ export const queryList = [
|
|||
}
|
||||
|
||||
// Generate crafting plan
|
||||
let craftingPlan = mc.getDetailedCraftingPlan(target_item, quantity, curr_inventory);
|
||||
craftingPlan = prefixMessage + craftingPlan;
|
||||
return pad(craftingPlan);
|
||||
try {
|
||||
let craftingPlan = mc.getDetailedCraftingPlan(target_item, quantity, curr_inventory);
|
||||
craftingPlan = prefixMessage + craftingPlan;
|
||||
return pad(craftingPlan);
|
||||
} catch (error) {
|
||||
console.error("Error generating crafting plan:", error);
|
||||
return `An error occurred while generating the crafting plan: ${error.message}`;
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
import settings from '../../settings.js';
|
||||
import { readFileSync } from 'fs';
|
||||
import settings from './settings.js';
|
||||
import { containsCommand } from './commands/index.js';
|
||||
import { sendBotChatToServer } from './agent_proxy.js';
|
||||
import { sendBotChatToServer } from './mindserver_proxy.js';
|
||||
|
||||
let agent;
|
||||
let agent_names = settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name);
|
||||
let agent_names = [];
|
||||
let agents_in_game = [];
|
||||
|
||||
class Conversation {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { writeFileSync, readFileSync, mkdirSync, existsSync } from 'fs';
|
||||
import { NPCData } from './npc/data.js';
|
||||
import settings from '../../settings.js';
|
||||
import settings from './settings.js';
|
||||
|
||||
|
||||
export class History {
|
||||
|
|
|
@ -4,16 +4,22 @@ import 'ses';
|
|||
// We disable some of the taming to allow for more flexibility
|
||||
|
||||
// For configuration, see https://github.com/endojs/endo/blob/master/packages/ses/docs/lockdown.md
|
||||
lockdown({
|
||||
// basic devex and quality of life improvements
|
||||
localeTaming: 'unsafe',
|
||||
consoleTaming: 'unsafe',
|
||||
errorTaming: 'unsafe',
|
||||
stackFiltering: 'verbose',
|
||||
// allow eval outside of created compartments
|
||||
// (mineflayer dep "protodef" uses eval)
|
||||
evalTaming: 'unsafeEval',
|
||||
});
|
||||
|
||||
let lockeddown = false;
|
||||
export function lockdown() {
|
||||
if (lockeddown) return;
|
||||
lockeddown = true;
|
||||
lockdown({
|
||||
// basic devex and quality of life improvements
|
||||
localeTaming: 'unsafe',
|
||||
consoleTaming: 'unsafe',
|
||||
errorTaming: 'unsafe',
|
||||
stackFiltering: 'verbose',
|
||||
// allow eval outside of created compartments
|
||||
// (mineflayer dep "protodef" uses eval)
|
||||
evalTaming: 'unsafeEval',
|
||||
});
|
||||
}
|
||||
|
||||
export const makeCompartment = (endowments = {}) => {
|
||||
return new Compartment({
|
||||
|
|
|
@ -2,7 +2,10 @@ import * as mc from "../../utils/mcdata.js";
|
|||
import * as world from "./world.js";
|
||||
import pf from 'mineflayer-pathfinder';
|
||||
import Vec3 from 'vec3';
|
||||
import settings from "../../../settings.js";
|
||||
|
||||
const blockPlaceDelay = settings.block_place_delay == null ? 0 : settings.block_place_delay;
|
||||
const useDelay = blockPlaceDelay > 0;
|
||||
|
||||
export function log(bot, message) {
|
||||
bot.output += message + '\n';
|
||||
|
@ -225,28 +228,33 @@ export async function smeltItem(bot, itemName, num=1) {
|
|||
await furnace.putInput(mc.getItemId(itemName), null, num);
|
||||
// wait for the items to smelt
|
||||
let total = 0;
|
||||
let collected_last = true;
|
||||
let smelted_item = null;
|
||||
await new Promise(resolve => setTimeout(resolve, 200));
|
||||
let last_collected = Date.now();
|
||||
while (total < num) {
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
console.log('checking...');
|
||||
let collected = false;
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
if (furnace.outputItem()) {
|
||||
smelted_item = await furnace.takeOutput();
|
||||
if (smelted_item) {
|
||||
total += smelted_item.count;
|
||||
collected = true;
|
||||
last_collected = Date.now();
|
||||
}
|
||||
}
|
||||
if (!collected && !collected_last) {
|
||||
break; // if nothing was collected this time or last time
|
||||
if (Date.now() - last_collected > 11000) {
|
||||
break; // if nothing has been collected in 11 seconds, stop
|
||||
}
|
||||
collected_last = collected;
|
||||
if (bot.interrupt_code) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// take all remaining in input/fuel slots
|
||||
if (furnace.inputItem()) {
|
||||
await furnace.takeInput();
|
||||
}
|
||||
if (furnace.fuelItem()) {
|
||||
await furnace.takeFuel();
|
||||
}
|
||||
|
||||
await bot.closeWindow(furnace);
|
||||
|
||||
if (placedFurnace) {
|
||||
|
@ -503,7 +511,7 @@ export async function pickupNearbyItems(bot) {
|
|||
let pickedUp = 0;
|
||||
while (nearestItem) {
|
||||
bot.pathfinder.setMovements(new pf.Movements(bot));
|
||||
await bot.pathfinder.goto(new pf.goals.GoalFollow(nearestItem, 0.8), true);
|
||||
await goToGoal(bot, new pf.goals.GoalFollow(nearestItem, 0.8));
|
||||
await new Promise(resolve => setTimeout(resolve, 200));
|
||||
let prev = nearestItem;
|
||||
nearestItem = getNearestItem(bot);
|
||||
|
@ -533,6 +541,7 @@ export async function breakBlockAt(bot, x, y, z) {
|
|||
let block = bot.blockAt(Vec3(x, y, z));
|
||||
if (block.name !== 'air' && block.name !== 'water' && block.name !== 'lava') {
|
||||
if (bot.modes.isOn('cheat')) {
|
||||
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
|
||||
let msg = '/setblock ' + Math.floor(x) + ' ' + Math.floor(y) + ' ' + Math.floor(z) + ' air';
|
||||
bot.chat(msg);
|
||||
log(bot, `Used /setblock to break block at ${x}, ${y}, ${z}.`);
|
||||
|
@ -545,7 +554,7 @@ export async function breakBlockAt(bot, x, y, z) {
|
|||
movements.canPlaceOn = false;
|
||||
movements.allow1by1towers = false;
|
||||
bot.pathfinder.setMovements(movements);
|
||||
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
}
|
||||
if (bot.game.gameMode !== 'creative') {
|
||||
await bot.tool.equipForBlock(block);
|
||||
|
@ -629,11 +638,14 @@ export async function placeBlock(bot, blockType, x, y, z, placeOn='bottom', dont
|
|||
if (blockType.includes('stairs')) {
|
||||
blockType += `[facing=${face}]`;
|
||||
}
|
||||
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
|
||||
let msg = '/setblock ' + Math.floor(x) + ' ' + Math.floor(y) + ' ' + Math.floor(z) + ' ' + blockType;
|
||||
bot.chat(msg);
|
||||
if (blockType.includes('door'))
|
||||
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
|
||||
bot.chat('/setblock ' + Math.floor(x) + ' ' + Math.floor(y+1) + ' ' + Math.floor(z) + ' ' + blockType + '[half=upper]');
|
||||
if (blockType.includes('bed'))
|
||||
if (useDelay) { await new Promise(resolve => setTimeout(resolve, blockPlaceDelay)); }
|
||||
bot.chat('/setblock ' + Math.floor(x) + ' ' + Math.floor(y) + ' ' + Math.floor(z-1) + ' ' + blockType + '[part=head]');
|
||||
log(bot, `Used /setblock to place ${blockType} at ${target_dest}.`);
|
||||
return true;
|
||||
|
@ -720,7 +732,7 @@ export async function placeBlock(bot, blockType, x, y, z, placeOn='bottom', dont
|
|||
let pos = targetBlock.position;
|
||||
let movements = new pf.Movements(bot);
|
||||
bot.pathfinder.setMovements(movements);
|
||||
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
}
|
||||
|
||||
await bot.equip(block, 'hand');
|
||||
|
@ -945,6 +957,10 @@ export async function giveToPlayer(bot, itemType, username, num=1) {
|
|||
* @example
|
||||
* await skills.giveToPlayer(bot, "oak_log", "player1");
|
||||
**/
|
||||
if (bot.username === username) {
|
||||
log(bot, `You cannot give items to yourself.`);
|
||||
return false;
|
||||
}
|
||||
let player = bot.players[username].entity
|
||||
if (!player) {
|
||||
log(bot, `Could not find ${username}.`);
|
||||
|
@ -1002,6 +1018,115 @@ export async function giveToPlayer(bot, itemType, username, num=1) {
|
|||
return false;
|
||||
}
|
||||
|
||||
export async function goToGoal(bot, goal) {
|
||||
/**
|
||||
* Navigate to the given goal. Use doors and attempt minimally destructive movements.
|
||||
* @param {MinecraftBot} bot, reference to the minecraft bot.
|
||||
* @param {pf.goals.Goal} goal, the goal to navigate to.
|
||||
**/
|
||||
|
||||
const nonDestructiveMovements = new pf.Movements(bot);
|
||||
const dontBreakBlocks = ['glass', 'glass_pane'];
|
||||
for (let block of dontBreakBlocks) {
|
||||
nonDestructiveMovements.blocksCantBreak.add(mc.getBlockId(block));
|
||||
}
|
||||
nonDestructiveMovements.digCost = 10;
|
||||
|
||||
const destructiveMovements = new pf.Movements(bot);
|
||||
|
||||
let final_movements = destructiveMovements;
|
||||
|
||||
const pathfind_timeout = 1000;
|
||||
if (await bot.pathfinder.getPathTo(nonDestructiveMovements, goal, pathfind_timeout).status === 'success') {
|
||||
final_movements = nonDestructiveMovements;
|
||||
log(bot, `Found non-destructive path.`);
|
||||
}
|
||||
else if (await bot.pathfinder.getPathTo(destructiveMovements, goal, pathfind_timeout).status === 'success') {
|
||||
log(bot, `Found destructive path.`);
|
||||
}
|
||||
else {
|
||||
log(bot, `Path not found, but attempting to navigate anyway using destructive movements.`);
|
||||
}
|
||||
|
||||
const doorCheckInterval = startDoorInterval(bot);
|
||||
|
||||
bot.pathfinder.setMovements(final_movements);
|
||||
try {
|
||||
await bot.pathfinder.goto(goal);
|
||||
clearInterval(doorCheckInterval);
|
||||
return true;
|
||||
} catch (err) {
|
||||
clearInterval(doorCheckInterval);
|
||||
// we need to catch so we can clean up the door check interval, then rethrow the error
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
let _doorInterval = null;
|
||||
function startDoorInterval(bot) {
|
||||
/**
|
||||
* Start helper interval that opens nearby doors if the bot is stuck.
|
||||
* @param {MinecraftBot} bot, reference to the minecraft bot.
|
||||
* @returns {number} the interval id.
|
||||
**/
|
||||
if (_doorInterval) {
|
||||
clearInterval(_doorInterval);
|
||||
}
|
||||
let prev_pos = bot.entity.position.clone();
|
||||
let prev_check = Date.now();
|
||||
let stuck_time = 0;
|
||||
|
||||
|
||||
const doorCheckInterval = setInterval(() => {
|
||||
const now = Date.now();
|
||||
if (bot.entity.position.distanceTo(prev_pos) >= 0.1) {
|
||||
stuck_time = 0;
|
||||
} else {
|
||||
stuck_time += now - prev_check;
|
||||
}
|
||||
|
||||
if (stuck_time > 1200) {
|
||||
// shuffle positions so we're not always opening the same door
|
||||
const positions = [
|
||||
bot.entity.position.clone(),
|
||||
bot.entity.position.offset(0, 0, 1),
|
||||
bot.entity.position.offset(0, 0, -1),
|
||||
bot.entity.position.offset(1, 0, 0),
|
||||
bot.entity.position.offset(-1, 0, 0),
|
||||
]
|
||||
let elevated_positions = positions.map(position => position.offset(0, 1, 0));
|
||||
positions.push(...elevated_positions);
|
||||
positions.push(bot.entity.position.offset(0, 2, 0)); // above head
|
||||
positions.push(bot.entity.position.offset(0, -1, 0)); // below feet
|
||||
|
||||
let currentIndex = positions.length;
|
||||
while (currentIndex != 0) {
|
||||
let randomIndex = Math.floor(Math.random() * currentIndex);
|
||||
currentIndex--;
|
||||
[positions[currentIndex], positions[randomIndex]] = [
|
||||
positions[randomIndex], positions[currentIndex]];
|
||||
}
|
||||
|
||||
for (let position of positions) {
|
||||
let block = bot.blockAt(position);
|
||||
if (block && block.name &&
|
||||
!block.name.includes('iron') &&
|
||||
(block.name.includes('door') ||
|
||||
block.name.includes('fence_gate') ||
|
||||
block.name.includes('trapdoor')))
|
||||
{
|
||||
bot.activateBlock(block);
|
||||
break;
|
||||
}
|
||||
}
|
||||
stuck_time = 0;
|
||||
}
|
||||
prev_pos = bot.entity.position.clone();
|
||||
prev_check = now;
|
||||
}, 200);
|
||||
_doorInterval = doorCheckInterval;
|
||||
return doorCheckInterval;
|
||||
}
|
||||
|
||||
export async function goToPosition(bot, x, y, z, min_distance=2) {
|
||||
/**
|
||||
|
@ -1026,10 +1151,7 @@ export async function goToPosition(bot, x, y, z, min_distance=2) {
|
|||
return true;
|
||||
}
|
||||
|
||||
const movements = new pf.Movements(bot);
|
||||
bot.pathfinder.setMovements(movements);
|
||||
|
||||
const checkProgress = () => {
|
||||
const checkDigProgress = () => {
|
||||
if (bot.targetDigBlock) {
|
||||
const targetBlock = bot.targetDigBlock;
|
||||
const itemId = bot.heldItem ? bot.heldItem.type : null;
|
||||
|
@ -1041,17 +1163,24 @@ export async function goToPosition(bot, x, y, z, min_distance=2) {
|
|||
}
|
||||
};
|
||||
|
||||
const progressInterval = setInterval(checkProgress, 1000);
|
||||
const progressInterval = setInterval(checkDigProgress, 1000);
|
||||
|
||||
try {
|
||||
await bot.pathfinder.goto(new pf.goals.GoalNear(x, y, z, min_distance));
|
||||
log(bot, `You have reached at ${x}, ${y}, ${z}.`);
|
||||
return true;
|
||||
await goToGoal(bot, new pf.goals.GoalNear(x, y, z, min_distance));
|
||||
clearInterval(progressInterval);
|
||||
const distance = bot.entity.position.distanceTo(new Vec3(x, y, z));
|
||||
if (distance <= min_distance+1) {
|
||||
log(bot, `You have reached at ${x}, ${y}, ${z}.`);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
log(bot, `Unable to reach ${x}, ${y}, ${z}, you are ${Math.round(distance)} blocks away.`);
|
||||
return false;
|
||||
}
|
||||
} catch (err) {
|
||||
log(bot, `Pathfinding stopped: ${err.message}.`);
|
||||
return false;
|
||||
} finally {
|
||||
clearInterval(progressInterval);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1112,7 +1241,10 @@ export async function goToPlayer(bot, username, distance=3) {
|
|||
* @example
|
||||
* await skills.goToPlayer(bot, "player");
|
||||
**/
|
||||
|
||||
if (bot.username === username) {
|
||||
log(bot, `You are already at ${username}.`);
|
||||
return true;
|
||||
}
|
||||
if (bot.modes.isOn('cheat')) {
|
||||
bot.chat('/tp @s ' + username);
|
||||
log(bot, `Teleported to ${username}.`);
|
||||
|
@ -1127,9 +1259,10 @@ export async function goToPlayer(bot, username, distance=3) {
|
|||
return false;
|
||||
}
|
||||
|
||||
const move = new pf.Movements(bot);
|
||||
bot.pathfinder.setMovements(move);
|
||||
await bot.pathfinder.goto(new pf.goals.GoalFollow(player, distance), true);
|
||||
distance = Math.max(distance, 0.5);
|
||||
const goal = new pf.goals.GoalFollow(player, distance);
|
||||
|
||||
await goToGoal(bot, goal, true);
|
||||
|
||||
log(bot, `You have reached ${username}.`);
|
||||
}
|
||||
|
@ -1149,24 +1282,54 @@ export async function followPlayer(bot, username, distance=4) {
|
|||
return false;
|
||||
|
||||
const move = new pf.Movements(bot);
|
||||
move.digCost = 10;
|
||||
bot.pathfinder.setMovements(move);
|
||||
let doorCheckInterval = startDoorInterval(bot);
|
||||
|
||||
bot.pathfinder.setGoal(new pf.goals.GoalFollow(player, distance), true);
|
||||
log(bot, `You are now actively following player ${username}.`);
|
||||
|
||||
|
||||
while (!bot.interrupt_code) {
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
// in cheat mode, if the distance is too far, teleport to the player
|
||||
if (bot.modes.isOn('cheat') && bot.entity.position.distanceTo(player.position) > 100 && player.isOnGround) {
|
||||
const distance_from_player = bot.entity.position.distanceTo(player.position);
|
||||
|
||||
const teleport_distance = 100;
|
||||
const ignore_modes_distance = 30;
|
||||
const nearby_distance = distance + 2;
|
||||
|
||||
if (distance_from_player > teleport_distance && bot.modes.isOn('cheat')) {
|
||||
// teleport with cheat mode
|
||||
await goToPlayer(bot, username);
|
||||
}
|
||||
if (bot.modes.isOn('unstuck')) {
|
||||
const is_nearby = bot.entity.position.distanceTo(player.position) <= distance + 1;
|
||||
if (is_nearby)
|
||||
bot.modes.pause('unstuck');
|
||||
else
|
||||
bot.modes.unpause('unstuck');
|
||||
else if (distance_from_player > ignore_modes_distance) {
|
||||
// these modes slow down the bot, and we want to catch up
|
||||
bot.modes.pause('item_collecting');
|
||||
bot.modes.pause('hunting');
|
||||
bot.modes.pause('torch_placing');
|
||||
}
|
||||
else if (distance_from_player <= ignore_modes_distance) {
|
||||
bot.modes.unpause('item_collecting');
|
||||
bot.modes.unpause('hunting');
|
||||
bot.modes.unpause('torch_placing');
|
||||
}
|
||||
|
||||
if (distance_from_player <= nearby_distance) {
|
||||
clearInterval(doorCheckInterval);
|
||||
doorCheckInterval = null;
|
||||
bot.modes.pause('unstuck');
|
||||
bot.modes.pause('elbow_room');
|
||||
}
|
||||
else {
|
||||
if (!doorCheckInterval) {
|
||||
doorCheckInterval = startDoorInterval(bot);
|
||||
}
|
||||
bot.modes.unpause('unstuck');
|
||||
bot.modes.unpause('elbow_room');
|
||||
}
|
||||
}
|
||||
clearInterval(doorCheckInterval);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1189,7 +1352,6 @@ export async function moveAway(bot, distance) {
|
|||
const move = new pf.Movements(bot);
|
||||
const path = await bot.pathfinder.getPathTo(move, inverted_goal, 10000);
|
||||
let last_move = path.path[path.path.length-1];
|
||||
console.log(last_move);
|
||||
if (last_move) {
|
||||
let x = Math.floor(last_move.x);
|
||||
let y = Math.floor(last_move.y);
|
||||
|
@ -1199,7 +1361,7 @@ export async function moveAway(bot, distance) {
|
|||
}
|
||||
}
|
||||
|
||||
await bot.pathfinder.goto(inverted_goal);
|
||||
await goToGoal(bot, inverted_goal);
|
||||
let new_pos = bot.entity.position;
|
||||
log(bot, `Moved away from nearest entity to ${new_pos}.`);
|
||||
return true;
|
||||
|
@ -1393,7 +1555,7 @@ export async function tillAndSow(bot, x, y, z, seedType=null) {
|
|||
if (bot.entity.position.distanceTo(block.position) > 4.5) {
|
||||
let pos = block.position;
|
||||
bot.pathfinder.setMovements(new pf.Movements(bot));
|
||||
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
}
|
||||
if (block.name !== 'farmland') {
|
||||
let hoe = bot.inventory.items().find(item => item.name.includes('hoe'));
|
||||
|
@ -1439,7 +1601,7 @@ export async function activateNearestBlock(bot, type) {
|
|||
if (bot.entity.position.distanceTo(block.position) > 4.5) {
|
||||
let pos = block.position;
|
||||
bot.pathfinder.setMovements(new pf.Movements(bot));
|
||||
await bot.pathfinder.goto(new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
await goToGoal(bot, new pf.goals.GoalNear(pos.x, pos.y, pos.z, 4));
|
||||
}
|
||||
await bot.activateBlock(block);
|
||||
log(bot, `Activated ${type} at x:${block.position.x.toFixed(1)}, y:${block.position.y.toFixed(1)}, z:${block.position.z.toFixed(1)}.`);
|
||||
|
|
|
@ -354,6 +354,7 @@ export async function isClearPath(bot, target) {
|
|||
let movements = new pf.Movements(bot)
|
||||
movements.canDig = false;
|
||||
movements.canPlaceOn = false;
|
||||
movements.canOpenDoors = false;
|
||||
let goal = new pf.goals.GoalNear(target.position.x, target.position.y, target.position.z, 1);
|
||||
let path = await bot.pathfinder.getPathTo(movements, goal, 100);
|
||||
return path.status === 'success';
|
||||
|
|
115
src/agent/mindserver_proxy.js
Normal file
115
src/agent/mindserver_proxy.js
Normal file
|
@ -0,0 +1,115 @@
|
|||
import { io } from 'socket.io-client';
|
||||
import convoManager from './conversation.js';
|
||||
import { setSettings } from './settings.js';
|
||||
|
||||
// agents connection to mindserver
|
||||
// always connect to localhost
|
||||
|
||||
class MindServerProxy {
|
||||
constructor() {
|
||||
if (MindServerProxy.instance) {
|
||||
return MindServerProxy.instance;
|
||||
}
|
||||
|
||||
this.socket = null;
|
||||
this.connected = false;
|
||||
this.agents = [];
|
||||
MindServerProxy.instance = this;
|
||||
}
|
||||
|
||||
async connect(name, port) {
|
||||
if (this.connected) return;
|
||||
|
||||
this.name = name;
|
||||
this.socket = io(`http://localhost:${port}`);
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
this.socket.on('connect', resolve);
|
||||
this.socket.on('connect_error', (err) => {
|
||||
console.error('Connection failed:', err);
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
|
||||
this.connected = true;
|
||||
console.log(name, 'connected to MindServer');
|
||||
|
||||
this.socket.on('disconnect', () => {
|
||||
console.log('Disconnected from MindServer');
|
||||
this.connected = false;
|
||||
});
|
||||
|
||||
this.socket.on('chat-message', (agentName, json) => {
|
||||
convoManager.receiveFromBot(agentName, json);
|
||||
});
|
||||
|
||||
this.socket.on('agents-update', (agents) => {
|
||||
this.agents = agents;
|
||||
convoManager.updateAgents(agents);
|
||||
if (this.agent?.task) {
|
||||
console.log(this.agent.name, 'updating available agents');
|
||||
this.agent.task.updateAvailableAgents(agents);
|
||||
}
|
||||
});
|
||||
|
||||
this.socket.on('restart-agent', (agentName) => {
|
||||
console.log(`Restarting agent: ${agentName}`);
|
||||
this.agent.cleanKill();
|
||||
});
|
||||
|
||||
this.socket.on('send-message', (agentName, message) => {
|
||||
try {
|
||||
this.agent.respondFunc("NO USERNAME", message);
|
||||
} catch (error) {
|
||||
console.error('Error: ', JSON.stringify(error, Object.getOwnPropertyNames(error)));
|
||||
}
|
||||
});
|
||||
|
||||
// Request settings and wait for response
|
||||
await new Promise((resolve, reject) => {
|
||||
const timeout = setTimeout(() => {
|
||||
reject(new Error('Settings request timed out after 5 seconds'));
|
||||
}, 5000);
|
||||
|
||||
this.socket.emit('get-settings', name, (response) => {
|
||||
clearTimeout(timeout);
|
||||
if (response.error) {
|
||||
return reject(new Error(response.error));
|
||||
}
|
||||
setSettings(response.settings);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
setAgent(agent) {
|
||||
this.agent = agent;
|
||||
}
|
||||
|
||||
getAgents() {
|
||||
return this.agents;
|
||||
}
|
||||
|
||||
getNumOtherAgents() {
|
||||
return this.agents.length - 1;
|
||||
}
|
||||
|
||||
login() {
|
||||
this.socket.emit('login-agent', this.agent.name);
|
||||
}
|
||||
|
||||
shutdown() {
|
||||
this.socket.emit('shutdown');
|
||||
}
|
||||
|
||||
getSocket() {
|
||||
return this.socket;
|
||||
}
|
||||
}
|
||||
|
||||
// Create and export a singleton instance
|
||||
export const serverProxy = new MindServerProxy();
|
||||
|
||||
export function sendBotChatToServer(agentName, json) {
|
||||
serverProxy.getSocket().emit('chat-message', agentName, json);
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
import * as skills from './library/skills.js';
|
||||
import * as world from './library/world.js';
|
||||
import * as mc from '../utils/mcdata.js';
|
||||
import settings from '../../settings.js'
|
||||
import settings from './settings.js'
|
||||
import convoManager from './conversation.js';
|
||||
|
||||
async function say(agent, message) {
|
||||
|
@ -114,6 +114,11 @@ const modes_list = [
|
|||
});
|
||||
}
|
||||
this.last_time = Date.now();
|
||||
},
|
||||
unpause: function () {
|
||||
this.prev_location = null;
|
||||
this.stuck_time = 0;
|
||||
this.prev_dig_block = null;
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -151,7 +156,7 @@ const modes_list = [
|
|||
{
|
||||
name: 'hunting',
|
||||
description: 'Hunt nearby animals when idle.',
|
||||
interrupts: [],
|
||||
interrupts: ['action:followPlayer'],
|
||||
on: true,
|
||||
active: false,
|
||||
update: async function (agent) {
|
||||
|
@ -342,13 +347,18 @@ class ModeController {
|
|||
}
|
||||
|
||||
unpause(mode_name) {
|
||||
modes_map[mode_name].paused = false;
|
||||
const mode = modes_map[mode_name];
|
||||
//if unpause func is defined and mode is currently paused
|
||||
if (mode.unpause && mode.paused) {
|
||||
mode.unpause();
|
||||
}
|
||||
mode.paused = false;
|
||||
}
|
||||
|
||||
unPauseAll() {
|
||||
for (let mode of modes_list) {
|
||||
if (mode.paused) console.log(`Unpausing mode ${mode.name}`);
|
||||
mode.paused = false;
|
||||
this.unpause(mode.name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
7
src/agent/settings.js
Normal file
7
src/agent/settings.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
// extremely lightweight obj that can be imported/modified by any file
|
||||
let settings = {};
|
||||
export default settings;
|
||||
export function setSettings(new_settings) {
|
||||
Object.keys(settings).forEach(key => delete settings[key]);
|
||||
Object.assign(settings, new_settings);
|
||||
}
|
|
@ -18,6 +18,7 @@ export class ConstructionTaskValidator {
|
|||
}
|
||||
let total_blocks = result.mismatches.length + result.matches.length;
|
||||
score = (result.matches.length / total_blocks) * 100;
|
||||
console.log(`Task score: ${score}%`);
|
||||
return {
|
||||
"valid": valid,
|
||||
"score": score
|
||||
|
|
|
@ -1,390 +1,358 @@
|
|||
import { getPosition } from "../library/world.js";
|
||||
|
||||
export class CookingTaskInitiator {
|
||||
constructor(data, agent) {
|
||||
this.agent = agent;
|
||||
constructor(data, bot) {
|
||||
this.bot = bot;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
async init() {
|
||||
let bot = this.agent.bot;
|
||||
let bot = this.bot;
|
||||
|
||||
//// Setting up the cooking world using minecraft cheats ////
|
||||
|
||||
// Only run the setup if the agent is the first one
|
||||
|
||||
if (this.agent.count_id === 0) {
|
||||
// Clear and prepare the base area
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~-50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~-50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~50 air`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~50 air`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~-50 air`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~-50 air`);
|
||||
// Clear and prepare the base area
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~-50 ~-3 ~-50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~-1 ~ ~50 ~-3 ~-50 grass_block`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~50 air`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~50 air`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~-50 ~10 ~-50 air`);
|
||||
await bot.chat(`/fill ~ ~ ~ ~50 ~10 ~-50 air`);
|
||||
console.log("Base area cleared and prepared.");
|
||||
|
||||
const position = getPosition(bot);
|
||||
const botX = Math.floor(position.x);
|
||||
const botZ = Math.floor(position.z);
|
||||
const position = getPosition(bot);
|
||||
const botX = Math.floor(position.x);
|
||||
const botZ = Math.floor(position.z);
|
||||
|
||||
// Region management system
|
||||
const isOverlapping = (newXMin, newXMax, newZMin, newZMax, occupiedRegions) => {
|
||||
for (const region of occupiedRegions) {
|
||||
if (newXMin < region.xMax && newXMax > region.xMin &&
|
||||
newZMin < region.zMax && newZMax > region.zMin) {
|
||||
return true;
|
||||
}
|
||||
// Region management system
|
||||
const isOverlapping = (newXMin, newXMax, newZMin, newZMax, occupiedRegions) => {
|
||||
for (const region of occupiedRegions) {
|
||||
if (newXMin < region.xMax && newXMax > region.xMin &&
|
||||
newZMin < region.zMax && newZMax > region.zMin) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
const findValidPosition = (width, depth, occupiedRegions) => {
|
||||
const maxXStart = position.x + 25 - width; // Constrain to 50x50 area
|
||||
const minXStart = position.x - 25;
|
||||
const maxZStart = position.z + 25 - depth;
|
||||
const minZStart = position.z - 25;
|
||||
const findValidPosition = (width, depth, occupiedRegions) => {
|
||||
const maxXStart = position.x + 25 - width; // Constrain to 50x50 area
|
||||
const minXStart = position.x - 25;
|
||||
const maxZStart = position.z + 25 - depth;
|
||||
const minZStart = position.z - 25;
|
||||
|
||||
let attempts = 0;
|
||||
while (attempts < 1000) {
|
||||
const xStart = Math.floor(minXStart + Math.random() * (maxXStart - minXStart + 1));
|
||||
const zStart = Math.floor(minZStart + Math.random() * (maxZStart - minZStart + 1));
|
||||
const xMin = xStart;
|
||||
const xMax = xStart + width - 1;
|
||||
const zMin = zStart;
|
||||
const zMax = zStart + depth - 1;
|
||||
let attempts = 0;
|
||||
while (attempts < 10000) {
|
||||
const xStart = Math.floor(minXStart + Math.random() * (maxXStart - minXStart + 1));
|
||||
const zStart = Math.floor(minZStart + Math.random() * (maxZStart - minZStart + 1));
|
||||
const xMin = xStart;
|
||||
const xMax = xStart + width - 1;
|
||||
const zMin = zStart;
|
||||
const zMax = zStart + depth - 1;
|
||||
|
||||
if (!isOverlapping(xMin, xMax, zMin, zMax, occupiedRegions)) {
|
||||
return { xStart, zStart };
|
||||
}
|
||||
attempts++;
|
||||
if (!isOverlapping(xMin, xMax, zMin, zMax, occupiedRegions)) {
|
||||
return { xStart, zStart };
|
||||
}
|
||||
throw new Error('Failed to find non-overlapping position after 1000 attempts');
|
||||
};
|
||||
attempts++;
|
||||
}
|
||||
throw new Error('Failed to find non-overlapping position after 1000 attempts');
|
||||
};
|
||||
|
||||
// Define all regions with their sizes
|
||||
const regionsToPlace = [
|
||||
{ type: 'wheat', width: 6, depth: 6 },
|
||||
{ type: 'beetroots', width: 4, depth: 5 },
|
||||
{ type: 'mushrooms', width: 4, depth: 5 },
|
||||
{ type: 'potatoes', width: 4, depth: 5 },
|
||||
{ type: 'carrots', width: 4, depth: 5 },
|
||||
{ type: 'sugar_cane', width: 3, depth: 3 },
|
||||
{ type: 'sugar_cane', width: 3, depth: 3 },
|
||||
{ type: 'pumpkins', width: 10, depth: 1 },
|
||||
{ type: 'house', width: 11, depth: 11 }
|
||||
// Define all regions with their sizes
|
||||
const regionsToPlace = [
|
||||
{ type: 'wheat', width: 3, depth: 3 },
|
||||
{ type: 'beetroots', width: 3, depth: 3 },
|
||||
{ type: 'mushrooms', width: 3, depth: 3 },
|
||||
{ type: 'potatoes', width: 3, depth: 3 },
|
||||
{ type: 'carrots', width: 3, depth: 3 },
|
||||
{ type: 'sugar_cane', width: 3, depth: 3 },
|
||||
{ type: 'sugar_cane', width: 3, depth: 3 },
|
||||
{ type: 'pumpkins', width: 5, depth: 1 },
|
||||
{ type: 'house', width: 11, depth: 11 }
|
||||
];
|
||||
|
||||
// Expand the regions of each type to make sure they don't overlap
|
||||
|
||||
for (let i = 0; i < regionsToPlace.length; i++) {
|
||||
const region = regionsToPlace[i];
|
||||
const { width, depth } = region;
|
||||
regionsToPlace[i].width = width + 4;
|
||||
regionsToPlace[i].depth = depth + 4;
|
||||
}
|
||||
|
||||
const occupiedRegions = [{
|
||||
xMin : botX - 1,
|
||||
xMax : botX + 1,
|
||||
zMin : botZ - 1,
|
||||
zMax : botZ + 1
|
||||
}];
|
||||
const regionPositions = {};
|
||||
|
||||
// Calculate positions for all regions
|
||||
for (const region of regionsToPlace) {
|
||||
const { xStart, zStart } = findValidPosition(region.width, region.depth, occupiedRegions);
|
||||
|
||||
occupiedRegions.push({
|
||||
xMin: xStart,
|
||||
xMax: xStart + region.width - 1,
|
||||
zMin: zStart,
|
||||
zMax: zStart + region.depth - 1
|
||||
});
|
||||
|
||||
if (region.type === 'sugar_cane') {
|
||||
if (!regionPositions.sugar_cane) regionPositions.sugar_cane = [];
|
||||
regionPositions.sugar_cane.push({ xStart, zStart });
|
||||
} else {
|
||||
regionPositions[region.type] = { xStart, zStart };
|
||||
}
|
||||
}
|
||||
|
||||
// Execute all planting
|
||||
// await plantWheat(regionPositions.wheat.xStart, regionPositions.wheat.zStart);
|
||||
await this.plantCrops(regionPositions.wheat.xStart, regionPositions.wheat.zStart, 'wheat[age=7]', true);
|
||||
await this.plantCrops(regionPositions.beetroots.xStart, regionPositions.beetroots.zStart, 'beetroots[age=3]', true);
|
||||
await this.plantMushrooms(regionPositions.mushrooms.xStart, regionPositions.mushrooms.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
await this.plantCrops(regionPositions.potatoes.xStart, regionPositions.potatoes.zStart, 'potatoes[age=7]', true);
|
||||
await this.plantCrops(regionPositions.carrots.xStart, regionPositions.carrots.zStart, 'carrots[age=7]', true);
|
||||
await this.plantCrops(regionPositions.pumpkins.xStart, regionPositions.pumpkins.zStart, 'pumpkin', false);
|
||||
await this.plantSugarCane(regionPositions.sugar_cane);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
console.log("planted crops!");
|
||||
// await plantPumpkins(regionPositions.pumpkins.xStart, regionPositions.pumpkins.zStart);
|
||||
// await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
|
||||
await this.buildHouse(regionPositions.house.xStart, regionPositions.house.zStart);
|
||||
|
||||
console.log("House built!");
|
||||
|
||||
// Add a chest with cooking items near the bot
|
||||
// const addChestWithItems = async () => {
|
||||
// // Find a valid position near the bot (within 10 blocks)
|
||||
// const findChestPosition = () => {
|
||||
// const maxAttempts = 100;
|
||||
// for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
||||
// const x = botX + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks X
|
||||
// const z = botZ + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks Z
|
||||
// const y = position.y;
|
||||
|
||||
// // Check if the position is not overlapping with existing structures
|
||||
// if (!isOverlapping(x, x, z, z, occupiedRegions)) {
|
||||
// return { x, y, z };
|
||||
// }
|
||||
// }
|
||||
// throw new Error('Failed to find valid chest position');
|
||||
// };
|
||||
|
||||
// const { x, y, z } = findChestPosition();
|
||||
|
||||
// // Place the chest
|
||||
// await bot.chat(`/setblock ${x} ${y} ${z} chest`);
|
||||
|
||||
const cookingItems = [
|
||||
['minecraft:milk_bucket', 1], // Non-stackable
|
||||
['minecraft:egg', 16], // Stacks to 16
|
||||
['minecraft:dandelion', 64], // Stacks to 64
|
||||
['minecraft:sugar', 64],
|
||||
['minecraft:cocoa_beans', 64],
|
||||
['minecraft:apple', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:salmon', 64],
|
||||
['minecraft:cod', 64],
|
||||
['minecraft:kelp', 64],
|
||||
['minecraft:dried_kelp', 64],
|
||||
['minecraft:sweet_berries', 64],
|
||||
['minecraft:honey_bottle', 1], // Non-stackable
|
||||
['minecraft:glow_berries', 64],
|
||||
['minecraft:bowl', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:cooked_salmon', 64],
|
||||
['minecraft:cooked_cod', 64],
|
||||
['minecraft:gold_ingot', 64],
|
||||
['minecraft:oak_planks', 64],
|
||||
['minecraft:iron_ingot', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
];
|
||||
|
||||
// Expand the regions of each type to make sure they don't overlap
|
||||
// // Fill the chest with random cooking items
|
||||
// for (let slot = 0; slot < cookingItems.length; slot++) { // Chest has 27 slots
|
||||
// const randomItem = cookingItems[slot];
|
||||
// await bot.chat(`/item replace block ${x} ${y} ${z} container.${slot} with ${randomItem[0]} ${randomItem[1]}`);
|
||||
// }
|
||||
|
||||
for (let i = 0; i < regionsToPlace.length; i++) {
|
||||
const region = regionsToPlace[i];
|
||||
const { width, depth } = region;
|
||||
regionsToPlace[i].width = width + 4;
|
||||
regionsToPlace[i].depth = depth + 4;
|
||||
// // Mark the chest area as occupied
|
||||
// occupiedRegions.push({
|
||||
// xMin: x,
|
||||
// xMax: x,
|
||||
// zMin: z,
|
||||
// zMax: z
|
||||
// });
|
||||
// };
|
||||
|
||||
// await addChestWithItems();
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
const animals = ['chicken', 'cow', 'llama', 'mooshroom', 'pig', 'rabbit', 'sheep'];
|
||||
|
||||
// Animal management
|
||||
await this.killEntities(["item"]);
|
||||
await this.killEntities(animals);
|
||||
await this.killEntities(["item"]);
|
||||
|
||||
console.log("killed entities!");
|
||||
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
// Summon new animals
|
||||
|
||||
await this.summonAnimals(animals, 8);
|
||||
console.log("summoned animals!");
|
||||
}
|
||||
|
||||
async plantCrops (xStart, zStart, crop_and_age, till=true) {
|
||||
const position = getPosition(this.bot);
|
||||
for (let i = 0; i < 6; i++) {
|
||||
for (let j = 0; j < 6; j++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
if (till) {
|
||||
await this.bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
|
||||
}
|
||||
await this.bot.chat(`/setblock ${x} ${position.y} ${z} ${crop_and_age}`);
|
||||
}
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
}
|
||||
|
||||
|
||||
|
||||
const occupiedRegions = [{
|
||||
xMin : botX - 1,
|
||||
xMax : botX + 1,
|
||||
zMin : botZ - 1,
|
||||
zMax : botZ + 1
|
||||
}];
|
||||
const regionPositions = {};
|
||||
|
||||
// Calculate positions for all regions
|
||||
for (const region of regionsToPlace) {
|
||||
const { xStart, zStart } = findValidPosition(region.width, region.depth, occupiedRegions);
|
||||
|
||||
occupiedRegions.push({
|
||||
xMin: xStart,
|
||||
xMax: xStart + region.width - 1,
|
||||
zMin: zStart,
|
||||
zMax: zStart + region.depth - 1
|
||||
});
|
||||
|
||||
if (region.type === 'sugar_cane') {
|
||||
if (!regionPositions.sugar_cane) regionPositions.sugar_cane = [];
|
||||
regionPositions.sugar_cane.push({ xStart, zStart });
|
||||
} else {
|
||||
regionPositions[region.type] = { xStart, zStart };
|
||||
}
|
||||
async plantSugarCane (patches) {
|
||||
const position = getPosition(this.bot);
|
||||
for (const patch of patches) {
|
||||
const xCenter = patch.xStart + 1;
|
||||
const zCenter = patch.zStart + 1;
|
||||
await this.bot.chat(`/setblock ${xCenter} ${position.y - 1} ${zCenter} water`);
|
||||
const offsets = [[1, 0], [-1, 0], [0, 1], [0, -1]];
|
||||
for (const [dx, dz] of offsets) {
|
||||
await this.bot.chat(`/setblock ${xCenter + dx} ${position.y} ${zCenter + dz} sugar_cane[age=15]`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Planting functions with dynamic positions
|
||||
const plantWheat = async (xStart, zStart) => {
|
||||
for (let i = 0; i < 6; i++) {
|
||||
for (let j = 0; j < 6; j++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} wheat[age=7]`);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
const plantBeetroots = async (xStart, zStart) => {
|
||||
for (let i = 0; i < 4; i++) {
|
||||
for (let j = 0; j < 5; j++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} beetroots[age=3]`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const plantMushrooms = async (xStart, zStart) => {
|
||||
for (let i = 0; i < 4; i++) {
|
||||
for (let j = 0; j < 5; j++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} mycelium`);
|
||||
const mushroomType = (i + j) % 2 === 0 ? 'red_mushroom' : 'brown_mushroom';
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} ${mushroomType}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const plantPotatoes = async (xStart, zStart) => {
|
||||
for (let i = 0; i < 4; i++) {
|
||||
for (let j = 0; j < 5; j++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} potatoes[age=7]`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const plantCarrots = async (xStart, zStart) => {
|
||||
for (let i = 0; i < 4; i++) {
|
||||
for (let j = 0; j < 5; j++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} farmland`);
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} carrots[age=7]`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const plantSugarCane = async (patches) => {
|
||||
for (const patch of patches) {
|
||||
const xCenter = patch.xStart + 1;
|
||||
const zCenter = patch.zStart + 1;
|
||||
await bot.chat(`/setblock ${xCenter} ${position.y - 1} ${zCenter} water`);
|
||||
const offsets = [[1, 0], [-1, 0], [0, 1], [0, -1]];
|
||||
for (const [dx, dz] of offsets) {
|
||||
await bot.chat(`/setblock ${xCenter + dx} ${position.y} ${zCenter + dz} sugar_cane[age=15]`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const plantPumpkins = async (xStart, zStart) => {
|
||||
for (let i = 0; i < 10; i++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart;
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} pumpkin`);
|
||||
}
|
||||
};
|
||||
|
||||
// Execute all planting
|
||||
await plantWheat(regionPositions.wheat.xStart, regionPositions.wheat.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
await plantBeetroots(regionPositions.beetroots.xStart, regionPositions.beetroots.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
await plantMushrooms(regionPositions.mushrooms.xStart, regionPositions.mushrooms.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
await plantPotatoes(regionPositions.potatoes.xStart, regionPositions.potatoes.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
await plantCarrots(regionPositions.carrots.xStart, regionPositions.carrots.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
await plantSugarCane(regionPositions.sugar_cane);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
await plantPumpkins(regionPositions.pumpkins.xStart, regionPositions.pumpkins.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
// House construction
|
||||
const buildHouse = async (xStart, zStart) => {
|
||||
const startX = xStart;
|
||||
const startY = position.y;
|
||||
const startZ = zStart;
|
||||
const width = 10;
|
||||
const depth = 10;
|
||||
const height = 5;
|
||||
|
||||
// Foundation and walls
|
||||
for (let x = startX; x <= startX + depth; x++) {
|
||||
for (let y = startY; y <= startY + height; y++) {
|
||||
for (let z = startZ; z <= startZ + width; z++) {
|
||||
if (y === startY) {
|
||||
if (!(x === startX + depth - 1 && z === startZ + Math.floor(width / 2))) {
|
||||
await bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (x === startX || x === startX + depth ||
|
||||
z === startZ || z === startZ + width ||
|
||||
y === startY + height) {
|
||||
|
||||
const isWindow = (
|
||||
(x === startX || x === startX + depth) &&
|
||||
(z === startZ + 3 || z === startZ + width - 3) &&
|
||||
(y === startY + 2 || y === startY + 3)
|
||||
) || (
|
||||
(z === startZ || z === startZ + width) &&
|
||||
(x === startX + 3 || x === startX + depth - 3) &&
|
||||
(y === startY + 2 || y === startY + 3)
|
||||
);
|
||||
|
||||
const isDoor = x === startX + depth &&
|
||||
z === startZ + Math.floor(width / 2) &&
|
||||
(y === startY + 1 || y === startY + 2);
|
||||
|
||||
if (!isWindow && !isDoor) {
|
||||
await bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Entrance features
|
||||
const doorZ = startZ + Math.floor(width / 2);
|
||||
await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ} stone_brick_stairs[facing=west]`);
|
||||
await bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} air`);
|
||||
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ - 1} stone_bricks`);
|
||||
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ + 1} stone_bricks`);
|
||||
// await bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} oak_door[half=lower,hinge=left,facing=west,powered=false]`);
|
||||
// await bot.chat(`/setblock ${startX + depth} ${startY + 1} ${doorZ} oak_door[half=upper,hinge=left,facing=west,powered=false]`);
|
||||
|
||||
// Roof construction
|
||||
for (let i = 0; i < 3; i++) {
|
||||
for (let x = startX + i; x <= startX + depth - i; x++) {
|
||||
for (let z = startZ + i; z <= startZ + width - i; z++) {
|
||||
if (x === startX + i || x === startX + depth - i ||
|
||||
z === startZ + i || z === startZ + width - i) {
|
||||
await bot.chat(`/setblock ${x} ${startY + height + i} ${z} cobblestone`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Interior items
|
||||
await bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 3} crafting_table`);
|
||||
await bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 5} furnace`);
|
||||
// Add fuel to the furnace
|
||||
await bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 5} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
|
||||
await bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 7} smoker`);
|
||||
// Add fuel to the smoker
|
||||
await bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 7} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
|
||||
await bot.chat(`/setblock ${startX + depth - 3} ${startY + 1} ${startZ + 2} bed`);
|
||||
};
|
||||
|
||||
await buildHouse(regionPositions.house.xStart, regionPositions.house.zStart);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
// Add a chest with cooking items near the bot
|
||||
const addChestWithItems = async () => {
|
||||
// Find a valid position near the bot (within 10 blocks)
|
||||
const findChestPosition = () => {
|
||||
const maxAttempts = 100;
|
||||
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
||||
const x = botX + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks X
|
||||
const z = botZ + Math.floor(Math.random() * 10 - 5); // Within ±5 blocks Z
|
||||
const y = position.y;
|
||||
|
||||
// Check if the position is not overlapping with existing structures
|
||||
if (!isOverlapping(x, x, z, z, occupiedRegions)) {
|
||||
return { x, y, z };
|
||||
}
|
||||
}
|
||||
throw new Error('Failed to find valid chest position');
|
||||
};
|
||||
|
||||
const { x, y, z } = findChestPosition();
|
||||
|
||||
// Place the chest
|
||||
await bot.chat(`/setblock ${x} ${y} ${z} chest`);
|
||||
|
||||
const cookingItems = [
|
||||
['minecraft:milk_bucket', 1], // Non-stackable
|
||||
['minecraft:egg', 16], // Stacks to 16
|
||||
['minecraft:dandelion', 64], // Stacks to 64
|
||||
['minecraft:sugar', 64],
|
||||
['minecraft:cocoa_beans', 64],
|
||||
['minecraft:apple', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:salmon', 64],
|
||||
['minecraft:cod', 64],
|
||||
['minecraft:kelp', 64],
|
||||
['minecraft:dried_kelp', 64],
|
||||
['minecraft:sweet_berries', 64],
|
||||
['minecraft:honey_bottle', 1], // Non-stackable
|
||||
['minecraft:glow_berries', 64],
|
||||
['minecraft:bowl', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:cooked_salmon', 64],
|
||||
['minecraft:cooked_cod', 64],
|
||||
['minecraft:gold_ingot', 64],
|
||||
['minecraft:oak_planks', 64],
|
||||
['minecraft:iron_ingot', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
];
|
||||
|
||||
// Fill the chest with random cooking items
|
||||
for (let slot = 0; slot < cookingItems.length; slot++) { // Chest has 27 slots
|
||||
const randomItem = cookingItems[slot];
|
||||
await bot.chat(`/item replace block ${x} ${y} ${z} container.${slot} with ${randomItem[0]} ${randomItem[1]}`);
|
||||
}
|
||||
|
||||
// Mark the chest area as occupied
|
||||
occupiedRegions.push({
|
||||
xMin: x,
|
||||
xMax: x,
|
||||
zMin: z,
|
||||
zMax: z
|
||||
});
|
||||
};
|
||||
|
||||
await addChestWithItems();
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
// Animal management
|
||||
await bot.chat('/kill @e[type=item,distance=..200]');
|
||||
await bot.chat('/kill @e[type=chicken,distance=..200]');
|
||||
await bot.chat('/kill @e[type=cow,distance=..200]');
|
||||
await bot.chat('/kill @e[type=llama,distance=..200]');
|
||||
await bot.chat('/kill @e[type=mooshroom,distance=..200]');
|
||||
await bot.chat('/kill @e[type=pig,distance=..200]');
|
||||
await bot.chat('/kill @e[type=rabbit,distance=..200]');
|
||||
await bot.chat('/kill @e[type=sheep,distance=..200]');
|
||||
|
||||
await bot.chat(`/kill @e[type=item,distance=..200]`);
|
||||
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
// Summon new animals
|
||||
const summonAnimals = async () => {
|
||||
const animals = ['chicken', 'cow', 'llama', 'mooshroom', 'pig', 'rabbit', 'sheep'];
|
||||
for (const animal of animals) {
|
||||
for (let i = 0; i < 8; i++) {
|
||||
const x = position.x - 25 + Math.random() * 50;
|
||||
const z = position.z - 25 + Math.random() * 50;
|
||||
await bot.chat(`/summon ${animal} ${Math.floor(x)} ${position.y} ${Math.floor(z)}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
await summonAnimals();
|
||||
async plantMushrooms(xStart, zStart) {
|
||||
const position = getPosition(this.bot);
|
||||
for (let i = 0; i < 4; i++) {
|
||||
for (let j = 0; j < 5; j++) {
|
||||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
await this.bot.chat(`/setblock ${x} ${position.y - 1} ${z} mycelium`);
|
||||
const mushroomType = (i + j) % 2 === 0 ? 'red_mushroom' : 'brown_mushroom';
|
||||
await this.bot.chat(`/setblock ${x} ${position.y} ${z} ${mushroomType}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async summonAnimals (animals, amount) {
|
||||
const position = getPosition(this.bot);
|
||||
for (const animal of animals) {
|
||||
for (let i = 0; i < amount; i++) {
|
||||
const x = position.x - 25 + Math.random() * 50;
|
||||
const z = position.z - 25 + Math.random() * 50;
|
||||
await this.bot.chat(`/summon ${animal} ${Math.floor(x)} ${position.y} ${Math.floor(z)}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async killEntities(entities) {
|
||||
for (const entity of entities) {
|
||||
await this.bot.chat(`/kill @e[type=${entity},distance=..200]`);
|
||||
}
|
||||
}
|
||||
|
||||
async buildHouse (xStart, zStart) {
|
||||
const position = getPosition(this.bot);
|
||||
const startX = xStart;
|
||||
const startY = position.y;
|
||||
const startZ = zStart;
|
||||
const width = 10;
|
||||
const depth = 10;
|
||||
const height = 5;
|
||||
|
||||
// Foundation and walls
|
||||
for (let x = startX; x <= startX + depth; x++) {
|
||||
for (let y = startY; y <= startY + height; y++) {
|
||||
for (let z = startZ; z <= startZ + width; z++) {
|
||||
if (y === startY) {
|
||||
if (!(x === startX + depth - 1 && z === startZ + Math.floor(width / 2))) {
|
||||
await this.bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (x === startX || x === startX + depth ||
|
||||
z === startZ || z === startZ + width ||
|
||||
y === startY + height) {
|
||||
|
||||
const isWindow = (
|
||||
(x === startX || x === startX + depth) &&
|
||||
(z === startZ + 3 || z === startZ + width - 3) &&
|
||||
(y === startY + 2 || y === startY + 3)
|
||||
) || (
|
||||
(z === startZ || z === startZ + width) &&
|
||||
(x === startX + 3 || x === startX + depth - 3) &&
|
||||
(y === startY + 2 || y === startY + 3)
|
||||
);
|
||||
|
||||
const isDoor = x === startX + depth &&
|
||||
z === startZ + Math.floor(width / 2) &&
|
||||
(y === startY + 1 || y === startY + 2);
|
||||
|
||||
if (!isWindow && !isDoor) {
|
||||
await this.bot.chat(`/setblock ${x} ${y} ${z} stone_bricks`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Entrance features
|
||||
const doorZ = startZ + Math.floor(width / 2);
|
||||
await this.bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ} stone_brick_stairs[facing=west]`);
|
||||
await this.bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} air`);
|
||||
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ - 1} stone_bricks`);
|
||||
// await bot.chat(`/setblock ${startX + depth - 1} ${startY} ${doorZ + 1} stone_bricks`);
|
||||
// await bot.chat(`/setblock ${startX + depth} ${startY} ${doorZ} oak_door[half=lower,hinge=left,facing=west,powered=false]`);
|
||||
// await bot.chat(`/setblock ${startX + depth} ${startY + 1} ${doorZ} oak_door[half=upper,hinge=left,facing=west,powered=false]`);
|
||||
|
||||
// Roof construction
|
||||
for (let i = 0; i < 3; i++) {
|
||||
for (let x = startX + i; x <= startX + depth - i; x++) {
|
||||
for (let z = startZ + i; z <= startZ + width - i; z++) {
|
||||
if (x === startX + i || x === startX + depth - i ||
|
||||
z === startZ + i || z === startZ + width - i) {
|
||||
await this.bot.chat(`/setblock ${x} ${startY + height + i} ${z} cobblestone`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Interior items
|
||||
await this.bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 3} crafting_table`);
|
||||
await this.bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 5} furnace`);
|
||||
// Add fuel to the furnace
|
||||
await this.bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 5} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
|
||||
await this.bot.chat(`/setblock ${startX + 4} ${startY + 1} ${startZ + 7} smoker`);
|
||||
// Add fuel to the smoker
|
||||
await this.bot.chat(`/data merge block ${startX + 4} ${startY + 1} ${startZ + 7} {Items:[{Slot:1b,id:"minecraft:coal",Count:64b}]}`)
|
||||
await this.bot.chat(`/setblock ${startX + depth - 3} ${startY + 1} ${startZ + 2} bed`);
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
import { readFileSync , writeFileSync, existsSync} from 'fs';
|
||||
import { executeCommand } from '../commands/index.js';
|
||||
import { getPosition } from '../library/world.js';
|
||||
import settings from '../../../settings.js';
|
||||
import { ConstructionTaskValidator, Blueprint } from './construction_tasks.js';
|
||||
import { CookingTaskInitiator } from './cooking_tasks.js';
|
||||
|
||||
|
@ -233,27 +232,26 @@ class CookingCraftingTaskValidator {
|
|||
}
|
||||
|
||||
export class Task {
|
||||
constructor(agent, task_path, task_id, taskStartTime = null) {
|
||||
constructor(agent, task_data, taskStartTime = null) {
|
||||
this.agent = agent;
|
||||
this.data = null;
|
||||
if (taskStartTime !== null)
|
||||
this.taskStartTime = taskStartTime;
|
||||
else
|
||||
this.taskStartTime = Date.now();
|
||||
|
||||
this.validator = null;
|
||||
this.reset_function = null;
|
||||
this.blocked_actions = [];
|
||||
this.task_id = task_id;
|
||||
|
||||
if (task_path && task_id) {
|
||||
console.log('Starting task', task_id);
|
||||
if (task_id.endsWith('hells_kitchen')) {
|
||||
this.task_data = task_data;
|
||||
if (task_data) {
|
||||
console.log('Starting task', task_data.task_id);
|
||||
console.log("Task start time set to", this.taskStartTime);
|
||||
if (task_data.task_id.endsWith('hells_kitchen')) {
|
||||
// Reset hells_kitchen progress when a new task starts
|
||||
hellsKitchenProgressManager.resetTask(task_id);
|
||||
hellsKitchenProgressManager.resetTask(task_data.task_id);
|
||||
console.log('Reset Hells Kitchen progress for new task');
|
||||
}
|
||||
this.data = this.loadTask(task_path, task_id);
|
||||
this.data = task_data;
|
||||
this.task_type = this.data.type;
|
||||
if (this.task_type === 'construction' && this.data.blueprint) {
|
||||
this.blueprint = new Blueprint(this.data.blueprint);
|
||||
|
@ -264,9 +262,17 @@ export class Task {
|
|||
this.conversation = this.data.conversation;
|
||||
}
|
||||
this.taskTimeout = this.data.timeout || 300;
|
||||
this.taskStartTime = Date.now();
|
||||
// Set validator based on task_type
|
||||
|
||||
// do goal initialization here
|
||||
|
||||
// let agentGoal = this.getAgentGoal();
|
||||
// if (agentGoal) {
|
||||
// agentGoal += "You have to collaborate with other agents/bots, namely " + this.available_agents.filter(n => n !== this.name).join(', ') + " to complete the task as soon as possible by dividing the work among yourselves.";
|
||||
// console.log(`Setting goal for agent ${this.agent.count_id}: ${agentGoal}`);
|
||||
// await executeCommand(this.agent, `!goal("${agentGoal}")`);
|
||||
// }
|
||||
|
||||
if (this.task_type === 'construction') {
|
||||
this.validator = new ConstructionTaskValidator(this.data, this.agent);
|
||||
} else if (this.task_type === 'cooking' || this.task_type === 'techtree') {
|
||||
|
@ -292,7 +298,11 @@ export class Task {
|
|||
}
|
||||
|
||||
this.name = this.agent.name;
|
||||
this.available_agents = settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name);
|
||||
this.available_agents = []
|
||||
}
|
||||
|
||||
updateAvailableAgents(agents) {
|
||||
this.available_agents = agents
|
||||
}
|
||||
|
||||
// Add this method if you want to manually reset the hells_kitchen progress
|
||||
|
@ -312,23 +322,24 @@ export class Task {
|
|||
|
||||
if (this.task_type === 'cooking') {
|
||||
|
||||
if (this.data.agent_count > 2) {
|
||||
|
||||
if (this.name.toLowerCase().startsWith('andy')) {
|
||||
add_string = '\nIn the end, all the food items should be given to you by other bots. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
|
||||
}
|
||||
else {
|
||||
add_string = '\nIn the end, all the food items should be given to one single bot whose name starts with andy or Andy. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
|
||||
}
|
||||
if (this.data.agent_count > 2) {
|
||||
|
||||
if (this.name.toLowerCase().startsWith('andy')) {
|
||||
add_string = '\nIn the end, all the food items should be given to you by other bots. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
|
||||
}
|
||||
else {
|
||||
if (this.data.task_id && this.data.task_id.endsWith('hells_kitchen')) {
|
||||
add_string = '';
|
||||
}
|
||||
else {
|
||||
add_string = '\nIn the end, all the food items should be given to one single bot.';
|
||||
}
|
||||
add_string = '\nIn the end, all the food items should be given to one single bot whose name starts with andy or Andy. Make sure to talk to all the agents using startConversation command to coordinate the task instead of talking to just one agent. You can even end current conversation with any agent using endConversation command and then talk to a new agent using startConversation command.';
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this.data.task_id && this.data.task_id.endsWith('hells_kitchen')) {
|
||||
add_string = '';
|
||||
}
|
||||
else {
|
||||
add_string = '\nIn the end, all the food items should be given to one single bot.';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.task_type === 'techtree') {
|
||||
|
@ -351,28 +362,6 @@ export class Task {
|
|||
return null;
|
||||
}
|
||||
|
||||
loadTask(task_path, task_id) {
|
||||
try {
|
||||
const tasksFile = readFileSync(task_path, 'utf8');
|
||||
const tasks = JSON.parse(tasksFile);
|
||||
let task = tasks[task_id];
|
||||
task['task_id'] = task_id;
|
||||
console.log(task);
|
||||
console.log(this.agent.count_id);
|
||||
if (!task) {
|
||||
throw new Error(`Task ${task_id} not found`);
|
||||
}
|
||||
// if ((!task.agent_count || task.agent_count <= 1) && this.agent.count_id > 0) {
|
||||
// task = null;
|
||||
// }
|
||||
|
||||
return task;
|
||||
} catch (error) {
|
||||
console.error('Error loading task:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
isDone() {
|
||||
let res = null;
|
||||
if (this.validator)
|
||||
|
@ -382,6 +371,7 @@ export class Task {
|
|||
for (let agent of this.available_agents) {
|
||||
this.agent.bot.chat(`/clear ${agent}`);
|
||||
}
|
||||
// this.agent.bot.chat(`/clear @a`);
|
||||
return {"message": 'Task successful', "score": res.score};
|
||||
}
|
||||
let other_names = this.available_agents.filter(n => n !== this.name);
|
||||
|
@ -406,6 +396,15 @@ export class Task {
|
|||
return false;
|
||||
}
|
||||
|
||||
async setAgentGoal() {
|
||||
let agentGoal = this.getAgentGoal();
|
||||
if (agentGoal && this.data.agent_count + this.data.human_count > 1) {
|
||||
agentGoal += "You have to collaborate with other agents/bots, namely " + this.available_agents.filter(n => n !== this.name).join(', ') + " to complete the task as soon as possible by dividing the work among yourselves.";
|
||||
console.log(`Setting goal for agent ${this.agent.count_id}: ${agentGoal}`);
|
||||
}
|
||||
await executeCommand(this.agent, `!goal("${agentGoal}")`);
|
||||
}
|
||||
|
||||
async initBotTask() {
|
||||
await this.agent.bot.chat(`/clear ${this.name}`);
|
||||
console.log(`Cleared ${this.name}'s inventory.`);
|
||||
|
@ -417,7 +416,7 @@ export class Task {
|
|||
return;
|
||||
|
||||
if (this.task_type === 'cooking') {
|
||||
this.initiator = new CookingTaskInitiator(this.data, this.agent);
|
||||
this.initiator = new CookingTaskInitiator(this.data, this.agent.bot);
|
||||
} else {
|
||||
this.initiator = null;
|
||||
}
|
||||
|
@ -425,17 +424,43 @@ export class Task {
|
|||
//wait for a bit so bots are teleported
|
||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||
|
||||
if (this.agent.count_id === 0 && this.data.human_count > 0) {
|
||||
console.log('Clearing human player inventories');
|
||||
for (let i = 0; i < this.data.human_count; i++) {
|
||||
const username = this.data.usernames[i];
|
||||
await this.agent.bot.chat(`/clear ${username}`);
|
||||
}
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
}
|
||||
|
||||
if (this.data.initial_inventory) {
|
||||
console.log("Setting inventory...");
|
||||
let initialInventory = {};
|
||||
|
||||
// Handle multi-agent inventory assignment
|
||||
if (this.data.agent_count > 1) {
|
||||
initialInventory = this.data.initial_inventory[this.agent.count_id.toString()] || {};
|
||||
console.log("Initial inventory for agent", this.agent.count_id, ":", initialInventory);
|
||||
} else {
|
||||
initialInventory = this.data.initial_inventory;
|
||||
console.log("Initial inventory:", initialInventory);
|
||||
initialInventory = this.data.initial_inventory[this.agent.count_id.toString()] || {};
|
||||
console.log("Initial inventory for agent", this.agent.count_id, ":", initialInventory);
|
||||
console.log("")
|
||||
|
||||
if (this.data.human_count > 0 && this.agent.count_id === 0) {
|
||||
// this.num_humans = num_keys - this.data.num_agents;
|
||||
if (this.data.human_count !== this.data.usernames.length) {
|
||||
console.log(`Number of human players ${this.human_count} does not match the number of usernames provided. ${this.data.usernames.length}`);
|
||||
throw new Error(`Number of human players ${this.human_count} does not match the number of usernames provided. ${this.data.usernames.length}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const starting_idx = this.data.agent_count;
|
||||
for (let i = 0; i < this.data.human_count; i++) {
|
||||
const username = this.data.usernames[i];
|
||||
const inventory = this.data.initial_inventory[starting_idx + i];
|
||||
console.log(Object.keys(inventory));
|
||||
for (let key of Object.keys(inventory)) {
|
||||
const itemName = key.toLowerCase();
|
||||
const quantity = inventory[key];
|
||||
console.log(`Give ${username} ${quantity} ${itemName}`);
|
||||
await this.agent.bot.chat(`/give ${username} ${itemName} ${quantity}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(this.data.initial_inventory);
|
||||
|
||||
|
@ -451,7 +476,7 @@ export class Task {
|
|||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
}
|
||||
|
||||
if (this.initiator) {
|
||||
if (this.initiator && this.agent.count_id === 0) {
|
||||
await this.initiator.init();
|
||||
}
|
||||
|
||||
|
@ -465,7 +490,7 @@ export class Task {
|
|||
this.agent.killAll();
|
||||
}
|
||||
}
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
if (this.data.conversation && this.agent.count_id === 0) {
|
||||
let other_name = this.available_agents.filter(n => n !== this.name)[0];
|
||||
let waitCount = 0;
|
||||
|
@ -474,19 +499,13 @@ export class Task {
|
|||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
waitCount++;
|
||||
}
|
||||
if (other_name === undefined) {
|
||||
if (other_name === undefined && this.data.agent_count > 1) {
|
||||
console.log('No other agents found. Task unsuccessful.');
|
||||
this.agent.killAll();
|
||||
}
|
||||
await executeCommand(this.agent, `!startConversation("${other_name}", "${this.data.conversation}")`);
|
||||
}
|
||||
|
||||
let agentGoal = this.getAgentGoal();
|
||||
if (agentGoal) {
|
||||
agentGoal += "You have to collaborate with other agents/bots, namely " + this.available_agents.filter(n => n !== this.name).join(', ') + " to complete the task as soon as possible by dividing the work among yourselves.";
|
||||
console.log(`Setting goal for agent ${this.agent.count_id}: ${agentGoal}`);
|
||||
await executeCommand(this.agent, `!goal("${agentGoal}")`);
|
||||
}
|
||||
await this.setAgentGoal();
|
||||
}
|
||||
|
||||
async teleportBots() {
|
||||
|
@ -508,7 +527,8 @@ export class Task {
|
|||
}
|
||||
}
|
||||
|
||||
if (human_player_name) {
|
||||
// go the human if there is one and not required for the task
|
||||
if (human_player_name && this.data.human_count === 0) {
|
||||
console.log(`Teleporting ${this.name} to human ${human_player_name}`)
|
||||
bot.chat(`/tp ${this.name} ${human_player_name}`)
|
||||
}
|
||||
|
@ -554,7 +574,14 @@ export class Task {
|
|||
const commands = result.commands;
|
||||
const nearbyPosition = result.nearbyPosition;
|
||||
console.log("nearby position", nearbyPosition);
|
||||
bot.chat(`/tp @a ${nearbyPosition.x} ${nearbyPosition.y} ${nearbyPosition.z}`);
|
||||
const first_coord = this.data.blueprint.levels[0].coordinates;
|
||||
bot.chat(`/tp @a ${first_coord[0]} ${first_coord[1]} ${first_coord[2]}`);
|
||||
if (this.agent.agent_id === 0 && this.data.human_count > 0) {
|
||||
for (let i = 0; i < this.data.human_count; i++) {
|
||||
const username = this.data.usernames[i];
|
||||
await bot.chat(`/tp ${username} ${nearbyPosition.x} ${nearbyPosition.y} ${nearbyPosition.z}`);
|
||||
}
|
||||
}
|
||||
for (const command of commands) {
|
||||
bot.chat(command);
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import settings from '../../../settings.js';
|
||||
import settings from '../settings.js';
|
||||
import prismarineViewer from 'prismarine-viewer';
|
||||
const mineflayerViewer = prismarineViewer.mineflayer;
|
||||
|
||||
export function addBrowserViewer(bot, count_id) {
|
||||
if (settings.show_bot_views)
|
||||
if (settings.render_bot_view)
|
||||
mineflayerViewer(bot, { port: 3000+count_id, firstPerson: true, });
|
||||
}
|
27
src/mindcraft-py/example.py
Normal file
27
src/mindcraft-py/example.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
import mindcraft
|
||||
import json
|
||||
import os
|
||||
|
||||
# Initialize Mindcraft, starting the Node.js server
|
||||
# This will also connect to the MindServer via websockets
|
||||
mindcraft.init()
|
||||
|
||||
# Get the directory of the current script
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
profile_path = os.path.abspath(os.path.join(script_dir, '..', '..', 'andy.json'))
|
||||
|
||||
# Load agent settings from a JSON file
|
||||
try:
|
||||
with open(profile_path, 'r') as f:
|
||||
profile_data = json.load(f)
|
||||
|
||||
settings = {"profile": profile_data}
|
||||
mindcraft.create_agent(settings)
|
||||
|
||||
settings_copy = settings.copy()
|
||||
settings_copy['profile']['name'] = 'andy2'
|
||||
mindcraft.create_agent(settings_copy)
|
||||
except FileNotFoundError:
|
||||
print(f"Error: Could not find andy.json at {profile_path}")
|
||||
|
||||
mindcraft.wait()
|
24
src/mindcraft-py/init-mindcraft.js
Normal file
24
src/mindcraft-py/init-mindcraft.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
import * as Mindcraft from '../mindcraft/mindcraft.js';
|
||||
import settings from '../../settings.js';
|
||||
import yargs from 'yargs';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
|
||||
function parseArguments() {
|
||||
return yargs(hideBin(process.argv))
|
||||
.option('mindserver_port', {
|
||||
type: 'number',
|
||||
describe: 'Mindserver port',
|
||||
default: settings.mindserver_port
|
||||
})
|
||||
.help()
|
||||
.alias('help', 'h')
|
||||
.parse();
|
||||
}
|
||||
|
||||
const args = parseArguments();
|
||||
|
||||
settings.mindserver_port = args.mindserver_port;
|
||||
|
||||
Mindcraft.init(settings.mindserver_port);
|
||||
|
||||
console.log(`Mindcraft initialized with MindServer at localhost:${settings.mindserver_port}`);
|
99
src/mindcraft-py/mindcraft.py
Normal file
99
src/mindcraft-py/mindcraft.py
Normal file
|
@ -0,0 +1,99 @@
|
|||
import subprocess
|
||||
import socketio
|
||||
import time
|
||||
import json
|
||||
import os
|
||||
import atexit
|
||||
import threading
|
||||
import sys
|
||||
import signal
|
||||
|
||||
class Mindcraft:
|
||||
def __init__(self):
|
||||
self.sio = socketio.Client()
|
||||
self.process = None
|
||||
self.connected = False
|
||||
self.log_thread = None
|
||||
|
||||
def _log_reader(self):
|
||||
for line in iter(self.process.stdout.readline, ''):
|
||||
sys.stdout.write(f'[Node.js] {line}')
|
||||
sys.stdout.flush()
|
||||
|
||||
def init(self, port=8080):
|
||||
if self.process:
|
||||
return
|
||||
|
||||
self.port = port
|
||||
|
||||
node_script_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'init-mindcraft.js'))
|
||||
|
||||
self.process = subprocess.Popen([
|
||||
'node',
|
||||
node_script_path,
|
||||
'--mindserver_port', str(self.port)
|
||||
], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1)
|
||||
|
||||
self.log_thread = threading.Thread(target=self._log_reader)
|
||||
self.log_thread.daemon = True
|
||||
self.log_thread.start()
|
||||
|
||||
atexit.register(self.shutdown)
|
||||
time.sleep(2) # Give server time to start before connecting
|
||||
|
||||
try:
|
||||
self.sio.connect(f'http://localhost:{self.port}')
|
||||
self.connected = True
|
||||
print("Connected to MindServer. Mindcraft is initialized.")
|
||||
except socketio.exceptions.ConnectionError as e:
|
||||
print(f"Failed to connect to MindServer: {e}")
|
||||
self.shutdown()
|
||||
raise
|
||||
|
||||
def create_agent(self, settings_json):
|
||||
if not self.connected:
|
||||
raise Exception("Not connected to MindServer. Call init() first.")
|
||||
|
||||
profile_data = settings_json.get('profile', {})
|
||||
|
||||
def callback(response):
|
||||
if response.get('success'):
|
||||
print(f"Agent '{profile_data.get('name')}' created successfully")
|
||||
else:
|
||||
print(f"Error creating agent: {response.get('error', 'Unknown error')}")
|
||||
|
||||
self.sio.emit('create-agent', settings_json, callback=callback)
|
||||
|
||||
def shutdown(self):
|
||||
if self.sio.connected:
|
||||
self.sio.disconnect()
|
||||
self.connected = False
|
||||
if self.process:
|
||||
self.process.terminate()
|
||||
self.process.wait()
|
||||
self.process = None
|
||||
print("Mindcraft shut down.")
|
||||
|
||||
def wait(self):
|
||||
"""Block the main thread until Ctrl+C is pressed so the server stays up,"""
|
||||
print("Server is running. Press Ctrl+C to exit.")
|
||||
try:
|
||||
while True:
|
||||
time.sleep(1)
|
||||
except KeyboardInterrupt:
|
||||
print("\nCtrl+C detected. Exiting...")
|
||||
self.shutdown()
|
||||
|
||||
mindcraft_instance = Mindcraft()
|
||||
|
||||
def init(port=8080):
|
||||
mindcraft_instance.init(port)
|
||||
|
||||
def create_agent(settings_json):
|
||||
mindcraft_instance.create_agent(settings_json)
|
||||
|
||||
def shutdown():
|
||||
mindcraft_instance.shutdown()
|
||||
|
||||
def wait():
|
||||
mindcraft_instance.wait()
|
64
src/mindcraft/mindcraft.js
Normal file
64
src/mindcraft/mindcraft.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
import { createMindServer, registerAgent } from './mindserver.js';
|
||||
import { AgentProcess } from '../process/agent_process.js';
|
||||
|
||||
let mindserver;
|
||||
let connected = false;
|
||||
let agent_processes = {};
|
||||
let agent_count = 0;
|
||||
let host = 'localhost';
|
||||
let port = 8080;
|
||||
|
||||
export async function init(host_public=false, port=8080) {
|
||||
if (connected) {
|
||||
console.error('Already initiliazed!');
|
||||
return;
|
||||
}
|
||||
mindserver = createMindServer(host_public, port);
|
||||
port = port;
|
||||
connected = true;
|
||||
}
|
||||
|
||||
export async function createAgent(settings) {
|
||||
if (!settings.profile.name) {
|
||||
console.error('Agent name is required in profile');
|
||||
return;
|
||||
}
|
||||
settings = JSON.parse(JSON.stringify(settings));
|
||||
let agent_name = settings.profile.name;
|
||||
registerAgent(settings);
|
||||
let load_memory = settings.load_memory || false;
|
||||
let init_message = settings.init_message || null;
|
||||
const agentProcess = new AgentProcess(agent_name, port);
|
||||
agentProcess.start(load_memory, init_message, agent_count);
|
||||
agent_count++;
|
||||
agent_processes[settings.profile.name] = agentProcess;
|
||||
}
|
||||
|
||||
export function getAgentProcess(agentName) {
|
||||
return agent_processes[agentName];
|
||||
}
|
||||
|
||||
export function startAgent(agentName) {
|
||||
if (agent_processes[agentName]) {
|
||||
agent_processes[agentName].continue();
|
||||
}
|
||||
else {
|
||||
console.error(`Cannot start agent ${agentName}; not found`);
|
||||
}
|
||||
}
|
||||
|
||||
export function stopAgent(agentName) {
|
||||
if (agent_processes[agentName]) {
|
||||
agent_processes[agentName].stop();
|
||||
}
|
||||
}
|
||||
|
||||
export function shutdown() {
|
||||
console.log('Shutting down');
|
||||
for (let agentName in agent_processes) {
|
||||
agent_processes[agentName].stop();
|
||||
}
|
||||
setTimeout(() => {
|
||||
process.exit(0);
|
||||
}, 2000);
|
||||
}
|
196
src/mindcraft/mindserver.js
Normal file
196
src/mindcraft/mindserver.js
Normal file
|
@ -0,0 +1,196 @@
|
|||
import { Server } from 'socket.io';
|
||||
import express from 'express';
|
||||
import http from 'http';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import * as mindcraft from './mindcraft.js';
|
||||
import { readFileSync } from 'fs';
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
// Mindserver is:
|
||||
// - central hub for communication between all agent processes
|
||||
// - api to control from other languages and remote users
|
||||
// - host for webapp
|
||||
|
||||
let io;
|
||||
let server;
|
||||
const agent_connections = {};
|
||||
|
||||
const settings_spec = JSON.parse(readFileSync(path.join(__dirname, 'public/settings_spec.json'), 'utf8'));
|
||||
|
||||
class AgentConnection {
|
||||
constructor(settings) {
|
||||
this.socket = null;
|
||||
this.settings = settings;
|
||||
this.in_game = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export function registerAgent(settings) {
|
||||
let agentConnection = new AgentConnection(settings);
|
||||
agent_connections[settings.profile.name] = agentConnection;
|
||||
}
|
||||
|
||||
export function logoutAgent(agentName) {
|
||||
if (agent_connections[agentName]) {
|
||||
agent_connections[agentName].in_game = false;
|
||||
agentsUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize the server
|
||||
export function createMindServer(host_public = false, port = 8080) {
|
||||
const app = express();
|
||||
server = http.createServer(app);
|
||||
io = new Server(server);
|
||||
|
||||
// Serve static files
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
// Socket.io connection handling
|
||||
io.on('connection', (socket) => {
|
||||
let curAgentName = null;
|
||||
console.log('Client connected');
|
||||
|
||||
agentsUpdate(socket);
|
||||
|
||||
socket.on('create-agent', (settings, callback) => {
|
||||
console.log('API create agent...');
|
||||
for (let key in settings_spec) {
|
||||
if (!(key in settings)) {
|
||||
if (settings_spec[key].required) {
|
||||
callback({ success: false, error: `Setting ${key} is required` });
|
||||
return;
|
||||
}
|
||||
else {
|
||||
settings[key] = settings_spec[key].default;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (let key in settings) {
|
||||
if (!(key in settings_spec)) {
|
||||
delete settings[key];
|
||||
}
|
||||
}
|
||||
if (settings.profile?.name) {
|
||||
if (settings.profile.name in agent_connections) {
|
||||
callback({ success: false, error: 'Agent already exists' });
|
||||
return;
|
||||
}
|
||||
mindcraft.createAgent(settings);
|
||||
callback({ success: true });
|
||||
}
|
||||
else {
|
||||
console.error('Agent name is required in profile');
|
||||
callback({ success: false, error: 'Agent name is required in profile' });
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('get-settings', (agentName, callback) => {
|
||||
if (agent_connections[agentName]) {
|
||||
callback({ settings: agent_connections[agentName].settings });
|
||||
} else {
|
||||
callback({ error: `Agent '${agentName}' not found.` });
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('login-agent', (agentName) => {
|
||||
if (agent_connections[agentName]) {
|
||||
agent_connections[agentName].socket = socket;
|
||||
agent_connections[agentName].in_game = true;
|
||||
curAgentName = agentName;
|
||||
agentsUpdate();
|
||||
}
|
||||
else {
|
||||
console.warn(`Unregistered agent ${agentName} tried to login`);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
if (agent_connections[curAgentName]) {
|
||||
console.log(`Agent ${curAgentName} disconnected`);
|
||||
agent_connections[curAgentName].in_game = false;
|
||||
agentsUpdate();
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('chat-message', (agentName, json) => {
|
||||
if (!agent_connections[agentName]) {
|
||||
console.warn(`Agent ${agentName} tried to send a message but is not logged in`);
|
||||
return;
|
||||
}
|
||||
console.log(`${curAgentName} sending message to ${agentName}: ${json.message}`);
|
||||
agent_connections[agentName].socket.emit('chat-message', curAgentName, json);
|
||||
});
|
||||
|
||||
socket.on('restart-agent', (agentName) => {
|
||||
console.log(`Restarting agent: ${agentName}`);
|
||||
agent_connections[agentName].socket.emit('restart-agent');
|
||||
});
|
||||
|
||||
socket.on('stop-agent', (agentName) => {
|
||||
mindcraft.stopAgent(agentName);
|
||||
});
|
||||
|
||||
socket.on('start-agent', (agentName) => {
|
||||
mindcraft.startAgent(agentName);
|
||||
});
|
||||
|
||||
socket.on('stop-all-agents', () => {
|
||||
console.log('Killing all agents');
|
||||
for (let agentName in agent_connections) {
|
||||
mindcraft.stopAgent(agentName);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('shutdown', () => {
|
||||
console.log('Shutting down');
|
||||
for (let agentName in agent_connections) {
|
||||
mindcraft.stopAgent(agentName);
|
||||
}
|
||||
// wait 2 seconds
|
||||
setTimeout(() => {
|
||||
console.log('Exiting MindServer');
|
||||
process.exit(0);
|
||||
}, 2000);
|
||||
|
||||
});
|
||||
|
||||
socket.on('send-message', (agentName, message) => {
|
||||
if (!agent_connections[agentName]) {
|
||||
console.warn(`Agent ${agentName} not in game, cannot send message via MindServer.`);
|
||||
return
|
||||
}
|
||||
try {
|
||||
console.log(`Sending message to agent ${agentName}: ${message}`);
|
||||
agent_connections[agentName].socket.emit('send-message', agentName, message)
|
||||
} catch (error) {
|
||||
console.error('Error: ', error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
let host = host_public ? '0.0.0.0' : 'localhost';
|
||||
server.listen(port, host, () => {
|
||||
console.log(`MindServer running on port ${port}`);
|
||||
});
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
function agentsUpdate(socket) {
|
||||
if (!socket) {
|
||||
socket = io;
|
||||
}
|
||||
let agents = [];
|
||||
for (let agentName in agent_connections) {
|
||||
agents.push({name: agentName, in_game: agent_connections[agentName].in_game});
|
||||
};
|
||||
socket.emit('agents-update', agents);
|
||||
}
|
||||
|
||||
// Optional: export these if you need access to them from other files
|
||||
export const getIO = () => io;
|
||||
export const getServer = () => server;
|
286
src/mindcraft/public/index.html
Normal file
286
src/mindcraft/public/index.html
Normal file
|
@ -0,0 +1,286 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Mindcraft</title>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 20px;
|
||||
background: #1a1a1a;
|
||||
color: #e0e0e0;
|
||||
}
|
||||
#agents {
|
||||
background: #2d2d2d;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
|
||||
}
|
||||
h1 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.agent {
|
||||
margin: 10px 0;
|
||||
padding: 10px;
|
||||
background: #363636;
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.restart-btn, .start-btn, .stop-btn {
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 5px 10px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.restart-btn {
|
||||
background: #4CAF50;
|
||||
}
|
||||
.start-btn {
|
||||
background: #2196F3;
|
||||
}
|
||||
.stop-btn {
|
||||
background: #f44336;
|
||||
}
|
||||
.restart-btn:hover { background: #45a049; }
|
||||
.start-btn:hover { background: #1976D2; }
|
||||
.stop-btn:hover { background: #d32f2f; }
|
||||
.status-icon {
|
||||
font-size: 12px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
.status-icon.online {
|
||||
color: #4CAF50;
|
||||
}
|
||||
.status-icon.offline {
|
||||
color: #f44336;
|
||||
}
|
||||
#settingsForm {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
||||
gap: 8px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.setting-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
background: #3a3a3a;
|
||||
padding: 6px 8px;
|
||||
border-radius: 4px;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
min-width: 0;
|
||||
}
|
||||
.setting-wrapper label {
|
||||
flex: 0 0 50%;
|
||||
font-size: 0.9em;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.setting-wrapper input[type="text"],
|
||||
.setting-wrapper input[type="number"] {
|
||||
flex: 1 1 0;
|
||||
background: #262626;
|
||||
border: 1px solid #555;
|
||||
color: #e0e0e0;
|
||||
border-radius: 4px;
|
||||
padding: 4px 6px;
|
||||
max-width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
.setting-wrapper input[type="checkbox"] {
|
||||
transform: scale(1.2);
|
||||
}
|
||||
.agent-viewer {
|
||||
width: 200px;
|
||||
height: 150px;
|
||||
border: none;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.start-btn:disabled {
|
||||
opacity: 0.4;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.agent-view-container {
|
||||
margin-top: 6px;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Mindcraft</h1>
|
||||
<div id="agents"></div>
|
||||
|
||||
<div id="createAgentSection" style="margin-top:20px;background:#2d2d2d;padding:20px;border-radius:8px;">
|
||||
<h2>Create Agent</h2>
|
||||
<div id="settingsForm"></div>
|
||||
<div id="profileStatus" style="margin-top:6px;font-style:italic;color:#cccccc;">Profile: Not uploaded</div>
|
||||
<div style="margin-top:10px;">
|
||||
<button id="uploadProfileBtn" class="start-btn">Upload Profile</button>
|
||||
<input type="file" id="profileFileInput" accept=".json,application/json" style="display:none">
|
||||
<button id="submitCreateAgentBtn" class="start-btn" disabled>Create Agent</button>
|
||||
</div>
|
||||
<div id="createError" style="color:#f44336;margin-top:10px;"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const socket = io();
|
||||
const agentsDiv = document.getElementById('agents');
|
||||
let settingsSpec = {};
|
||||
let profileData = null;
|
||||
const agentSettings = {};
|
||||
|
||||
fetch('/settings_spec.json')
|
||||
.then(r => r.json())
|
||||
.then(spec => {
|
||||
settingsSpec = spec;
|
||||
const form = document.getElementById('settingsForm');
|
||||
Object.keys(spec).forEach(key => {
|
||||
if (key === 'profile') return; // profile handled via upload
|
||||
const cfg = spec[key];
|
||||
const wrapper = document.createElement('div');
|
||||
wrapper.className = 'setting-wrapper';
|
||||
const label = document.createElement('label');
|
||||
label.textContent = key;
|
||||
label.title = cfg.description || '';
|
||||
let input;
|
||||
switch (cfg.type) {
|
||||
case 'boolean':
|
||||
input = document.createElement('input');
|
||||
input.type = 'checkbox';
|
||||
input.checked = cfg.default === true;
|
||||
break;
|
||||
case 'number':
|
||||
input = document.createElement('input');
|
||||
input.type = 'number';
|
||||
input.value = cfg.default;
|
||||
break;
|
||||
default:
|
||||
input = document.createElement('input');
|
||||
input.type = 'text';
|
||||
input.value = typeof cfg.default === 'object' ? JSON.stringify(cfg.default) : cfg.default;
|
||||
}
|
||||
input.title = cfg.description || '';
|
||||
input.id = `setting-${key}`;
|
||||
wrapper.appendChild(label);
|
||||
wrapper.appendChild(input);
|
||||
form.appendChild(wrapper);
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById('uploadProfileBtn').addEventListener('click', () => {
|
||||
document.getElementById('profileFileInput').click();
|
||||
});
|
||||
|
||||
document.getElementById('profileFileInput').addEventListener('change', e => {
|
||||
const file = e.target.files[0];
|
||||
if (!file) return;
|
||||
const reader = new FileReader();
|
||||
reader.onload = ev => {
|
||||
try {
|
||||
profileData = JSON.parse(ev.target.result);
|
||||
document.getElementById('submitCreateAgentBtn').disabled = false;
|
||||
document.getElementById('profileStatus').textContent = `Profile: ${profileData.name || 'Uploaded'}`;
|
||||
document.getElementById('createError').textContent = '';
|
||||
} catch (err) {
|
||||
document.getElementById('createError').textContent = 'Invalid profile JSON: ' + err.message;
|
||||
profileData = null;
|
||||
document.getElementById('submitCreateAgentBtn').disabled = true;
|
||||
document.getElementById('profileStatus').textContent = 'Profile: Not uploaded';
|
||||
}
|
||||
};
|
||||
reader.readAsText(file);
|
||||
e.target.value = '';
|
||||
});
|
||||
|
||||
document.getElementById('submitCreateAgentBtn').addEventListener('click', () => {
|
||||
if (!profileData) return;
|
||||
const settings = { profile: profileData };
|
||||
Object.keys(settingsSpec).forEach(key => {
|
||||
if (key === 'profile') return;
|
||||
const input = document.getElementById(`setting-${key}`);
|
||||
if (!input) return;
|
||||
const type = settingsSpec[key].type;
|
||||
let val;
|
||||
if (type === 'boolean') val = input.checked;
|
||||
else if (type === 'number') val = Number(input.value);
|
||||
else if (type === 'array' || type === 'object') {
|
||||
try { val = JSON.parse(input.value); }
|
||||
catch { val = input.value; }
|
||||
} else val = input.value;
|
||||
settings[key] = val;
|
||||
});
|
||||
socket.emit('create-agent', settings, res => {
|
||||
if (!res.success) {
|
||||
document.getElementById('createError').textContent = res.error || 'Unknown error';
|
||||
} else {
|
||||
// reset on success
|
||||
profileData = null;
|
||||
document.getElementById('submitCreateAgentBtn').disabled = true;
|
||||
document.getElementById('profileStatus').textContent = 'Profile: Not uploaded';
|
||||
document.getElementById('createError').textContent = '';
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function fetchAgentSettings(name) {
|
||||
return new Promise((resolve) => {
|
||||
if (agentSettings[name]) { resolve(agentSettings[name]); return; }
|
||||
socket.emit('get-settings', name, res => {
|
||||
if (res.settings) {
|
||||
agentSettings[name] = res.settings;
|
||||
resolve(res.settings);
|
||||
} else resolve(null);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function renderAgents(agents) {
|
||||
// fetch settings for any new agents
|
||||
await Promise.all(agents.map(a => fetchAgentSettings(a.name)));
|
||||
|
||||
agentsDiv.innerHTML = agents.length ?
|
||||
agents.map((agent, idx) => {
|
||||
const cfg = agentSettings[agent.name] || {};
|
||||
const showViewer = cfg.render_bot_view === true;
|
||||
const viewerHTML = showViewer ? `<div class="agent-view-container"><iframe class="agent-viewer" src="http://localhost:${3000 + idx}"></iframe></div>` : '';
|
||||
return `
|
||||
<div class="agent">
|
||||
<div style="display:flex;justify-content:space-between;align-items:center;">
|
||||
<span><span class="status-icon ${agent.in_game ? 'online' : 'offline'}">●</span>${agent.name}</span>
|
||||
<div style="display:flex;align-items:center;">
|
||||
${agent.in_game ? `
|
||||
<button class="stop-btn" onclick="stopAgent('${agent.name}')">Stop</button>
|
||||
<button class="restart-btn" onclick="restartAgent('${agent.name}')">Restart</button>
|
||||
<input type="text" id="messageInput-${agent.name}" placeholder="Enter message..." style="margin-left:4px;">
|
||||
<button class="start-btn" onclick="sendMessage('${agent.name}', document.getElementById('messageInput-${agent.name}').value)">Send</button>
|
||||
` : `
|
||||
<button class="start-btn" onclick="startAgent('${agent.name}')">Start</button>
|
||||
`}
|
||||
</div>
|
||||
</div>
|
||||
${viewerHTML}
|
||||
</div>`;
|
||||
}).join('') +
|
||||
`<button class="stop-btn" onclick="killAllAgents()">Stop All</button>
|
||||
<button class="stop-btn" onclick="shutdown()">Shutdown</button>` :
|
||||
'<div class="agent">No agents connected</div>';
|
||||
}
|
||||
|
||||
socket.on('agents-update', agents => { renderAgents(agents); });
|
||||
|
||||
function restartAgent(n) { socket.emit('restart-agent', n); }
|
||||
function startAgent(n) { socket.emit('start-agent', n); }
|
||||
function stopAgent(n) { socket.emit('stop-agent', n); }
|
||||
function killAllAgents() { socket.emit('stop-all-agents'); }
|
||||
function shutdown() { socket.emit('shutdown'); }
|
||||
function sendMessage(n, m) { socket.emit('send-message', n, m); }
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
127
src/mindcraft/public/settings_spec.json
Normal file
127
src/mindcraft/public/settings_spec.json
Normal file
|
@ -0,0 +1,127 @@
|
|||
{
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"required": true,
|
||||
"description": "The profile object to use, including name, prompts, and examples"
|
||||
},
|
||||
"minecraft_version": {
|
||||
"type": "string",
|
||||
"description": "The version of Minecraft to use",
|
||||
"default": "1.21.1"
|
||||
},
|
||||
"host": {
|
||||
"type": "string",
|
||||
"description": "The minecraft server host address to connect to",
|
||||
"default": "127.0.0.1"
|
||||
},
|
||||
"port": {
|
||||
"type": "number",
|
||||
"description": "The minecraft server port to connect to",
|
||||
"default": 55916
|
||||
},
|
||||
"auth": {
|
||||
"type": "string",
|
||||
"description": "The authentication method to use",
|
||||
"default": "offline"
|
||||
},
|
||||
"base_profile": {
|
||||
"type": "string",
|
||||
"description": "Allowed values: survival, assistant, creative, god_mode. Each has fine tuned settings for different game modes.",
|
||||
"default": "survival"
|
||||
},
|
||||
"load_memory": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to load bot's previous memory",
|
||||
"default": false
|
||||
},
|
||||
"init_message": {
|
||||
"type": "string",
|
||||
"description": "The initial message to send to the bot",
|
||||
"default": "Respond with hello world and your name"
|
||||
},
|
||||
"only_chat_with": {
|
||||
"type": "array",
|
||||
"description": "List of agents to only chat with. If empty, the bot will chat publicly",
|
||||
"default": []
|
||||
},
|
||||
"speak": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to enable text-to-speech reading on the host machine",
|
||||
"default": false
|
||||
},
|
||||
"language": {
|
||||
"type": "string",
|
||||
"description": "The language to automatically translate to and from using google translate",
|
||||
"default": "en"
|
||||
},
|
||||
"allow_vision": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to allow vision capabilities",
|
||||
"default": false
|
||||
},
|
||||
"blocked_actions": {
|
||||
"type": "array",
|
||||
"description": "List of actions that are blocked",
|
||||
"default": ["!checkBlueprint", "!checkBlueprintLevel", "!getBlueprint", "!getBlueprintLevel"]
|
||||
},
|
||||
"relevant_docs_count": {
|
||||
"type": "number",
|
||||
"description": "Number of relevant function documents to include in the prompt for LLM code writing",
|
||||
"default": 5
|
||||
},
|
||||
"max_messages": {
|
||||
"type": "number",
|
||||
"description": "Maximum number of recent messages to keep in context for LLM",
|
||||
"default": 15
|
||||
},
|
||||
"num_examples": {
|
||||
"type": "number",
|
||||
"description": "Number of examples to select to help prompt better LLM responses",
|
||||
"default": 2
|
||||
},
|
||||
"max_commands": {
|
||||
"type": "number",
|
||||
"description": "Maximum number of commands allowed in consecutive responses. -1 for no limit",
|
||||
"default": -1
|
||||
},
|
||||
"narrate_behavior": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to openly chat automatic behavior like 'Picking up item!'",
|
||||
"default": true
|
||||
},
|
||||
"log_all_prompts": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to log all prompts to file. Can be very verbose.",
|
||||
"default": false
|
||||
},
|
||||
"verbose_commands": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to show full command syntax in bot responses. If false will use a shortened syntax.",
|
||||
"default": true
|
||||
},
|
||||
"chat_bot_messages": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to publicly chat messages to and from other bots",
|
||||
"default": true
|
||||
},
|
||||
"render_bot_view": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to render bot view for user observation. Does not give bot vision.",
|
||||
"default": false
|
||||
},
|
||||
"allow_insecure_coding": {
|
||||
"type": "boolean",
|
||||
"description": "Whether to allow newAction command that let's LLM write/run code on host computer. Despite sandboxxing, it is potentially insecure.",
|
||||
"default": false
|
||||
},
|
||||
"code_timeout_mins": {
|
||||
"type": "number",
|
||||
"description": "Number of minutes to allow code execution. -1 for no timeout",
|
||||
"default": -1
|
||||
},
|
||||
"task": {
|
||||
"type": "object",
|
||||
"description": "The task object to give the agent on start. If null, the agent will not have a task.",
|
||||
"default": null
|
||||
}
|
||||
}
|
89
src/models/_model_map.js
Normal file
89
src/models/_model_map.js
Normal file
|
@ -0,0 +1,89 @@
|
|||
import { promises as fs } from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath, pathToFileURL } from 'url';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
// Dynamically discover model classes in this directory.
|
||||
// Each model class must export a static `prefix` string.
|
||||
const apiMap = await (async () => {
|
||||
const map = {};
|
||||
const files = (await fs.readdir(__dirname))
|
||||
.filter(f => f.endsWith('.js') && f !== '_model_map.js' && f !== 'prompter.js');
|
||||
for (const file of files) {
|
||||
try {
|
||||
const moduleUrl = pathToFileURL(path.join(__dirname, file)).href;
|
||||
const mod = await import(moduleUrl);
|
||||
for (const exported of Object.values(mod)) {
|
||||
if (typeof exported === 'function' && Object.prototype.hasOwnProperty.call(exported, 'prefix')) {
|
||||
const prefix = exported.prefix;
|
||||
if (typeof prefix === 'string' && prefix.length > 0) {
|
||||
map[prefix] = exported;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('Failed to load model module:', file, e?.message || e);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
})();
|
||||
|
||||
export function selectAPI(profile) {
|
||||
if (typeof profile === 'string' || profile instanceof String) {
|
||||
profile = {model: profile};
|
||||
}
|
||||
// backwards compatibility with local->ollama
|
||||
if (profile.api?.includes('local') || profile.model?.includes('local')) {
|
||||
profile.api = 'ollama';
|
||||
if (profile.model) {
|
||||
profile.model = profile.model.replace('local', 'ollama');
|
||||
}
|
||||
}
|
||||
if (!profile.api) {
|
||||
const api = Object.keys(apiMap).find(key => profile.model?.startsWith(key));
|
||||
if (api) {
|
||||
profile.api = api;
|
||||
}
|
||||
else {
|
||||
// check for some common models that do not require prefixes
|
||||
if (profile.model.includes('gpt') || profile.model.includes('o1')|| profile.model.includes('o3'))
|
||||
profile.api = 'openai';
|
||||
else if (profile.model.includes('claude'))
|
||||
profile.api = 'anthropic';
|
||||
else if (profile.model.includes('gemini'))
|
||||
profile.api = "google";
|
||||
else if (profile.model.includes('grok'))
|
||||
profile.api = 'grok';
|
||||
else if (profile.model.includes('mistral'))
|
||||
profile.api = 'mistral';
|
||||
else if (profile.model.includes('deepseek'))
|
||||
profile.api = 'deepseek';
|
||||
else if (profile.model.includes('qwen'))
|
||||
profile.api = 'qwen';
|
||||
}
|
||||
if (!profile.api) {
|
||||
throw new Error('Unknown model:', profile.model);
|
||||
}
|
||||
}
|
||||
if (!apiMap[profile.api]) {
|
||||
throw new Error('Unknown api:', profile.api);
|
||||
}
|
||||
let model_name = profile.model.replace(profile.api + '/', ''); // remove prefix
|
||||
profile.model = model_name === "" ? null : model_name; // if model is empty, set to null
|
||||
return profile;
|
||||
}
|
||||
|
||||
export function createModel(profile) {
|
||||
if (!!apiMap[profile.model]) {
|
||||
// if the model value is an api (instead of a specific model name)
|
||||
// then set model to null so it uses the default model for that api
|
||||
profile.model = null;
|
||||
}
|
||||
if (!apiMap[profile.api]) {
|
||||
throw new Error('Unknown api:', profile.api);
|
||||
}
|
||||
const model = new apiMap[profile.api](profile.model, profile.url, profile.params);
|
||||
return model;
|
||||
}
|
61
src/models/cerebras.js
Normal file
61
src/models/cerebras.js
Normal file
|
@ -0,0 +1,61 @@
|
|||
import CerebrasSDK from '@cerebras/cerebras_cloud_sdk';
|
||||
import { strictFormat } from '../utils/text.js';
|
||||
import { getKey } from '../utils/keys.js';
|
||||
|
||||
export class Cerebras {
|
||||
static prefix = 'cerebras';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.url = url;
|
||||
this.params = params;
|
||||
|
||||
// Initialize client with API key
|
||||
this.client = new CerebrasSDK({ apiKey: getKey('CEREBRAS_API_KEY') });
|
||||
}
|
||||
|
||||
async sendRequest(turns, systemMessage, stop_seq = '***') {
|
||||
// Format messages array
|
||||
const messages = strictFormat(turns);
|
||||
messages.unshift({ role: 'system', content: systemMessage });
|
||||
|
||||
const pack = {
|
||||
model: this.model_name || 'gpt-oss-120b',
|
||||
messages,
|
||||
stream: false,
|
||||
...(this.params || {}),
|
||||
};
|
||||
|
||||
let res;
|
||||
try {
|
||||
const completion = await this.client.chat.completions.create(pack);
|
||||
// OpenAI-compatible shape
|
||||
res = completion.choices?.[0]?.message?.content || '';
|
||||
} catch (err) {
|
||||
console.error('Cerebras API error:', err);
|
||||
res = 'My brain disconnected, try again.';
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
async sendVisionRequest(messages, systemMessage, imageBuffer) {
|
||||
const imageMessages = [...messages];
|
||||
imageMessages.push({
|
||||
role: "user",
|
||||
content: [
|
||||
{ type: "text", text: systemMessage },
|
||||
{
|
||||
type: "image_url",
|
||||
image_url: {
|
||||
url: `data:image/jpeg;base64,${imageBuffer.toString('base64')}`
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
return this.sendRequest(imageMessages, systemMessage);
|
||||
}
|
||||
|
||||
async embed(text) {
|
||||
throw new Error('Embeddings are not supported by Cerebras.');
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ import { strictFormat } from '../utils/text.js';
|
|||
import { getKey } from '../utils/keys.js';
|
||||
|
||||
export class Claude {
|
||||
static prefix = 'anthropic';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.params = params || {};
|
||||
|
|
|
@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
|
|||
import { strictFormat } from '../utils/text.js';
|
||||
|
||||
export class DeepSeek {
|
||||
static prefix = 'deepseek';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.params = params;
|
||||
|
|
|
@ -3,6 +3,7 @@ import { toSinglePrompt, strictFormat } from '../utils/text.js';
|
|||
import { getKey } from '../utils/keys.js';
|
||||
|
||||
export class Gemini {
|
||||
static prefix = 'google';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.params = params;
|
||||
|
@ -36,7 +37,7 @@ export class Gemini {
|
|||
async sendRequest(turns, systemMessage) {
|
||||
let model;
|
||||
const modelConfig = {
|
||||
model: this.model_name || "gemini-1.5-flash",
|
||||
model: this.model_name || "gemini-2.5-flash",
|
||||
// systemInstruction does not work bc google is trash
|
||||
};
|
||||
if (this.url) {
|
||||
|
@ -142,15 +143,15 @@ export class Gemini {
|
|||
}
|
||||
|
||||
async embed(text) {
|
||||
let model;
|
||||
let model = this.model_name || "text-embedding-004";
|
||||
if (this.url) {
|
||||
model = this.genAI.getGenerativeModel(
|
||||
{ model: "text-embedding-004" },
|
||||
{ model },
|
||||
{ baseUrl: this.url }
|
||||
);
|
||||
} else {
|
||||
model = this.genAI.getGenerativeModel(
|
||||
{ model: "text-embedding-004" }
|
||||
{ model }
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ import OpenAIApi from 'openai';
|
|||
import { getKey } from '../utils/keys.js';
|
||||
|
||||
export class GLHF {
|
||||
static prefix = 'glhf';
|
||||
constructor(model_name, url) {
|
||||
this.model_name = model_name;
|
||||
const apiKey = getKey('GHLF_API_KEY');
|
||||
|
|
|
@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
|
|||
import { strictFormat } from '../utils/text.js';
|
||||
|
||||
export class GPT {
|
||||
static prefix = 'openai';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.params = params;
|
||||
|
@ -22,20 +23,21 @@ export class GPT {
|
|||
async sendRequest(turns, systemMessage, stop_seq='***') {
|
||||
let messages = [{'role': 'system', 'content': systemMessage}].concat(turns);
|
||||
messages = strictFormat(messages);
|
||||
let model = this.model_name || "gpt-4o-mini";
|
||||
const pack = {
|
||||
model: this.model_name || "gpt-3.5-turbo",
|
||||
model: model,
|
||||
messages,
|
||||
stop: stop_seq,
|
||||
...(this.params || {})
|
||||
};
|
||||
if (this.model_name.includes('o1')) {
|
||||
if (model.includes('o1') || model.includes('o3') || model.includes('5')) {
|
||||
delete pack.stop;
|
||||
}
|
||||
|
||||
let res = null;
|
||||
|
||||
try {
|
||||
console.log('Awaiting openai api response from model', this.model_name)
|
||||
console.log('Awaiting openai api response from model', model)
|
||||
// console.log('Messages:', messages);
|
||||
let completion = await this.openai.chat.completions.create(pack);
|
||||
if (completion.choices[0].finish_reason == 'length')
|
||||
|
@ -88,6 +90,3 @@ export class GPT {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ import { getKey } from '../utils/keys.js';
|
|||
|
||||
// xAI doesn't supply a SDK for their models, but fully supports OpenAI and Anthropic SDKs
|
||||
export class Grok {
|
||||
static prefix = 'xai';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.url = url;
|
||||
|
@ -19,13 +20,12 @@ export class Grok {
|
|||
this.openai = new OpenAIApi(config);
|
||||
}
|
||||
|
||||
async sendRequest(turns, systemMessage, stop_seq='***') {
|
||||
async sendRequest(turns, systemMessage) {
|
||||
let messages = [{'role': 'system', 'content': systemMessage}].concat(turns);
|
||||
|
||||
const pack = {
|
||||
model: this.model_name || "grok-beta",
|
||||
model: this.model_name || "grok-3-mini-latest",
|
||||
messages,
|
||||
stop: [stop_seq],
|
||||
...(this.params || {})
|
||||
};
|
||||
|
||||
|
@ -42,7 +42,7 @@ export class Grok {
|
|||
catch (err) {
|
||||
if ((err.message == 'Context length exceeded' || err.code == 'context_length_exceeded') && turns.length > 1) {
|
||||
console.log('Context length exceeded, trying again with shorter context.');
|
||||
return await this.sendRequest(turns.slice(1), systemMessage, stop_seq);
|
||||
return await this.sendRequest(turns.slice(1), systemMessage);
|
||||
} else if (err.message.includes('The model expects a single `text` element per message.')) {
|
||||
console.log(err);
|
||||
res = 'Vision is only supported by certain models.';
|
||||
|
|
|
@ -6,6 +6,7 @@ import { getKey } from '../utils/keys.js';
|
|||
|
||||
// Umbrella class for everything under the sun... That GroqCloud provides, that is.
|
||||
export class GroqCloudAPI {
|
||||
static prefix = 'groq';
|
||||
|
||||
constructor(model_name, url, params) {
|
||||
|
||||
|
@ -49,13 +50,13 @@ export class GroqCloudAPI {
|
|||
|
||||
let completion = await this.groq.chat.completions.create({
|
||||
"messages": messages,
|
||||
"model": this.model_name || "llama-3.3-70b-versatile",
|
||||
"model": this.model_name || "qwen/qwen3-32b",
|
||||
"stream": false,
|
||||
"stop": stop_seq,
|
||||
...(this.params || {})
|
||||
});
|
||||
|
||||
res = completion.choices[0].message;
|
||||
res = completion.choices[0].message.content;
|
||||
|
||||
res = res.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
|
||||
}
|
||||
|
@ -63,7 +64,6 @@ export class GroqCloudAPI {
|
|||
if (err.message.includes("content must be a string")) {
|
||||
res = "Vision is only supported by certain models.";
|
||||
} else {
|
||||
console.log(this.model_name);
|
||||
res = "My brain disconnected, try again.";
|
||||
}
|
||||
console.log(err);
|
||||
|
|
|
@ -3,6 +3,7 @@ import { getKey } from '../utils/keys.js';
|
|||
import { HfInference } from "@huggingface/inference";
|
||||
|
||||
export class HuggingFace {
|
||||
static prefix = 'huggingface';
|
||||
constructor(model_name, url, params) {
|
||||
// Remove 'huggingface/' prefix if present
|
||||
this.model_name = model_name.replace('huggingface/', '');
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { getKey } from '../utils/keys.js';
|
||||
|
||||
export class Hyperbolic {
|
||||
static prefix = 'hyperbolic';
|
||||
constructor(modelName, apiUrl) {
|
||||
this.modelName = modelName || "deepseek-ai/DeepSeek-V3";
|
||||
this.apiUrl = apiUrl || "https://api.hyperbolic.xyz/v1/chat/completions";
|
||||
|
|
|
@ -3,6 +3,7 @@ import { getKey } from '../utils/keys.js';
|
|||
import { strictFormat } from '../utils/text.js';
|
||||
|
||||
export class Mistral {
|
||||
static prefix = 'mistral';
|
||||
#client;
|
||||
|
||||
constructor(model_name, url, params) {
|
||||
|
|
|
@ -4,8 +4,9 @@ import { strictFormat } from '../utils/text.js';
|
|||
|
||||
// llama, mistral
|
||||
export class Novita {
|
||||
static prefix = 'novita';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name.replace('novita/', '');
|
||||
this.model_name = model_name;
|
||||
this.url = url || 'https://api.novita.ai/v3/openai';
|
||||
this.params = params;
|
||||
|
||||
|
@ -25,7 +26,7 @@ export class Novita {
|
|||
messages = strictFormat(messages);
|
||||
|
||||
const pack = {
|
||||
model: this.model_name || "meta-llama/llama-3.1-70b-instruct",
|
||||
model: this.model_name || "meta-llama/llama-4-scout-17b-16e-instruct",
|
||||
messages,
|
||||
stop: [stop_seq],
|
||||
...(this.params || {})
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { strictFormat } from '../utils/text.js';
|
||||
|
||||
export class Local {
|
||||
export class Ollama {
|
||||
static prefix = 'ollama';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.params = params;
|
||||
|
@ -10,11 +11,9 @@ export class Local {
|
|||
}
|
||||
|
||||
async sendRequest(turns, systemMessage) {
|
||||
let model = this.model_name || 'llama3.1'; // Updated to llama3.1, as it is more performant than llama3
|
||||
let model = this.model_name || 'sweaterdog/andy-4:micro-q8_0';
|
||||
let messages = strictFormat(turns);
|
||||
messages.unshift({ role: 'system', content: systemMessage });
|
||||
|
||||
// We'll attempt up to 5 times for models with deepseek-r1-esk reasoning if the <think> tags are mismatched.
|
||||
const maxAttempts = 5;
|
||||
let attempt = 0;
|
||||
let finalRes = null;
|
||||
|
@ -24,14 +23,14 @@ export class Local {
|
|||
console.log(`Awaiting local response... (model: ${model}, attempt: ${attempt})`);
|
||||
let res = null;
|
||||
try {
|
||||
res = await this.send(this.chat_endpoint, {
|
||||
let apiResponse = await this.send(this.chat_endpoint, {
|
||||
model: model,
|
||||
messages: messages,
|
||||
stream: false,
|
||||
...(this.params || {})
|
||||
});
|
||||
if (res) {
|
||||
res = res['message']['content'];
|
||||
if (apiResponse) {
|
||||
res = apiResponse['message']['content'];
|
||||
} else {
|
||||
res = 'No response data.';
|
||||
}
|
||||
|
@ -43,36 +42,27 @@ export class Local {
|
|||
console.log(err);
|
||||
res = 'My brain disconnected, try again.';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// If the model name includes "deepseek-r1" or "Andy-3.5-reasoning", then handle the <think> block.
|
||||
const hasOpenTag = res.includes("<think>");
|
||||
const hasCloseTag = res.includes("</think>");
|
||||
|
||||
// If there's a partial mismatch, retry to get a complete response.
|
||||
if ((hasOpenTag && !hasCloseTag)) {
|
||||
console.warn("Partial <think> block detected. Re-generating...");
|
||||
continue;
|
||||
}
|
||||
|
||||
// If </think> is present but <think> is not, prepend <think>
|
||||
if (hasCloseTag && !hasOpenTag) {
|
||||
res = '<think>' + res;
|
||||
}
|
||||
// Changed this so if the model reasons, using <think> and </think> but doesn't start the message with <think>, <think> ges prepended to the message so no error occur.
|
||||
|
||||
// If both tags appear, remove them (and everything inside).
|
||||
if (hasOpenTag && hasCloseTag) {
|
||||
res = res.replace(/<think>[\s\S]*?<\/think>/g, '');
|
||||
}
|
||||
const hasOpenTag = res.includes("<think>");
|
||||
const hasCloseTag = res.includes("</think>");
|
||||
|
||||
if ((hasOpenTag && !hasCloseTag)) {
|
||||
console.warn("Partial <think> block detected. Re-generating...");
|
||||
if (attempt < maxAttempts) continue;
|
||||
}
|
||||
if (hasCloseTag && !hasOpenTag) {
|
||||
res = '<think>' + res;
|
||||
}
|
||||
if (hasOpenTag && hasCloseTag) {
|
||||
res = res.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
|
||||
}
|
||||
finalRes = res;
|
||||
break; // Exit the loop if we got a valid response.
|
||||
break;
|
||||
}
|
||||
|
||||
if (finalRes == null) {
|
||||
console.warn("Could not get a valid <think> block or normal response after max attempts.");
|
||||
console.warn("Could not get a valid response after max attempts.");
|
||||
finalRes = 'I thought too hard, sorry, try again.';
|
||||
}
|
||||
return finalRes;
|
||||
|
@ -104,4 +94,22 @@ export class Local {
|
|||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
async sendVisionRequest(messages, systemMessage, imageBuffer) {
|
||||
const imageMessages = [...messages];
|
||||
imageMessages.push({
|
||||
role: "user",
|
||||
content: [
|
||||
{ type: "text", text: systemMessage },
|
||||
{
|
||||
type: "image_url",
|
||||
image_url: {
|
||||
url: `data:image/jpeg;base64,${imageBuffer.toString('base64')}`
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
return this.sendRequest(imageMessages, systemMessage);
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
|
|||
import { strictFormat } from '../utils/text.js';
|
||||
|
||||
export class OpenRouter {
|
||||
static prefix = 'openrouter';
|
||||
constructor(model_name, url) {
|
||||
this.model_name = model_name;
|
||||
|
||||
|
|
|
@ -4,38 +4,30 @@ import { getCommandDocs } from '../agent/commands/index.js';
|
|||
import { SkillLibrary } from "../agent/library/skill_library.js";
|
||||
import { stringifyTurns } from '../utils/text.js';
|
||||
import { getCommand } from '../agent/commands/index.js';
|
||||
import settings from '../../settings.js';
|
||||
|
||||
import { Gemini } from './gemini.js';
|
||||
import { GPT } from './gpt.js';
|
||||
import { Claude } from './claude.js';
|
||||
import { Mistral } from './mistral.js';
|
||||
import { ReplicateAPI } from './replicate.js';
|
||||
import { Local } from './local.js';
|
||||
import { Novita } from './novita.js';
|
||||
import { GroqCloudAPI } from './groq.js';
|
||||
import { HuggingFace } from './huggingface.js';
|
||||
import { Qwen } from "./qwen.js";
|
||||
import { Grok } from "./grok.js";
|
||||
import { DeepSeek } from './deepseek.js';
|
||||
import { Hyperbolic } from './hyperbolic.js';
|
||||
import { GLHF } from './glhf.js';
|
||||
import { OpenRouter } from './openrouter.js';
|
||||
import { Mercury} from "./mercury.js";
|
||||
import { VLLM } from './vllm.js';
|
||||
import settings from '../agent/settings.js';
|
||||
import { promises as fs } from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { selectAPI, createModel } from './_model_map.js';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
export class Prompter {
|
||||
constructor(agent, fp) {
|
||||
constructor(agent, profile) {
|
||||
this.agent = agent;
|
||||
this.profile = JSON.parse(readFileSync(fp, 'utf8'));
|
||||
this.profile = profile;
|
||||
let default_profile = JSON.parse(readFileSync('./profiles/defaults/_default.json', 'utf8'));
|
||||
let base_fp = settings.base_profile;
|
||||
let base_fp = '';
|
||||
if (settings.base_profile.includes('survival')) {
|
||||
base_fp = './profiles/defaults/survival.json';
|
||||
} else if (settings.base_profile.includes('assistant')) {
|
||||
base_fp = './profiles/defaults/assistant.json';
|
||||
} else if (settings.base_profile.includes('creative')) {
|
||||
base_fp = './profiles/defaults/creative.json';
|
||||
} else if (settings.base_profile.includes('god_mode')) {
|
||||
base_fp = './profiles/defaults/god_mode.json';
|
||||
}
|
||||
let base_profile = JSON.parse(readFileSync(base_fp, 'utf8'));
|
||||
|
||||
// first use defaults to fill in missing values in the base profile
|
||||
|
@ -58,70 +50,46 @@ export class Prompter {
|
|||
this.last_prompt_time = 0;
|
||||
this.awaiting_coding = false;
|
||||
|
||||
// try to get "max_tokens" parameter, else null
|
||||
// for backwards compatibility, move max_tokens to params
|
||||
let max_tokens = null;
|
||||
if (this.profile.max_tokens)
|
||||
max_tokens = this.profile.max_tokens;
|
||||
|
||||
let chat_model_profile = this._selectAPI(this.profile.model);
|
||||
this.chat_model = this._createModel(chat_model_profile);
|
||||
let chat_model_profile = selectAPI(this.profile.model);
|
||||
this.chat_model = createModel(chat_model_profile);
|
||||
|
||||
if (this.profile.code_model) {
|
||||
let code_model_profile = this._selectAPI(this.profile.code_model);
|
||||
this.code_model = this._createModel(code_model_profile);
|
||||
let code_model_profile = selectAPI(this.profile.code_model);
|
||||
this.code_model = createModel(code_model_profile);
|
||||
}
|
||||
else {
|
||||
this.code_model = this.chat_model;
|
||||
}
|
||||
|
||||
if (this.profile.vision_model) {
|
||||
let vision_model_profile = this._selectAPI(this.profile.vision_model);
|
||||
this.vision_model = this._createModel(vision_model_profile);
|
||||
let vision_model_profile = selectAPI(this.profile.vision_model);
|
||||
this.vision_model = createModel(vision_model_profile);
|
||||
}
|
||||
else {
|
||||
this.vision_model = this.chat_model;
|
||||
}
|
||||
|
||||
let embedding = this.profile.embedding;
|
||||
if (embedding === undefined) {
|
||||
if (chat_model_profile.api !== 'ollama')
|
||||
embedding = {api: chat_model_profile.api};
|
||||
else
|
||||
embedding = {api: 'none'};
|
||||
}
|
||||
else if (typeof embedding === 'string' || embedding instanceof String)
|
||||
embedding = {api: embedding};
|
||||
|
||||
console.log('Using embedding settings:', embedding);
|
||||
|
||||
try {
|
||||
if (embedding.api === 'google')
|
||||
this.embedding_model = new Gemini(embedding.model, embedding.url);
|
||||
else if (embedding.api === 'openai')
|
||||
this.embedding_model = new GPT(embedding.model, embedding.url);
|
||||
else if (embedding.api === 'replicate')
|
||||
this.embedding_model = new ReplicateAPI(embedding.model, embedding.url);
|
||||
else if (embedding.api === 'ollama')
|
||||
this.embedding_model = new Local(embedding.model, embedding.url);
|
||||
else if (embedding.api === 'qwen')
|
||||
this.embedding_model = new Qwen(embedding.model, embedding.url);
|
||||
else if (embedding.api === 'mistral')
|
||||
this.embedding_model = new Mistral(embedding.model, embedding.url);
|
||||
else if (embedding.api === 'huggingface')
|
||||
this.embedding_model = new HuggingFace(embedding.model, embedding.url);
|
||||
else if (embedding.api === 'novita')
|
||||
this.embedding_model = new Novita(embedding.model, embedding.url);
|
||||
else {
|
||||
this.embedding_model = null;
|
||||
let embedding_name = embedding ? embedding.api : '[NOT SPECIFIED]'
|
||||
console.warn('Unsupported embedding: ' + embedding_name + '. Using word-overlap instead, expect reduced performance. Recommend using a supported embedding model. See Readme.');
|
||||
let embedding_model_profile = null;
|
||||
if (this.profile.embedding) {
|
||||
try {
|
||||
embedding_model_profile = selectAPI(this.profile.embedding);
|
||||
} catch (e) {
|
||||
embedding_model_profile = null;
|
||||
}
|
||||
}
|
||||
catch (err) {
|
||||
console.warn('Warning: Failed to initialize embedding model:', err.message);
|
||||
console.log('Continuing anyway, using word-overlap instead.');
|
||||
this.embedding_model = null;
|
||||
if (embedding_model_profile) {
|
||||
this.embedding_model = createModel(embedding_model_profile);
|
||||
}
|
||||
else {
|
||||
this.embedding_model = createModel({api: chat_model_profile.api});
|
||||
}
|
||||
|
||||
this.skill_libary = new SkillLibrary(agent, this.embedding_model);
|
||||
mkdirSync(`./bots/${name}`, { recursive: true });
|
||||
writeFileSync(`./bots/${name}/last_profile.json`, JSON.stringify(this.profile, null, 4), (err) => {
|
||||
|
@ -132,92 +100,6 @@ export class Prompter {
|
|||
});
|
||||
}
|
||||
|
||||
_selectAPI(profile) {
|
||||
if (typeof profile === 'string' || profile instanceof String) {
|
||||
profile = {model: profile};
|
||||
}
|
||||
if (!profile.api) {
|
||||
if (profile.model.includes('openrouter/'))
|
||||
profile.api = 'openrouter'; // must do first because shares names with other models
|
||||
else if (profile.model.includes('ollama/'))
|
||||
profile.api = 'ollama'; // also must do early because shares names with other models
|
||||
else if (profile.model.includes('gemini'))
|
||||
profile.api = 'google';
|
||||
else if (profile.model.includes('vllm/'))
|
||||
profile.api = 'vllm';
|
||||
else if (profile.model.includes('gpt') || profile.model.includes('o1')|| profile.model.includes('o3'))
|
||||
profile.api = 'openai';
|
||||
else if (profile.model.includes('claude'))
|
||||
profile.api = 'anthropic';
|
||||
else if (profile.model.includes('huggingface/'))
|
||||
profile.api = "huggingface";
|
||||
else if (profile.model.includes('replicate/'))
|
||||
profile.api = 'replicate';
|
||||
else if (profile.model.includes('mistralai/') || profile.model.includes("mistral/"))
|
||||
model_profile.api = 'mistral';
|
||||
else if (profile.model.includes("groq/") || profile.model.includes("groqcloud/"))
|
||||
profile.api = 'groq';
|
||||
else if (profile.model.includes("glhf/"))
|
||||
profile.api = 'glhf';
|
||||
else if (profile.model.includes("hyperbolic/"))
|
||||
profile.api = 'hyperbolic';
|
||||
else if (profile.model.includes('novita/'))
|
||||
profile.api = 'novita';
|
||||
else if (profile.model.includes('qwen'))
|
||||
profile.api = 'qwen';
|
||||
else if (profile.model.includes('grok'))
|
||||
profile.api = 'xai';
|
||||
else if (profile.model.includes('deepseek'))
|
||||
profile.api = 'deepseek';
|
||||
else if (profile.model.includes('mistral'))
|
||||
profile.api = 'mistral';
|
||||
else if (profile.model.includes('mercury'))
|
||||
profile.api = 'mercury';
|
||||
else
|
||||
throw new Error('Unknown model:', profile.model);
|
||||
}
|
||||
return profile;
|
||||
}
|
||||
_createModel(profile) {
|
||||
let model = null;
|
||||
if (profile.api === 'google')
|
||||
model = new Gemini(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'openai')
|
||||
model = new GPT(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'anthropic')
|
||||
model = new Claude(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'replicate')
|
||||
model = new ReplicateAPI(profile.model.replace('replicate/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'ollama')
|
||||
model = new Local(profile.model.replace('ollama/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'mistral')
|
||||
model = new Mistral(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'groq')
|
||||
model = new GroqCloudAPI(profile.model.replace('groq/', '').replace('groqcloud/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'huggingface')
|
||||
model = new HuggingFace(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'glhf')
|
||||
model = new GLHF(profile.model.replace('glhf/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'hyperbolic')
|
||||
model = new Hyperbolic(profile.model.replace('hyperbolic/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'novita')
|
||||
model = new Novita(profile.model.replace('novita/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'qwen')
|
||||
model = new Qwen(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'xai')
|
||||
model = new Grok(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'deepseek')
|
||||
model = new DeepSeek(profile.model, profile.url, profile.params);
|
||||
else if (profile.api === 'openrouter')
|
||||
model = new OpenRouter(profile.model.replace('openrouter/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'vllm')
|
||||
model = new VLLM(profile.model.replace('vllm/', ''), profile.url, profile.params);
|
||||
else if (profile.api === 'mercury')
|
||||
model = new Mercury(profile.model, profile.url, profile.params);
|
||||
else
|
||||
throw new Error('Unknown API:', profile.api);
|
||||
return model;
|
||||
}
|
||||
getName() {
|
||||
return this.profile.name;
|
||||
}
|
||||
|
@ -478,6 +360,4 @@ export class Prompter {
|
|||
logFile = path.join(logDir, logFile);
|
||||
await fs.appendFile(logFile, String(logEntry), 'utf-8');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ import { getKey, hasKey } from '../utils/keys.js';
|
|||
import { strictFormat } from '../utils/text.js';
|
||||
|
||||
export class Qwen {
|
||||
static prefix = 'qwen';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.params = params;
|
||||
|
|
|
@ -4,6 +4,7 @@ import { getKey } from '../utils/keys.js';
|
|||
|
||||
// llama, mistral
|
||||
export class ReplicateAPI {
|
||||
static prefix = 'replicate';
|
||||
constructor(model_name, url, params) {
|
||||
this.model_name = model_name;
|
||||
this.url = url;
|
||||
|
|
|
@ -6,6 +6,7 @@ import { getKey, hasKey } from '../utils/keys.js';
|
|||
import { strictFormat } from '../utils/text.js';
|
||||
|
||||
export class VLLM {
|
||||
static prefix = 'vllm';
|
||||
constructor(model_name, url) {
|
||||
this.model_name = model_name;
|
||||
|
||||
|
@ -23,13 +24,14 @@ export class VLLM {
|
|||
|
||||
async sendRequest(turns, systemMessage, stop_seq = '***') {
|
||||
let messages = [{ 'role': 'system', 'content': systemMessage }].concat(turns);
|
||||
let model = this.model_name || "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B";
|
||||
|
||||
if (this.model_name.includes('deepseek') || this.model_name.includes('qwen')) {
|
||||
if (model.includes('deepseek') || model.includes('qwen')) {
|
||||
messages = strictFormat(messages);
|
||||
}
|
||||
|
||||
const pack = {
|
||||
model: this.model_name || "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
|
||||
model: model,
|
||||
messages,
|
||||
stop: stop_seq,
|
||||
};
|
||||
|
@ -38,6 +40,7 @@ export class VLLM {
|
|||
try {
|
||||
console.log('Awaiting openai api response...')
|
||||
// console.log('Messages:', messages);
|
||||
// todo set max_tokens, temperature, top_p, etc. in pack
|
||||
let completion = await this.vllm.chat.completions.create(pack);
|
||||
if (completion.choices[0].finish_reason == 'length')
|
||||
throw new Error('Context length exceeded');
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
import { spawn } from 'child_process';
|
||||
import { mainProxy } from './main_proxy.js';
|
||||
import { logoutAgent } from '../mindcraft/mindserver.js';
|
||||
|
||||
export class AgentProcess {
|
||||
start(profile, load_memory=false, init_message=null, count_id=0, task_path=null, task_id=null) {
|
||||
this.profile = profile;
|
||||
constructor(name, port) {
|
||||
this.name = name;
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
start(load_memory=false, init_message=null, count_id=0) {
|
||||
this.count_id = count_id;
|
||||
this.running = true;
|
||||
|
||||
let args = ['src/process/init_agent.js', this.name];
|
||||
args.push('-p', profile);
|
||||
args.push('-n', this.name);
|
||||
args.push('-c', count_id);
|
||||
if (load_memory)
|
||||
args.push('-l', load_memory);
|
||||
if (init_message)
|
||||
args.push('-m', init_message);
|
||||
if (task_path)
|
||||
args.push('-t', task_path);
|
||||
if (task_id)
|
||||
args.push('-i', task_id);
|
||||
args.push('-p', this.port);
|
||||
|
||||
const agentProcess = spawn('node', args, {
|
||||
stdio: 'inherit',
|
||||
|
@ -28,7 +29,7 @@ export class AgentProcess {
|
|||
agentProcess.on('exit', (code, signal) => {
|
||||
console.log(`Agent process exited with code ${code} and signal ${signal}`);
|
||||
this.running = false;
|
||||
mainProxy.logoutAgent(this.name);
|
||||
logoutAgent(this.name);
|
||||
|
||||
if (code > 1) {
|
||||
console.log(`Ending task`);
|
||||
|
@ -38,11 +39,11 @@ export class AgentProcess {
|
|||
if (code !== 0 && signal !== 'SIGINT') {
|
||||
// agent must run for at least 10 seconds before restarting
|
||||
if (Date.now() - last_restart < 10000) {
|
||||
console.error(`Agent process ${profile} exited too quickly and will not be restarted.`);
|
||||
console.error(`Agent process exited too quickly and will not be restarted.`);
|
||||
return;
|
||||
}
|
||||
console.log('Restarting agent...');
|
||||
this.start(profile, true, 'Agent process restarted.', count_id, task_path, task_id);
|
||||
this.start(true, 'Agent process restarted.', count_id, this.port);
|
||||
last_restart = Date.now();
|
||||
}
|
||||
});
|
||||
|
@ -61,7 +62,7 @@ export class AgentProcess {
|
|||
|
||||
continue() {
|
||||
if (!this.running) {
|
||||
this.start(this.profile, true, 'Agent process restarted.', this.count_id);
|
||||
this.start(true, 'Agent process restarted.', this.count_id);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,27 +1,18 @@
|
|||
import { Agent } from '../agent/agent.js';
|
||||
import { serverProxy } from '../agent/mindserver_proxy.js';
|
||||
import yargs from 'yargs';
|
||||
|
||||
// Add global unhandled rejection handler
|
||||
process.on('unhandledRejection', (reason, promise) => {
|
||||
console.error('Unhandled Rejection at:', {
|
||||
promise: promise,
|
||||
reason: reason,
|
||||
stack: reason?.stack || 'No stack trace'
|
||||
});
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
if (args.length < 1) {
|
||||
console.log('Usage: node init_agent.js <agent_name> [profile] [load_memory] [init_message]');
|
||||
console.log('Usage: node init_agent.js -n <agent_name> -p <port> -l <load_memory> -m <init_message> -c <count_id>');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const argv = yargs(args)
|
||||
.option('profile', {
|
||||
alias: 'p',
|
||||
.option('name', {
|
||||
alias: 'n',
|
||||
type: 'string',
|
||||
description: 'profile filepath to use for agent'
|
||||
description: 'name of agent'
|
||||
})
|
||||
.option('load_memory', {
|
||||
alias: 'l',
|
||||
|
@ -33,29 +24,27 @@ const argv = yargs(args)
|
|||
type: 'string',
|
||||
description: 'automatically prompt the agent on startup'
|
||||
})
|
||||
.option('task_path', {
|
||||
alias: 't',
|
||||
type: 'string',
|
||||
description: 'task filepath to use for agent'
|
||||
})
|
||||
.option('task_id', {
|
||||
alias: 'i',
|
||||
type: 'string',
|
||||
description: 'task ID to execute'
|
||||
})
|
||||
.option('count_id', {
|
||||
alias: 'c',
|
||||
type: 'number',
|
||||
default: 0,
|
||||
description: 'identifying count for multi-agent scenarios',
|
||||
}).argv;
|
||||
})
|
||||
.option('port', {
|
||||
alias: 'p',
|
||||
type: 'number',
|
||||
description: 'port of mindserver'
|
||||
})
|
||||
.argv;
|
||||
|
||||
// Wrap agent start in async IIFE with proper error handling
|
||||
(async () => {
|
||||
try {
|
||||
console.log('Starting agent with profile:', argv.profile);
|
||||
console.log('Connecting to MindServer');
|
||||
await serverProxy.connect(argv.name, argv.port);
|
||||
console.log('Starting agent');
|
||||
const agent = new Agent();
|
||||
await agent.start(argv.profile, argv.load_memory, argv.init_message, argv.count_id, argv.task_path, argv.task_id);
|
||||
serverProxy.setAgent(agent);
|
||||
await agent.start(argv.load_memory, argv.init_message, argv.count_id);
|
||||
} catch (error) {
|
||||
console.error('Failed to start agent process:');
|
||||
console.error(error.message);
|
||||
|
|
|
@ -1,64 +0,0 @@
|
|||
import { io } from 'socket.io-client';
|
||||
import settings from '../../settings.js';
|
||||
|
||||
// Singleton mindserver proxy for the main process
|
||||
class MainProxy {
|
||||
constructor() {
|
||||
if (MainProxy.instance) {
|
||||
return MainProxy.instance;
|
||||
}
|
||||
|
||||
this.socket = null;
|
||||
this.connected = false;
|
||||
this.agent_processes = {};
|
||||
MainProxy.instance = this;
|
||||
}
|
||||
|
||||
connect() {
|
||||
if (this.connected) return;
|
||||
|
||||
this.socket = io(`http://${settings.mindserver_host}:${settings.mindserver_port}`);
|
||||
this.connected = true;
|
||||
|
||||
this.socket.on('stop-agent', (agentName) => {
|
||||
if (this.agent_processes[agentName]) {
|
||||
this.agent_processes[agentName].stop();
|
||||
}
|
||||
});
|
||||
|
||||
this.socket.on('start-agent', (agentName) => {
|
||||
if (this.agent_processes[agentName]) {
|
||||
this.agent_processes[agentName].continue();
|
||||
}
|
||||
});
|
||||
|
||||
this.socket.on('register-agents-success', () => {
|
||||
console.log('Agents registered');
|
||||
});
|
||||
|
||||
this.socket.on('shutdown', () => {
|
||||
console.log('Shutting down');
|
||||
for (let agentName in this.agent_processes) {
|
||||
this.agent_processes[agentName].stop();
|
||||
}
|
||||
setTimeout(() => {
|
||||
process.exit(0);
|
||||
}, 2000);
|
||||
});
|
||||
}
|
||||
|
||||
addAgent(agent) {
|
||||
this.agent_processes.push(agent);
|
||||
}
|
||||
|
||||
logoutAgent(agentName) {
|
||||
this.socket.emit('logout-agent', agentName);
|
||||
}
|
||||
|
||||
registerAgent(name, process) {
|
||||
this.socket.emit('register-agents', [name]);
|
||||
this.agent_processes[name] = process;
|
||||
}
|
||||
}
|
||||
|
||||
export const mainProxy = new MainProxy();
|
|
@ -1,163 +0,0 @@
|
|||
import { Server } from 'socket.io';
|
||||
import express from 'express';
|
||||
import http from 'http';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
// Module-level variables
|
||||
let io;
|
||||
let server;
|
||||
const registeredAgents = new Set();
|
||||
const inGameAgents = {};
|
||||
const agentManagers = {}; // socket for main process that registers/controls agents
|
||||
|
||||
// Initialize the server
|
||||
export function createMindServer(port = 8080) {
|
||||
const app = express();
|
||||
server = http.createServer(app);
|
||||
io = new Server(server);
|
||||
|
||||
// Serve static files
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
// Socket.io connection handling
|
||||
io.on('connection', (socket) => {
|
||||
let curAgentName = null;
|
||||
console.log('Client connected');
|
||||
|
||||
agentsUpdate(socket);
|
||||
|
||||
socket.on('register-agents', (agentNames) => {
|
||||
console.log(`Registering agents: ${agentNames}`);
|
||||
agentNames.forEach(name => registeredAgents.add(name));
|
||||
for (let name of agentNames) {
|
||||
agentManagers[name] = socket;
|
||||
}
|
||||
socket.emit('register-agents-success');
|
||||
agentsUpdate();
|
||||
});
|
||||
|
||||
socket.on('login-agent', (agentName) => {
|
||||
if (curAgentName && curAgentName !== agentName) {
|
||||
console.warn(`Agent ${agentName} already logged in as ${curAgentName}`);
|
||||
return;
|
||||
}
|
||||
if (registeredAgents.has(agentName)) {
|
||||
curAgentName = agentName;
|
||||
inGameAgents[agentName] = socket;
|
||||
agentsUpdate();
|
||||
} else {
|
||||
console.warn(`Agent ${agentName} not registered`);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('logout-agent', (agentName) => {
|
||||
if (inGameAgents[agentName]) {
|
||||
delete inGameAgents[agentName];
|
||||
agentsUpdate();
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
console.log('Client disconnected');
|
||||
if (inGameAgents[curAgentName]) {
|
||||
delete inGameAgents[curAgentName];
|
||||
agentsUpdate();
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('chat-message', (agentName, json) => {
|
||||
if (!inGameAgents[agentName]) {
|
||||
console.warn(`Agent ${agentName} tried to send a message but is not logged in`);
|
||||
return;
|
||||
}
|
||||
console.log(`${curAgentName} sending message to ${agentName}: ${json.message}`);
|
||||
inGameAgents[agentName].emit('chat-message', curAgentName, json);
|
||||
});
|
||||
|
||||
socket.on('restart-agent', (agentName) => {
|
||||
console.log(`Restarting agent: ${agentName}`);
|
||||
inGameAgents[agentName].emit('restart-agent');
|
||||
});
|
||||
|
||||
socket.on('stop-agent', (agentName) => {
|
||||
let manager = agentManagers[agentName];
|
||||
if (manager) {
|
||||
manager.emit('stop-agent', agentName);
|
||||
}
|
||||
else {
|
||||
console.warn(`Stopping unregisterd agent ${agentName}`);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('start-agent', (agentName) => {
|
||||
let manager = agentManagers[agentName];
|
||||
if (manager) {
|
||||
manager.emit('start-agent', agentName);
|
||||
}
|
||||
else {
|
||||
console.warn(`Starting unregisterd agent ${agentName}`);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('stop-all-agents', () => {
|
||||
console.log('Killing all agents');
|
||||
stopAllAgents();
|
||||
});
|
||||
|
||||
socket.on('shutdown', () => {
|
||||
console.log('Shutting down');
|
||||
for (let manager of Object.values(agentManagers)) {
|
||||
manager.emit('shutdown');
|
||||
}
|
||||
setTimeout(() => {
|
||||
process.exit(0);
|
||||
}, 2000);
|
||||
});
|
||||
|
||||
socket.on('send-message', (agentName, message) => {
|
||||
if (!inGameAgents[agentName]) {
|
||||
console.warn(`Agent ${agentName} not logged in, cannot send message via MindServer.`);
|
||||
return
|
||||
}
|
||||
try {
|
||||
console.log(`Sending message to agent ${agentName}: ${message}`);
|
||||
inGameAgents[agentName].emit('send-message', agentName, message)
|
||||
} catch (error) {
|
||||
console.error('Error: ', error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
server.listen(port, 'localhost', () => {
|
||||
console.log(`MindServer running on port ${port}`);
|
||||
});
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
function agentsUpdate(socket) {
|
||||
if (!socket) {
|
||||
socket = io;
|
||||
}
|
||||
let agents = [];
|
||||
registeredAgents.forEach(name => {
|
||||
agents.push({name, in_game: !!inGameAgents[name]});
|
||||
});
|
||||
socket.emit('agents-update', agents);
|
||||
}
|
||||
|
||||
function stopAllAgents() {
|
||||
for (const agentName in inGameAgents) {
|
||||
let manager = agentManagers[agentName];
|
||||
if (manager) {
|
||||
manager.emit('stop-agent', agentName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Optional: export these if you need access to them from other files
|
||||
export const getIO = () => io;
|
||||
export const getServer = () => server;
|
||||
export const getConnectedAgents = () => connectedAgents;
|
|
@ -1,120 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Mindcraft</title>
|
||||
<script src="/socket.io/socket.io.js"></script>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 20px;
|
||||
background: #1a1a1a;
|
||||
color: #e0e0e0;
|
||||
}
|
||||
#agents {
|
||||
background: #2d2d2d;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
|
||||
}
|
||||
h1 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.agent {
|
||||
margin: 10px 0;
|
||||
padding: 10px;
|
||||
background: #363636;
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.restart-btn, .start-btn, .stop-btn {
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 5px 10px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.restart-btn {
|
||||
background: #4CAF50;
|
||||
}
|
||||
.start-btn {
|
||||
background: #2196F3;
|
||||
}
|
||||
.stop-btn {
|
||||
background: #f44336;
|
||||
}
|
||||
.restart-btn:hover { background: #45a049; }
|
||||
.start-btn:hover { background: #1976D2; }
|
||||
.stop-btn:hover { background: #d32f2f; }
|
||||
.status-icon {
|
||||
font-size: 12px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
.status-icon.online {
|
||||
color: #4CAF50;
|
||||
}
|
||||
.status-icon.offline {
|
||||
color: #f44336;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Mindcraft</h1>
|
||||
<div id="agents"></div>
|
||||
|
||||
<script>
|
||||
const socket = io();
|
||||
const agentsDiv = document.getElementById('agents');
|
||||
|
||||
socket.on('agents-update', (agents) => {
|
||||
agentsDiv.innerHTML = agents.length ?
|
||||
agents.map(agent => `
|
||||
<div class="agent">
|
||||
<span>
|
||||
<span class="status-icon ${agent.in_game ? 'online' : 'offline'}">●</span>
|
||||
${agent.name}
|
||||
</span>
|
||||
<div>
|
||||
${agent.in_game ? `
|
||||
<button class="stop-btn" onclick="stopAgent('${agent.name}')">Stop</button>
|
||||
<button class="restart-btn" onclick="restartAgent('${agent.name}')">Restart</button>
|
||||
<input type="text" id="messageInput" placeholder="Enter a message or command..."></input><button class="start-btn" onclick="sendMessage('${agent.name}', document.getElementById('messageInput').value)">Send</button>
|
||||
` : `
|
||||
<button class="start-btn" onclick="startAgent('${agent.name}')">Start</button>
|
||||
`}
|
||||
</div>
|
||||
</div>
|
||||
`).join('') +
|
||||
`<button class="stop-btn" onclick="killAllAgents()">Stop All</button>
|
||||
<button class="stop-btn" onclick="shutdown()">Shutdown</button>` :
|
||||
'<div class="agent">No agents connected</div>';
|
||||
});
|
||||
|
||||
function restartAgent(agentName) {
|
||||
socket.emit('restart-agent', agentName);
|
||||
}
|
||||
|
||||
function startAgent(agentName) {
|
||||
socket.emit('start-agent', agentName);
|
||||
}
|
||||
|
||||
function stopAgent(agentName) {
|
||||
socket.emit('stop-agent', agentName);
|
||||
}
|
||||
|
||||
function killAllAgents() {
|
||||
socket.emit('stop-all-agents');
|
||||
}
|
||||
|
||||
function shutdown() {
|
||||
socket.emit('shutdown');
|
||||
}
|
||||
|
||||
function sendMessage(agentName, message) {
|
||||
socket.emit('send-message', agentName, message)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -16,7 +16,7 @@ export function getKey(name) {
|
|||
if (!key) {
|
||||
throw new Error(`API key "${name}" not found in keys.json or environment variables!`);
|
||||
}
|
||||
return keys[name];
|
||||
return key;
|
||||
}
|
||||
|
||||
export function hasKey(name) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import minecraftData from 'minecraft-data';
|
||||
import settings from '../../settings.js';
|
||||
import settings from '../agent/settings.js';
|
||||
import { createBot } from 'mineflayer';
|
||||
import prismarine_items from 'prismarine-item';
|
||||
import { pathfinder } from 'mineflayer-pathfinder';
|
||||
|
@ -8,10 +8,9 @@ import { plugin as collectblock } from 'mineflayer-collectblock';
|
|||
import { plugin as autoEat } from 'mineflayer-auto-eat';
|
||||
import plugin from 'mineflayer-armor-manager';
|
||||
const armorManager = plugin;
|
||||
|
||||
const mc_version = settings.minecraft_version;
|
||||
const mcdata = minecraftData(mc_version);
|
||||
const Item = prismarine_items(mc_version);
|
||||
let mc_version = null;
|
||||
let mcdata = null;
|
||||
let Item = null;
|
||||
|
||||
/**
|
||||
* @typedef {string} ItemName
|
||||
|
@ -54,6 +53,9 @@ export const WOOL_COLORS = [
|
|||
|
||||
|
||||
export function initBot(username) {
|
||||
mc_version = settings.minecraft_version;
|
||||
mcdata = minecraftData(mc_version);
|
||||
Item = prismarine_items(mc_version);
|
||||
let bot = createBot({
|
||||
username: username,
|
||||
|
||||
|
@ -355,6 +357,7 @@ export function initializeLoopingItems() {
|
|||
|
||||
loopingItems = new Set(['coal',
|
||||
'wheat',
|
||||
'bone_meal',
|
||||
'diamond',
|
||||
'emerald',
|
||||
'raw_iron',
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import translate from 'google-translate-api-x';
|
||||
import settings from '../../settings.js';
|
||||
import settings from '../agent/settings.js';
|
||||
|
||||
|
||||
const preferred_lang = String(settings.language).toLowerCase();
|
||||
|
||||
export async function handleTranslation(message) {
|
||||
if (preferred_lang === 'en' || preferred_lang === 'english')
|
||||
let preferred_lang = String(settings.language).toLowerCase();
|
||||
if (!preferred_lang || preferred_lang === 'en' || preferred_lang === 'english')
|
||||
return message;
|
||||
try {
|
||||
const translation = await translate(message, { to: preferred_lang });
|
||||
|
@ -16,7 +17,8 @@ export async function handleTranslation(message) {
|
|||
}
|
||||
|
||||
export async function handleEnglishTranslation(message) {
|
||||
if (preferred_lang === 'en' || preferred_lang === 'english')
|
||||
let preferred_lang = String(settings.language).toLowerCase();
|
||||
if (!preferred_lang || preferred_lang === 'en' || preferred_lang === 'english')
|
||||
return message;
|
||||
try {
|
||||
const translation = await translate(message, { to: 'english' });
|
||||
|
|
|
@ -183,9 +183,6 @@ def extract_success_scores(folders, model_names):
|
|||
display_table("Average Success Score by Room", avg_room_scores)
|
||||
display_table("Average Success Score by (Material, Room) Tuples", avg_material_room_scores, tuple_keys=True)
|
||||
|
||||
def analyze_construction_log(log_file):
|
||||
# ... existing code ...
|
||||
pass
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Analyze construction task logs.')
|
||||
|
|
76
tasks/construction_tasks/blueprint_visualizer.py
Normal file
76
tasks/construction_tasks/blueprint_visualizer.py
Normal file
|
@ -0,0 +1,76 @@
|
|||
import json
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
def display_3d_blocks(data):
|
||||
"""Displays a 3D array of blocks with different types in a single figure with subplots for each level,
|
||||
including block coordinates. Dynamically adjusts the height of the figure.
|
||||
|
||||
Args:
|
||||
data: A dictionary containing the block data, structured like the JSON example.
|
||||
"""
|
||||
|
||||
block_types = {
|
||||
"air": "#FFFFFF", # White
|
||||
"oak_planks": "#8B4513", # Saddle Brown
|
||||
"stone_bricks": "#808080", # Gray
|
||||
"oak_door": "#A0522D", # Sienna
|
||||
"oak_stairs": "#D2691E", # Chocolate
|
||||
"quartz_block": "#FFFFF0", # Ivory
|
||||
"glass_pane": "#00CED1", # Dark Turquoise
|
||||
"torch": "#FF8C00" # Dark Orange
|
||||
}
|
||||
|
||||
# Extract data from the JSON
|
||||
levels = data["levels"]
|
||||
num_levels = len(levels)
|
||||
|
||||
# Create a figure and subplots grid
|
||||
fig, axes = plt.subplots(num_levels, 1, figsize=(10, 5 * num_levels)) # One column, dynamic height
|
||||
axes[0].legend(handles=[plt.Rectangle((0, 0), 1, 1, color=color) for color in block_types.values()],
|
||||
labels=block_types.keys(), loc='upper right')
|
||||
starting_coords = levels[0]["coordinates"]
|
||||
|
||||
# Iterate over each level and corresponding subplot
|
||||
for i, level in enumerate(levels):
|
||||
ax = axes[i]
|
||||
ax.set_title(f"Level {level['level']}")
|
||||
placement = level["placement"]
|
||||
|
||||
# Convert placement data to NumPy array
|
||||
block_array = np.array([
|
||||
[block_types.get(block, 'gray') for block in row] for row in placement
|
||||
])
|
||||
|
||||
# Iterate over each block in the level
|
||||
for x in range(block_array.shape[1]):
|
||||
for y in range(block_array.shape[0]):
|
||||
block_type = block_array[y, x]
|
||||
|
||||
# Plot the block as a rectangle
|
||||
rect = plt.Rectangle((x, y), 1, 1, color=block_type)
|
||||
ax.add_patch(rect)
|
||||
|
||||
# Add coordinate text to the center of the block
|
||||
real_x = x + starting_coords[0]
|
||||
real_y = level['level'] + starting_coords[1]
|
||||
real_z = y + starting_coords[2]
|
||||
ax.text(x + 0.5, y + 0.5, f"({real_x},{real_y},{real_z})", ha='center', va='center', fontsize=8)
|
||||
|
||||
# Set axis limits and labels
|
||||
ax.set_xlim([0, block_array.shape[1]])
|
||||
ax.set_ylim([0, block_array.shape[0]])
|
||||
ax.set_xlabel("X")
|
||||
ax.set_ylabel("Y")
|
||||
|
||||
|
||||
plt.tight_layout() # Adjust spacing between subplots
|
||||
# plt.show()
|
||||
plt.savefig("construction_tasks/church_three_agents.pdf", bbox_inches='tight')
|
||||
|
||||
# Example usage:
|
||||
with open("construction_tasks/custom/church_three_agents.json", "r") as f:
|
||||
data = json.load(f)
|
||||
data = data["church_three_agents"]["blueprint"]
|
||||
|
||||
display_3d_blocks(data)
|
BIN
tasks/construction_tasks/church_blueprint.pdf
Normal file
BIN
tasks/construction_tasks/church_blueprint.pdf
Normal file
Binary file not shown.
2348
tasks/construction_tasks/custom/church_one_agent.json
Normal file
2348
tasks/construction_tasks/custom/church_one_agent.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4,6 +4,7 @@
|
|||
"goal": "Make a structure with the blueprint below",
|
||||
"conversation": "Let's share materials and make a structure with the blueprint",
|
||||
"agent_count": 3,
|
||||
"timeout": 1000,
|
||||
"blueprint": {
|
||||
"materials": {
|
||||
"oak_planks": 153,
|
||||
|
|
2353
tasks/construction_tasks/custom/church_two_agents.json
Normal file
2353
tasks/construction_tasks/custom/church_two_agents.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4,6 +4,7 @@
|
|||
"goal": "Make a structure with the blueprint below",
|
||||
"conversation": "Let's share materials and make a structure with the blueprint",
|
||||
"agent_count": 2,
|
||||
"timeout": 1000,
|
||||
"blueprint": {
|
||||
"materials": {
|
||||
"polished_granite": 1,
|
||||
|
|
|
@ -23,7 +23,7 @@ bot.on('spawn', async () => {
|
|||
const xOffset = 30;
|
||||
const zOffset = 20;
|
||||
|
||||
const taskFilePath = '/Users/isadorawhite/izzy_mindcraft/mindcraft/tasks/construction_tasks/custom/flower_three_agents.json';
|
||||
const taskFilePath = '';
|
||||
const task_name = "flower_three_agents";
|
||||
|
||||
|
||||
|
|
2357
tasks/construction_tasks/human_ai/1_agent_1_human.json
Normal file
2357
tasks/construction_tasks/human_ai/1_agent_1_human.json
Normal file
File diff suppressed because it is too large
Load diff
2375
tasks/construction_tasks/human_ai/2_agent_1_human.json
Normal file
2375
tasks/construction_tasks/human_ai/2_agent_1_human.json
Normal file
File diff suppressed because it is too large
Load diff
614
tasks/cooking_tasks/hells_kitchen_tasks.py
Normal file
614
tasks/cooking_tasks/hells_kitchen_tasks.py
Normal file
|
@ -0,0 +1,614 @@
|
|||
import random
|
||||
import json
|
||||
from typing import Dict, List, Any, Tuple, Set
|
||||
from collections import Counter, defaultdict
|
||||
import itertools
|
||||
|
||||
# Define your COOKING_ITEMS dictionary here
|
||||
# This is where you should put your complete COOKING_ITEMS dictionary
|
||||
COOKING_ITEMS = {
|
||||
# Cooked Meats
|
||||
"cooked_mutton": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the mutton."
|
||||
],
|
||||
"description": "Cooked mutton meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 8,
|
||||
}
|
||||
},
|
||||
"cooked_beef": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
],
|
||||
"description": "Cooked beef meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 8,
|
||||
}
|
||||
},
|
||||
"cooked_porkchop": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a pig and pick up 1 porkchop that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the porkchop."
|
||||
],
|
||||
"description": "Cooked porkchop",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 8,
|
||||
}
|
||||
},
|
||||
"cooked_chicken": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a chicken and pick up 1 raw chicken that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the raw chicken."
|
||||
],
|
||||
"description": "Cooked chicken meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 8,
|
||||
}
|
||||
},
|
||||
"cooked_rabbit": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to furnace and use it to cook the raw rabbit."
|
||||
],
|
||||
"description": "Cooked rabbit meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 8,
|
||||
}
|
||||
},
|
||||
|
||||
# Soups and Stews
|
||||
"beetroot_soup": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 6 beetroot.",
|
||||
"Step 2: From your inventory or other agents get a bowl.",
|
||||
"Step 3: Go to the crafting table and combine the 6 beetroot and 1 bowl to make beetroot soup."
|
||||
],
|
||||
"description": "A hearty beetroot soup",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
}
|
||||
},
|
||||
"mushroom_stew": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
|
||||
"Step 2: From your inventory or other agents get a bowl.",
|
||||
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
|
||||
],
|
||||
"description": "A warm mushroom stew",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
}
|
||||
},
|
||||
"rabbit_stew": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"description": "A hearty rabbit stew",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
}
|
||||
},
|
||||
"suspicious_stew": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom, 1 brown mushroom.",
|
||||
"Step 2: From your inventory or other agents get a bowl and 1 dandelion",
|
||||
"Step 3: Go to the crafting table and combine the mushrooms, dandelion, and bowl to make suspicious stew."
|
||||
],
|
||||
"description": "A mysterious stew with special effects",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
"dandelion": 1,
|
||||
}
|
||||
},
|
||||
|
||||
# Baked Goods
|
||||
"baked_potato": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"description": "A simple baked potato",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 8,
|
||||
}
|
||||
},
|
||||
"bread": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"description": "Fresh bread",
|
||||
"complexity": "medium",
|
||||
},
|
||||
"cake": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"description": "A delicious cake",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"milk_bucket": 3,
|
||||
"egg": 1,
|
||||
}
|
||||
},
|
||||
"cookie": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 2 wheat.",
|
||||
"Step 2: Get 1 cocoa bean from your inventory or other agents.",
|
||||
"Step 3: Go to the crafting table and combine the wheat and cocoa bean to craft a cookie."
|
||||
],
|
||||
"description": "Sweet cookies",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"cocoa_beans": 1,
|
||||
}
|
||||
},
|
||||
"pumpkin_pie": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 pumpkin and 1 sugar cane.",
|
||||
"Step 2: Get 1 egg from your inventory or other bots",
|
||||
"Step 3: Go to the crafting table and craft the sugar cane into sugar.",
|
||||
"Step 4: Go to the crafting table and combine the pumpkin, egg, and sugar to make a pumpkin pie."
|
||||
],
|
||||
"description": "Delicious pumpkin pie",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"egg": 1,
|
||||
}
|
||||
},
|
||||
|
||||
# Sweet Foods
|
||||
"golden_apple": {
|
||||
"recipe": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"description": "A magical golden apple",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"gold_ingots": 8,
|
||||
"apple": 1
|
||||
}
|
||||
},
|
||||
|
||||
# Special Foods
|
||||
"golden_carrot": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 carrot.",
|
||||
"Step 2: Go to the chest and collect gold ingots and convert them to gold nuggets.",
|
||||
"Step 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot."
|
||||
],
|
||||
"description": "A magical golden carrot",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": ["gold_ingots"]
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
chest_items = {
|
||||
"milk_bucket": 3,
|
||||
"egg": 16,
|
||||
"dandelion": 64,
|
||||
"cocao_beans": 64,
|
||||
"apple": 64,
|
||||
"gold_ingots": 8,
|
||||
"salmon": 64,
|
||||
"cod": 64,
|
||||
"kelp": 64,
|
||||
"dried_kelp": 64,
|
||||
"sweet_berries": 64,
|
||||
"honey_bottle": 1,
|
||||
"glow_berries": 64,
|
||||
"bowl": 1,
|
||||
"cooked_salmon": 1,
|
||||
"cooked_cod": 1,
|
||||
"oak_planks": 64,
|
||||
"iron_ingot": 64,
|
||||
}
|
||||
|
||||
|
||||
chest_items = [
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:egg', 16],
|
||||
['minecraft:dandelion', 64],
|
||||
['minecraft:sugar', 64],
|
||||
['minecraft:cocoa_beans', 64],
|
||||
['minecraft:apple', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:salmon', 64],
|
||||
['minecraft:cod', 64],
|
||||
['minecraft:kelp', 64],
|
||||
['minecraft:dried_kelp', 64],
|
||||
['minecraft:sweet_berries', 64],
|
||||
['minecraft:honey_bottle', 1],
|
||||
['minecraft:glow_berries', 64],
|
||||
['minecraft:bowl', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:cooked_salmon', 64],
|
||||
['minecraft:cooked_cod', 64],
|
||||
['minecraft:gold_ingot', 64],
|
||||
['minecraft:oak_planks', 64],
|
||||
['minecraft:iron_ingot', 64],
|
||||
['minecraft:milk_bucket', 1],
|
||||
['minecraft:milk_bucket', 1],
|
||||
]
|
||||
|
||||
def generate_task_id(task: Dict[str, Any]) -> str:
|
||||
"""
|
||||
Generate a standardized task ID based on target items and blocked access.
|
||||
|
||||
Format: multiagent_cooking_{quantities}_{blocked_info}
|
||||
Examples:
|
||||
- multiagent_cooking_1_cooked_rabbit
|
||||
- multiagent_cooking_1_cooked_rabbit_blocked_access_0
|
||||
- multiagent_cooking_1_cake_1_cookie_blocked_access_0_1
|
||||
|
||||
Args:
|
||||
task: Task dictionary with target and blocked_access_to_recipe information
|
||||
|
||||
Returns:
|
||||
Standardized task ID string
|
||||
"""
|
||||
# Generate the quantities part (e.g., "1_cake_1_cookie")
|
||||
quantities = []
|
||||
for item, count in sorted(task["target"].items()):
|
||||
quantities.append(f"{count}_{item}")
|
||||
|
||||
quantities_str = "_".join(quantities)
|
||||
|
||||
# Generate the blocked access part if any (e.g., "blocked_access_0_1")
|
||||
blocked_str = ""
|
||||
if task["blocked_access_to_recipe"]:
|
||||
# Sort to ensure consistent ordering
|
||||
sorted_blocked = sorted(task["blocked_access_to_recipe"])
|
||||
blocked_str = f"_blocked_access_{'_'.join(sorted_blocked)}"
|
||||
|
||||
# Combine everything
|
||||
return f"multiagent_cooking_{quantities_str}{blocked_str}"
|
||||
|
||||
def generate_hells_kitchen_task_id(task: Dict[str, Any]) -> str:
|
||||
"""
|
||||
Generate a standardized task ID for Hell's Kitchen tasks.
|
||||
|
||||
Format: multiagent_cooking_{quantities}_hells_kitchen
|
||||
Examples:
|
||||
- multiagent_cooking_cooked_mutton_cooked_beef_hells_kitchen
|
||||
|
||||
Args:
|
||||
task: Task dictionary with target information
|
||||
|
||||
Returns:
|
||||
Standardized task ID string
|
||||
"""
|
||||
# Generate the quantities part (e.g., "cooked_mutton_cooked_beef")
|
||||
quantities = "_".join(task["target"])
|
||||
|
||||
# Combine everything with hells_kitchen suffix
|
||||
return f"multiagent_cooking_{quantities}_hells_kitchen"
|
||||
|
||||
def generate_hells_kitchen_task(selected_items) -> Dict[str, Any]:
|
||||
"""Generate a single Hell's Kitchen task where agents have recipes for each other's items."""
|
||||
# Select two different items
|
||||
# selected_items = random.sample(list(COOKING_ITEMS.keys()), 2)
|
||||
|
||||
# Assign one item to each agent
|
||||
agent0_target = selected_items[0]
|
||||
agent1_target = selected_items[1]
|
||||
|
||||
# Combined target for the overall task as a list
|
||||
combined_target = [agent0_target, agent1_target]
|
||||
|
||||
# Get recipes for both items
|
||||
recipes = {}
|
||||
for item in selected_items:
|
||||
recipes[item] = COOKING_ITEMS[item]["recipe"]
|
||||
|
||||
# Create different goal strings for each agent
|
||||
goals = {}
|
||||
|
||||
# Agent 0 has the recipe for Agent 1's target item
|
||||
recipe_for_agent1 = "\n".join(recipes[selected_items[1]])
|
||||
goals["0"] = (
|
||||
f"You need to make {selected_items[0]}, but you don't have the recipe for it, your partner has it!\n\n"
|
||||
f"Your partner needs to make {selected_items[1]}. You have their recipe:\n"
|
||||
f"Recipe for {selected_items[1]}:\n{recipe_for_agent1}\n\n"
|
||||
f"You must communicate effectively to exchange recipe information and complete both dishes."
|
||||
f" Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
)
|
||||
|
||||
# Agent 1 has the recipe for Agent 0's target item
|
||||
recipe_for_agent0 = "\n".join(recipes[selected_items[0]])
|
||||
goals["1"] = (
|
||||
f"You need to make {selected_items[1]}, but you don't have the recipe for it, your partner has it!\n\n"
|
||||
f"Your partner needs to make {selected_items[0]}. You have their recipe:\n"
|
||||
f"Recipe for {selected_items[0]}:\n{recipe_for_agent0}\n\n"
|
||||
f"You must communicate effectively to exchange recipe information and complete both dishes."
|
||||
f" Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
)
|
||||
|
||||
# Create a Hell's Kitchen themed conversation starter
|
||||
conversation = (
|
||||
f"We need to make {selected_items[0]} and {selected_items[1]} together. You are supposed to make {selected_items[1]} and I am supposed to make {selected_items[0]}, "
|
||||
f"but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!"
|
||||
)
|
||||
|
||||
task_data = {
|
||||
"conversation": conversation,
|
||||
"agent_count": 2,
|
||||
"target": combined_target,
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": recipes,
|
||||
"blocked_access_to_recipe": [], # No blocked access - it's just switched
|
||||
"goal": goals,
|
||||
"task_type": "cooking" # Mark as Hell's Kitchen task
|
||||
}
|
||||
|
||||
# Generate a Hell's Kitchen task ID
|
||||
task_id = generate_hells_kitchen_task_id(task_data)
|
||||
|
||||
return {task_id: task_data}
|
||||
|
||||
def calculate_hells_kitchen_task_difficulty_metrics(task: Dict) -> Dict[str, Any]:
|
||||
"""Calculate detailed difficulty metrics for a Hell's Kitchen task."""
|
||||
# Get all recipes
|
||||
recipes = task["recipes"]
|
||||
|
||||
# Calculate recipe step metrics
|
||||
total_steps = sum(len(steps) for steps in recipes.values())
|
||||
max_steps_per_recipe = max(len(steps) for steps in recipes.values()) if recipes else 0
|
||||
|
||||
# Get number of target items
|
||||
num_unique_items = len(task["target"])
|
||||
|
||||
# Calculate overall difficulty score
|
||||
difficulty_score = 0
|
||||
|
||||
# Add score based on total steps
|
||||
if total_steps <= 4:
|
||||
step_difficulty = 1 # Easy
|
||||
elif total_steps <= 8:
|
||||
step_difficulty = 2 # Medium
|
||||
else:
|
||||
step_difficulty = 3 # Hard
|
||||
|
||||
difficulty_score += step_difficulty
|
||||
|
||||
# Add score based on number of items
|
||||
item_difficulty = num_unique_items
|
||||
difficulty_score += item_difficulty
|
||||
|
||||
# Hell's Kitchen tasks are inherently more difficult due to communication requirements
|
||||
# Add a communication difficulty factor
|
||||
difficulty_score += 1
|
||||
|
||||
# Determine final difficulty category
|
||||
if difficulty_score <= 3:
|
||||
difficulty_category = "easy"
|
||||
elif difficulty_score <= 5:
|
||||
difficulty_category = "medium"
|
||||
else:
|
||||
difficulty_category = "hard"
|
||||
|
||||
# Compile all metrics into a dictionary
|
||||
difficulty_metrics = {
|
||||
"total_recipe_steps": total_steps,
|
||||
"max_steps_per_recipe": max_steps_per_recipe,
|
||||
"unique_target_items": num_unique_items,
|
||||
"overall_difficulty_score": difficulty_score,
|
||||
"difficulty_category": difficulty_category
|
||||
}
|
||||
|
||||
return difficulty_metrics
|
||||
|
||||
def generate_maximum_hells_kitchen_tasks(
|
||||
num_train_tasks: int,
|
||||
num_test_tasks: int
|
||||
) -> Tuple[Dict[str, Dict], Dict[str, Dict]]:
|
||||
"""
|
||||
Generate as many Hell's Kitchen tasks as specified, without balancing difficulty.
|
||||
|
||||
Args:
|
||||
num_train_tasks: Exact number of training tasks to generate
|
||||
num_test_tasks: Exact number of test tasks to generate
|
||||
|
||||
Returns:
|
||||
Tuple of (train_tasks, test_tasks)
|
||||
"""
|
||||
# Get all available cooking items
|
||||
all_items = list(COOKING_ITEMS.keys())
|
||||
|
||||
# Fixed test items as specified in your original code
|
||||
hk_test_items = {"cooked_beef", "baked_potato", "cake", "golden_apple", "rabbit_stew", "bread"}
|
||||
|
||||
hk_train_items = set(all_items) - hk_test_items
|
||||
|
||||
hk_test_lst = list(hk_test_items)
|
||||
train_possible_combinations = itertools.combinations(hk_train_items, 2)
|
||||
# test_possible_combinations = [["bread", "golden_apple"], ["golden_apple", "rabbit_stew"], ["bread", "cake"],
|
||||
# ["baked_potato", "golden_apple"], ["baked_potato", "cake"], ["cooked_beef", "golden_apple"]]
|
||||
test_possible_combinations = itertools.combinations(hk_test_lst, 2)
|
||||
# Set fixed seed for consistent results
|
||||
random.seed(42)
|
||||
|
||||
# Generate tasks for training set
|
||||
train_tasks = {}
|
||||
for combination in train_possible_combinations:
|
||||
task = generate_hells_kitchen_task(combination)
|
||||
task_id, task_data = list(task.items())[0]
|
||||
|
||||
# Check if task uses valid items for train set
|
||||
task_items = set(task_data["target"])
|
||||
if task_items.issubset(hk_train_items):
|
||||
# Still calculate metrics for information but don't filter by them
|
||||
task_data["difficulty_metrics"] = calculate_hells_kitchen_task_difficulty_metrics(task_data)
|
||||
task_data["difficulty"] = task_data["difficulty_metrics"]["difficulty_category"]
|
||||
train_tasks[task_id] = task_data
|
||||
|
||||
# Generate tasks for test set
|
||||
test_tasks = {}
|
||||
for combination in test_possible_combinations:
|
||||
task = generate_hells_kitchen_task(combination)
|
||||
task_id, task_data = list(task.items())[0]
|
||||
|
||||
# Check if task uses valid items for test set
|
||||
task_items = set(task_data["target"])
|
||||
if task_items.issubset(hk_test_items):
|
||||
# Still calculate metrics for information but don't filter by them
|
||||
task_data["difficulty_metrics"] = calculate_hells_kitchen_task_difficulty_metrics(task_data)
|
||||
task_data["difficulty"] = task_data["difficulty_metrics"]["difficulty_category"]
|
||||
test_tasks[task_id] = task_data
|
||||
|
||||
return train_tasks, test_tasks
|
||||
|
||||
|
||||
|
||||
def analyze_task_split(train_tasks, test_tasks):
|
||||
"""Analyze and print statistics about the train/test split with detailed difficulty metrics."""
|
||||
# Count total tasks
|
||||
train_count = len(train_tasks)
|
||||
test_count = len(test_tasks)
|
||||
|
||||
# Count difficulty distribution by category
|
||||
train_difficulty = Counter(task["difficulty"] for task in train_tasks.values())
|
||||
test_difficulty = Counter(task["difficulty"] for task in test_tasks.values())
|
||||
|
||||
# Analyze quantitative difficulty metrics
|
||||
train_metrics = {
|
||||
"total_recipe_steps": [],
|
||||
"unique_target_items": [],
|
||||
"overall_difficulty_score": []
|
||||
}
|
||||
|
||||
test_metrics = {
|
||||
"total_recipe_steps": [],
|
||||
"unique_target_items": [],
|
||||
"overall_difficulty_score": []
|
||||
}
|
||||
|
||||
# Collect metrics from tasks
|
||||
for task in train_tasks.values():
|
||||
for metric in train_metrics:
|
||||
if metric in task["difficulty_metrics"]:
|
||||
train_metrics[metric].append(task["difficulty_metrics"][metric])
|
||||
|
||||
for task in test_tasks.values():
|
||||
for metric in test_metrics:
|
||||
if metric in task["difficulty_metrics"]:
|
||||
test_metrics[metric].append(task["difficulty_metrics"][metric])
|
||||
|
||||
# Calculate statistics for each metric
|
||||
train_stats = {}
|
||||
test_stats = {}
|
||||
|
||||
for metric in train_metrics:
|
||||
values = train_metrics[metric]
|
||||
if values:
|
||||
train_stats[metric] = {
|
||||
"min": min(values),
|
||||
"max": max(values),
|
||||
"mean": sum(values) / len(values),
|
||||
"median": sorted(values)[len(values)//2]
|
||||
}
|
||||
|
||||
for metric in test_metrics:
|
||||
values = test_metrics[metric]
|
||||
if values:
|
||||
test_stats[metric] = {
|
||||
"min": min(values),
|
||||
"max": max(values),
|
||||
"mean": sum(values) / len(values),
|
||||
"median": sorted(values)[len(values)//2]
|
||||
}
|
||||
|
||||
# Get items in each set
|
||||
train_items = set()
|
||||
test_items = set()
|
||||
|
||||
for task in train_tasks.values():
|
||||
train_items.update(task["target"])
|
||||
|
||||
for task in test_tasks.values():
|
||||
test_items.update(task["target"])
|
||||
|
||||
# Check for item overlap
|
||||
item_overlap = train_items.intersection(test_items)
|
||||
|
||||
# Compile the results
|
||||
result = {
|
||||
"train_count": train_count,
|
||||
"test_count": test_count,
|
||||
"train_difficulty_categories": dict(train_difficulty),
|
||||
"test_difficulty_categories": dict(test_difficulty),
|
||||
"train_difficulty_metrics": train_stats,
|
||||
"test_difficulty_metrics": test_stats,
|
||||
"train_items": list(train_items),
|
||||
"test_items": list(test_items),
|
||||
"item_overlap": list(item_overlap),
|
||||
"is_valid_items_split": len(item_overlap) == 0
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
hk_train_tasks, hk_test_tasks = generate_maximum_hells_kitchen_tasks(
|
||||
num_train_tasks=90,
|
||||
num_test_tasks=30
|
||||
)
|
||||
|
||||
# Save Hell's Kitchen tasks to separate files
|
||||
with open("hells_kitchen_train_tasks.json", "w") as f:
|
||||
json.dump(hk_train_tasks, f, indent=2)
|
||||
|
||||
with open("mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen_full.json", "w") as f:
|
||||
json.dump(hk_test_tasks, f, indent=2)
|
||||
|
||||
# Print counts
|
||||
print(f"Generated {len(hk_train_tasks)} training tasks")
|
||||
print(f"Generated {len(hk_test_tasks)} test tasks")
|
||||
|
||||
# You can still analyze the distribution if interested
|
||||
hk_analysis = analyze_task_split(hk_train_tasks, hk_test_tasks)
|
||||
print("\nHell's Kitchen Tasks Analysis:")
|
||||
print(json.dumps(hk_analysis, indent=2))
|
38
tasks/cooking_tasks/human_ai/1_agent_1_human.json
Normal file
38
tasks/cooking_tasks/human_ai/1_agent_1_human.json
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"multiagent_cooking_bread_golden_apple": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"agent_count": 1,
|
||||
"human_count": 1,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, golden_apple, ",
|
||||
"usernames": [
|
||||
"izzycw"
|
||||
]
|
||||
}
|
||||
}
|
461
tasks/cooking_tasks/make_collaboration_required_cooking_task.py
Normal file
461
tasks/cooking_tasks/make_collaboration_required_cooking_task.py
Normal file
|
@ -0,0 +1,461 @@
|
|||
import random
|
||||
import json
|
||||
from typing import Dict, List, Any, Tuple, Set
|
||||
from collections import Counter, defaultdict
|
||||
import os
|
||||
import numpy as np
|
||||
import itertools
|
||||
|
||||
# Define your COOKING_ITEMS dictionary here
|
||||
# This is where you should put your complete COOKING_ITEMS dictionary
|
||||
COOKING_ITEMS = {
|
||||
# Cooked Meats
|
||||
"cooked_mutton": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the mutton."
|
||||
],
|
||||
"description": "Cooked mutton meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 1,
|
||||
}
|
||||
},
|
||||
"cooked_beef": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
],
|
||||
"description": "Cooked beef meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 1,
|
||||
}
|
||||
},
|
||||
"cooked_porkchop": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a pig and pick up 1 porkchop that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the porkchop."
|
||||
],
|
||||
"description": "Cooked porkchop",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 1,
|
||||
}
|
||||
},
|
||||
"cooked_chicken": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a chicken and pick up 1 raw chicken that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the raw chicken."
|
||||
],
|
||||
"description": "Cooked chicken meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 1,
|
||||
}
|
||||
},
|
||||
"cooked_rabbit": {
|
||||
"recipe": [
|
||||
"Step 1: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to furnace and use it to cook the raw rabbit."
|
||||
],
|
||||
"description": "Cooked rabbit meat",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 1,
|
||||
}
|
||||
},
|
||||
|
||||
# Soups and Stews
|
||||
"beetroot_soup": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 6 beetroot.",
|
||||
"Step 2: From your inventory or other agents get a bowl.",
|
||||
"Step 3: Go to the crafting table and combine the 6 beetroot and 1 bowl to make beetroot soup."
|
||||
],
|
||||
"description": "A hearty beetroot soup",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
}
|
||||
},
|
||||
"mushroom_stew": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
|
||||
"Step 2: From your inventory or other agents get a bowl.",
|
||||
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
|
||||
],
|
||||
"description": "A warm mushroom stew",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
}
|
||||
},
|
||||
"rabbit_stew": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"description": "A hearty rabbit stew",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
}
|
||||
},
|
||||
"suspicious_stew": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom, 1 brown mushroom.",
|
||||
"Step 2: From your inventory or other agents get a bowl and 1 dandelion",
|
||||
"Step 3: Go to the crafting table and combine the mushrooms, dandelion, and bowl to make suspicious stew."
|
||||
],
|
||||
"description": "A mysterious stew with special effects",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"bowl": 1,
|
||||
"dandelion": 1,
|
||||
}
|
||||
},
|
||||
|
||||
# Baked Goods
|
||||
"baked_potato": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"description": "A simple baked potato",
|
||||
"complexity": "easy",
|
||||
"required_chest_items": {
|
||||
"coal": 1,
|
||||
}
|
||||
},
|
||||
"bread": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"description": "Fresh bread",
|
||||
"complexity": "medium"
|
||||
},
|
||||
"cake": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"description": "A delicious cake",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"milk_bucket": 3,
|
||||
"egg": 1,
|
||||
}
|
||||
},
|
||||
"cookie": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 2 wheat.",
|
||||
"Step 2: Get 1 cocoa bean from your inventory or other agents.",
|
||||
"Step 3: Go to the crafting table and combine the wheat and cocoa bean to craft a cookie."
|
||||
],
|
||||
"description": "Sweet cookies",
|
||||
"complexity": "medium",
|
||||
"required_chest_items": {
|
||||
"cocoa_beans": 1,
|
||||
}
|
||||
},
|
||||
"pumpkin_pie": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 pumpkin and 1 sugar cane.",
|
||||
"Step 2: Get 1 egg from your inventory or other bots",
|
||||
"Step 3: Go to the crafting table and craft the sugar cane into sugar.",
|
||||
"Step 4: Go to the crafting table and combine the pumpkin, egg, and sugar to make a pumpkin pie."
|
||||
],
|
||||
"description": "Delicious pumpkin pie",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"egg": 1,
|
||||
}
|
||||
},
|
||||
|
||||
# Sweet Foods
|
||||
"golden_apple": {
|
||||
"recipe": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"description": "A magical golden apple",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"gold_ingot": 8,
|
||||
"apple": 1
|
||||
}
|
||||
},
|
||||
|
||||
# Special Foods
|
||||
"golden_carrot": {
|
||||
"recipe": [
|
||||
"Step 1: Go to the farm and collect 1 carrot.",
|
||||
"Step 2: Go to the chest and collect gold ingots and convert them to gold nuggets.",
|
||||
"Step 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot."
|
||||
],
|
||||
"description": "A magical golden carrot",
|
||||
"complexity": "hard",
|
||||
"required_chest_items": {
|
||||
"gold_ingot": 8,
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
chest_items = {
|
||||
"milk_bucket": 3,
|
||||
"egg": 16,
|
||||
"dandelion": 64,
|
||||
"cocoa_beans": 64,
|
||||
"apple": 64,
|
||||
"gold_ingot": 8,
|
||||
"salmon": 64,
|
||||
"cod": 64,
|
||||
"kelp": 64,
|
||||
"dried_kelp": 64,
|
||||
"sweet_berries": 64,
|
||||
"honey_bottle": 1,
|
||||
"glow_berries": 64,
|
||||
"bowl": 1,
|
||||
"cooked_salmon": 1,
|
||||
"cooked_cod": 1,
|
||||
"oak_planks": 64,
|
||||
"iron_ingot": 64,
|
||||
}
|
||||
|
||||
def make_initial_inventory(items, num_agents):
|
||||
"""
|
||||
Evenly split inventory between the agents for a given set of items and number of agents
|
||||
"""
|
||||
inventory = {}
|
||||
for item in items:
|
||||
if item in COOKING_ITEMS:
|
||||
cooking_info = COOKING_ITEMS[item]
|
||||
for chest_item, quantity in cooking_info.get("required_chest_items", {}).items():
|
||||
inventory[chest_item] = inventory.get(chest_item, 0) + quantity
|
||||
else:
|
||||
print(f"item {item} not found in COOKING_ITEMS.")
|
||||
initial_inventory = {}
|
||||
for i in range(num_agents):
|
||||
initial_inventory[i] = {}
|
||||
items_lst = list(inventory.keys())
|
||||
for i in range(len(items_lst)):
|
||||
item_counts = count_items_in_inventory(initial_inventory)
|
||||
agent_num = np.argmin(item_counts)
|
||||
if inventory[items_lst[i]] == 1:
|
||||
initial_inventory[agent_num][items_lst[i]] = 1
|
||||
elif inventory[items_lst[i]] > 1:
|
||||
div = inventory[items_lst[i]] // num_agents
|
||||
rem = inventory[items_lst[i]] % num_agents
|
||||
for j in range(num_agents):
|
||||
initial_inventory[j][items_lst[i]] = div
|
||||
j = 0
|
||||
while j < rem:
|
||||
initial_inventory[j][items_lst[i]] += 1
|
||||
j += 1
|
||||
return initial_inventory
|
||||
|
||||
def count_items_in_inventory(inventory):
|
||||
item_counts = []
|
||||
for key in inventory.keys():
|
||||
agent_inventory = inventory[key]
|
||||
total_items = 0
|
||||
for item in agent_inventory.keys():
|
||||
total_items += agent_inventory[item]
|
||||
item_counts.append(total_items)
|
||||
return item_counts
|
||||
|
||||
def make_all_possible_tasks(items: List[str], num_items:int, num_agents: int, output_file) -> List[Dict[str, Any]]:
|
||||
combinations = itertools.combinations(items, num_items)
|
||||
already_completed = [["bread", "golden_apple"], ["golden_apple", "rabbit_stew"], ["bread", "cake"], ["baked_potato", "golden_apple"], ["baked_potato", "cake"], ["cooked_beef", "golden_apple"]]
|
||||
remaining_combinations = set(combinations) - set(tuple(sorted(comb)) for comb in already_completed)
|
||||
tasks = {}
|
||||
for combination in remaining_combinations:
|
||||
task = {}
|
||||
task["type"] = "cooking"
|
||||
task["recipes"] = {}
|
||||
task["agent_count"] = num_agents
|
||||
task["target"] = {}
|
||||
for item in combination:
|
||||
task["target"][item] = 1
|
||||
for item in combination:
|
||||
if item in COOKING_ITEMS:
|
||||
task["recipes"][item] = COOKING_ITEMS[item]["recipe"]
|
||||
else:
|
||||
print(f"item {item} not found in COOKING_ITEMS.")
|
||||
initial_inventory = make_initial_inventory(combination, num_agents)
|
||||
task["initial_inventory"] = initial_inventory
|
||||
task["goal"] = {}
|
||||
goal_str = f"Collaborate with other agents around you to make "
|
||||
conversation_str = f"Let's collaborate to make "
|
||||
for item in combination:
|
||||
goal_str += item + ", "
|
||||
conversation_str += item + ", "
|
||||
recipe_goal_str = goal_str + "The recipes are as follows:\n"
|
||||
for item in combination:
|
||||
recipe_goal_str += f"Recipe for {item}:\n{COOKING_ITEMS[item]['recipe']}\n"
|
||||
for i in range(num_agents):
|
||||
task["goal"][i] = recipe_goal_str
|
||||
task["conversation"] = conversation_str
|
||||
partial_plan_task = task.copy()
|
||||
partial_plan_task["goal"] = {}
|
||||
for i in range(num_agents):
|
||||
partial_plan_task["goal"][i] = goal_str
|
||||
partial_plan_task["goal"][0] = recipe_goal_str
|
||||
task_id = "multiagent_cooking"
|
||||
for item in combination:
|
||||
task_id += "_" + item
|
||||
# tasks[task_id] = task
|
||||
tasks[task_id + "_partial_plan"] = partial_plan_task
|
||||
with open(output_file, 'w') as f:
|
||||
json.dump(tasks, f, indent=4)
|
||||
|
||||
|
||||
|
||||
def reconfigure_tasks(task_path, new_task_path, num_agents=None, hells_kitchen=False):
|
||||
with open(task_path, 'r') as f:
|
||||
tasks = json.load(f)
|
||||
task_ids = tasks.keys()
|
||||
new_tasks = {}
|
||||
for task_id in task_ids:
|
||||
task = tasks[task_id]
|
||||
if task["type"] == "cooking":
|
||||
items = task["recipes"].keys()
|
||||
new_recipes = {}
|
||||
inventory = {}
|
||||
for item in items:
|
||||
if item in COOKING_ITEMS:
|
||||
cooking_info = COOKING_ITEMS[item]
|
||||
new_recipes[item] = cooking_info["recipe"]
|
||||
for chest_item, quantity in cooking_info.get("required_chest_items", {}).items():
|
||||
inventory[chest_item] = inventory.get(chest_item, 0) + quantity
|
||||
else:
|
||||
print(f"item {item} not found in COOKING_ITEMS.")
|
||||
task["recipes"] = new_recipes
|
||||
# assign inventory to the agents
|
||||
if num_agents is None:
|
||||
num_agents = task.get("agent_count", 0) + task.get("human_count", 0)
|
||||
else:
|
||||
task["agent_count"] = num_agents
|
||||
initial_inventory = {}
|
||||
for i in range(num_agents):
|
||||
initial_inventory[i] = {}
|
||||
items_lst = list(inventory.keys())
|
||||
for i in range(len(items_lst)):
|
||||
item_counts = count_items_in_inventory(initial_inventory)
|
||||
agent_num = np.argmin(item_counts)
|
||||
if inventory[items_lst[i]] == 1:
|
||||
initial_inventory[agent_num][items_lst[i]] = 1
|
||||
elif inventory[items_lst[i]] > 1:
|
||||
div = inventory[items_lst[i]] // num_agents
|
||||
rem = inventory[items_lst[i]] % num_agents
|
||||
for j in range(num_agents):
|
||||
initial_inventory[j][items_lst[i]] = div
|
||||
j = 0
|
||||
while j < rem:
|
||||
initial_inventory[j][items_lst[i]] += 1
|
||||
j += 1
|
||||
# initial_inventory[agent_num][items_lst[i]] = inventory[items_lst[i]]
|
||||
item_counts = count_items_in_inventory(initial_inventory)
|
||||
required_collab = True
|
||||
for i in range(len(item_counts)):
|
||||
if item_counts[i] == 0:
|
||||
# don't add the task if collaboration isn't required
|
||||
required_collab = False
|
||||
if not required_collab:
|
||||
print(f"task {task_id} doesn't require collaboration.")
|
||||
continue
|
||||
task["initial_inventory"] = initial_inventory
|
||||
print(inventory)
|
||||
print(initial_inventory)
|
||||
if not hells_kitchen:
|
||||
goals = task.get("goal", {})
|
||||
new_goals = {}
|
||||
blocked_access = task.get("blocked_access_to_recipe", [])
|
||||
print(blocked_access)
|
||||
for key, goal in goals.items():
|
||||
initial_goal = goal.split("\n")[0]
|
||||
if str(key) not in blocked_access:
|
||||
for item, recipe in new_recipes.items():
|
||||
initial_goal += f"Recipe for {item}:\n{recipe}"
|
||||
new_goals[key] = initial_goal
|
||||
task["goal"] = new_goals
|
||||
new_tasks[task_id] = task
|
||||
# check each of the recipes and replace with the new recipe
|
||||
|
||||
os.makedirs(os.path.dirname(new_task_path), exist_ok=True)
|
||||
with open(new_task_path, 'w') as f:
|
||||
json.dump(new_tasks, f, indent=4)
|
||||
|
||||
def block_recipe_in_tasks(task_path, new_task_path, num_agents=None):
|
||||
with open(task_path, 'r') as f:
|
||||
tasks = json.load(f)
|
||||
task_ids = tasks.keys()
|
||||
for task_id in task_ids:
|
||||
task = tasks[task_id]
|
||||
task["blocked_access_to_recipe"] = ["0"]
|
||||
items = task["recipes"].keys()
|
||||
goal_str = "Collaborate with other agents around you to make " + ", ".join(items) + "."
|
||||
task["goal"]["0"] = goal_str
|
||||
with open(new_task_path, 'w') as f:
|
||||
json.dump(tasks, f, indent=4)
|
||||
|
||||
|
||||
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/2_agent.json", 2)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/3_agent.json", 3)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/4_agent.json", 4)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/3_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_3_items/5_agent.json", 5)
|
||||
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent.json", 2)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/3_agent.json", 3)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/4_agent.json", 4)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/2_agent_cooking_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/5_agent.json", 5)
|
||||
#
|
||||
|
||||
test_items = ["bread", "golden_apple", "rabbit_stew", "cake", "baked_potato", "cooked_beef"]
|
||||
# block_recipe_in_tasks("mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_block_recipe.json", 2)
|
||||
# make_all_possible_tasks(test_items, 2, 2, "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_blocked_action_remaining.json")
|
||||
|
||||
reconfigure_tasks("mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen_full.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen_full_inventory.json", 2)
|
||||
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_block_recipe.json", 2)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/test_tasks/hells_kitchen_test_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_test_2_items/2_agent_hells_kitchen.json", 2, True)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/2_agent_block_recipe.json", 2, False)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/hells_kitchen_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/2_agent_hells_kitchen.json", 2, True)
|
||||
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/3_agent.json", 3)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/4_agent.json", 4)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train_2_items/5_agent.json", 5)
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/equal_load_test_tasks/3_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test/3_agent.json")
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/equal_load_test_tasks/4_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test/4_agent.json")
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/equal_load_test_tasks/5_agent.json", "mindcraft/tasks/cooking_tasks/require_collab_test/5_agent.json")
|
||||
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/2_agent_cooking_train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train/2_agent.json")
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks.json", "mindcraft/tasks/cooking_tasks/require_collab_train/2_agent_blocked_access.json")
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks_3_agents.json", "mindcraft/tasks/cooking_tasks/require_collab_train/3_agent.json")
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks_4_agents.json", "mindcraft/tasks/cooking_tasks/require_collab_train/4_agent.json")
|
||||
# reconfigure_tasks("mindcraft/tasks/cooking_tasks/train_tasks/train_tasks_5_agents.json", "mindcraft/tasks/cooking_tasks/require_collab_train/5_agent.json")
|
|
@ -0,0 +1,206 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 1,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 1,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"bowl": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 1,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 1,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"coal": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
231
tasks/cooking_tasks/require_collab_test_2_items/2_agent.json
Normal file
231
tasks/cooking_tasks/require_collab_test_2_items/2_agent.json
Normal file
|
@ -0,0 +1,231 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 5,
|
||||
"gold_ingot": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"coal": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1,
|
||||
"coal": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,243 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, bread.",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew.",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, bread.",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, golden_apple.",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 5,
|
||||
"gold_ingot": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, cake.",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef.",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"coal": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1,
|
||||
"coal": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,544 @@
|
|||
{
|
||||
"multiagent_cooking_bread_golden_apple_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, golden_apple, ",
|
||||
"1": "Collaborate with other agents around you to make bread, golden_apple, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, golden_apple, "
|
||||
},
|
||||
"multiagent_cooking_bread_rabbit_stew_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, rabbit_stew, ",
|
||||
"1": "Collaborate with other agents around you to make bread, rabbit_stew, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, rabbit_stew, "
|
||||
},
|
||||
"multiagent_cooking_bread_cake_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, cake, ",
|
||||
"1": "Collaborate with other agents around you to make bread, cake, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, cake, "
|
||||
},
|
||||
"multiagent_cooking_bread_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, baked_potato, ",
|
||||
"1": "Collaborate with other agents around you to make bread, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_bread_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, cooked_beef, ",
|
||||
"1": "Collaborate with other agents around you to make bread, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_rabbit_stew_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"bowl": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew, ",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, rabbit_stew, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, rabbit_stew, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cake_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cake, ",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cake, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cake, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, ",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, ",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cake_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cake, ",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cake, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cake, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, ",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, ",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_cake_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, baked_potato, ",
|
||||
"1": "Collaborate with other agents around you to make cake, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_cake_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, cooked_beef, ",
|
||||
"1": "Collaborate with other agents around you to make cake, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_baked_potato_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, ",
|
||||
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
|
||||
}
|
||||
}
|
|
@ -0,0 +1,290 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, bread.",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. \n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 11500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Go to the furnace and bake the potato.",
|
||||
"Step 3: Go to the chest and grab a bowl",
|
||||
"Step 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 6: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew.",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. \n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Go to the furnace and bake the potato.\nStep 3: Go to the chest and grab a bowl\nStep 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 6: Go to the furnace and cook the raw rabbit.\nStep 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: Go to the chest and grab 3 milk buckets.",
|
||||
"Step 3: Go to the chest and grab an egg.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, bread.",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. \n\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: Go to the chest and grab 3 milk buckets.\nStep 3: Go to the chest and grab an egg.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.\n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, golden_apple.",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. \n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato.\n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make baked_potato, rabbit_stew.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Go to the furnace and bake the potato.",
|
||||
"Step 3: Go to the chest and grab a bowl",
|
||||
"Step 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 6: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, rabbit_stew.",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 rabbit_stew. \n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato.\n\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Go to the furnace and bake the potato.\nStep 3: Go to the chest and grab a bowl\nStep 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 6: Go to the furnace and cook the raw rabbit.\nStep 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make rabbit_stew, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Go to the furnace and bake the potato.",
|
||||
"Step 3: Go to the chest and grab a bowl",
|
||||
"Step 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 6: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, bread.",
|
||||
"1": "Collaborate with agents around you to make 1 rabbit_stew, 1 bread. \n\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Go to the furnace and bake the potato.\nStep 3: Go to the chest and grab a bowl\nStep 5: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 6: Go to the furnace and cook the raw rabbit.\nStep 7: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.\n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_bread": {
|
||||
"conversation": "Let's work together to make bread, baked_potato.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, baked_potato.",
|
||||
"1": "Collaborate with agents around you to make 1 bread, 1 baked_potato. \n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: Go to the chest and grab 3 milk buckets.",
|
||||
"Step 3: Go to the chest and grab an egg.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, cake.",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. \n\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Go to the furnace and bake the potato.\n\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: Go to the chest and grab 3 milk buckets.\nStep 3: Go to the chest and grab an egg.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Go to the chest and collect 1 apple and 8 gold ingots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef.",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. \n\nRecipe for golden_apple:\nStep 1: Go to the chest and collect 1 apple and 8 gold ingots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nRecipe for cooked_beef:\nStep 1: Kill a cow and pick up 1 beef that is dropped.\nStep 2: Go to furnace and use it to cook the beef."
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cooked_beef": {
|
||||
"conversation": "Let's work together to make bread, cooked_beef.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [
|
||||
"0"
|
||||
],
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, cooked_beef.",
|
||||
"1": "Collaborate with agents around you to make 1 bread, 1 cooked_beef. \n\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nRecipe for cooked_beef:\nStep 1: Kill a cow and pick up 1 beef that is dropped.\nStep 2: Go to furnace and use it to cook the beef."
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,438 @@
|
|||
{
|
||||
"multiagent_cooking_rabbit_stew_cake_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cake, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cake, "
|
||||
},
|
||||
"multiagent_cooking_cake_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make cake, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_cake_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make cake, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_bread_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cake_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cake, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cake, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_bread_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_baked_potato_cooked_beef_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_baked_potato_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_bread_rabbit_stew_partial_plan": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, rabbit_stew, "
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, rabbit_stew, "
|
||||
}
|
||||
}
|
|
@ -0,0 +1,544 @@
|
|||
{
|
||||
"multiagent_cooking_bread_golden_apple": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, golden_apple, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, golden_apple, "
|
||||
},
|
||||
"multiagent_cooking_bread_rabbit_stew": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, rabbit_stew, "
|
||||
},
|
||||
"multiagent_cooking_bread_cake": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, cake, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, cake, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, cake, "
|
||||
},
|
||||
"multiagent_cooking_bread_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_bread_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_rabbit_stew": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"bowl": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, rabbit_stew, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, rabbit_stew, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, rabbit_stew, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cake": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cake, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cake": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cake, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_cake_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_cake_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_baked_potato_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
|
||||
}
|
||||
}
|
|
@ -0,0 +1,438 @@
|
|||
{
|
||||
"multiagent_cooking_golden_apple_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, baked_potato, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, baked_potato, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_bread_rabbit_stew": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, rabbit_stew, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, rabbit_stew, "
|
||||
},
|
||||
"multiagent_cooking_bread_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, baked_potato, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, baked_potato, "
|
||||
},
|
||||
"multiagent_cooking_baked_potato_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make baked_potato, cooked_beef, The recipes are as follows:\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make baked_potato, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_cake_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make cake, cooked_beef, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cake": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cake, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cake, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cooked_beef, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"rabbit_stew": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make rabbit_stew, cooked_beef, The recipes are as follows:\nRecipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make rabbit_stew, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cake": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n",
|
||||
"1": "Collaborate with other agents around you to make golden_apple, cake, The recipes are as follows:\nRecipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make golden_apple, cake, "
|
||||
},
|
||||
"multiagent_cooking_bread_cooked_beef": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"bread": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n",
|
||||
"1": "Collaborate with other agents around you to make bread, cooked_beef, The recipes are as follows:\nRecipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']\nRecipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make bread, cooked_beef, "
|
||||
},
|
||||
"multiagent_cooking_cake_baked_potato": {
|
||||
"type": "cooking",
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
},
|
||||
"goal": {
|
||||
"0": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n",
|
||||
"1": "Collaborate with other agents around you to make cake, baked_potato, The recipes are as follows:\nRecipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']\nRecipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']\n"
|
||||
},
|
||||
"conversation": "Let's collaborate to make cake, baked_potato, "
|
||||
}
|
||||
}
|
|
@ -0,0 +1,286 @@
|
|||
{
|
||||
"multiagent_cooking_bread_golden_apple_hells_kitchen": {
|
||||
"conversation": "We need to make bread and golden_apple together. You are supposed to make golden_apple and I am supposed to make bread, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"bread",
|
||||
"golden_apple"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make bread, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
|
||||
"1": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make bread. You have their recipe:\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 4,
|
||||
"max_steps_per_recipe": 2,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 4,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_golden_apple_rabbit_stew_hells_kitchen": {
|
||||
"conversation": "We need to make golden_apple and rabbit_stew together. You are supposed to make rabbit_stew and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"golden_apple",
|
||||
"rabbit_stew"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make rabbit_stew. You have their recipe:\nRecipe for rabbit_stew:\nStep 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 4: Go to the furnace and bake the potato.\nStep 5: From your inventory or other agents get a bowl\nStep 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.\nStep 7: Go to the furnace and cook the raw rabbit.\nStep 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
|
||||
"1": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 10,
|
||||
"max_steps_per_recipe": 8,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_bread_cake_hells_kitchen": {
|
||||
"conversation": "We need to make bread and cake together. You are supposed to make cake and I am supposed to make bread, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"bread",
|
||||
"cake"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make bread, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make cake. You have their recipe:\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: From your inventory or other agents get 3 milk buckets (already filled with milk).\nStep 3: Get an egg from your inventory or other agents.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
|
||||
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make bread. You have their recipe:\nRecipe for bread:\nStep 1: Go to the farm and collect 3 wheat.\nStep 2: Go to the crafting table and use the wheat to craft bread.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 7,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
"multiagent_cooking_baked_potato_golden_apple_hells_kitchen": {
|
||||
"conversation": "We need to make baked_potato and golden_apple together. You are supposed to make golden_apple and I am supposed to make baked_potato, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"baked_potato",
|
||||
"golden_apple"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
|
||||
"1": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make baked_potato. You have their recipe:\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 2: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 6,
|
||||
"max_steps_per_recipe": 4,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1,
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1,
|
||||
"gold_ingot": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_baked_potato_cake_hells_kitchen": {
|
||||
"conversation": "We need to make baked_potato and cake together. You are supposed to make cake and I am supposed to make baked_potato, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"baked_potato",
|
||||
"cake"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make cake. You have their recipe:\nRecipe for cake:\nStep 1: Go to the farm and collect 3 wheat, 2 sugar cane.\nStep 2: From your inventory or other agents get 3 milk buckets (already filled with milk).\nStep 3: Get an egg from your inventory or other agents.\nStep 4: Go to the crafting table and craft the sugarcane into sugar.\nStep 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
|
||||
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make baked_potato. You have their recipe:\nRecipe for baked_potato:\nStep 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 2: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 9,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_cooked_beef_golden_apple_hells_kitchen": {
|
||||
"conversation": "We need to make cooked_beef and golden_apple together. You are supposed to make golden_apple and I am supposed to make cooked_beef, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"cooked_beef",
|
||||
"golden_apple"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make golden_apple. You have their recipe:\nRecipe for golden_apple:\nStep 1: Get 1 apple and 8 gold ingots from your inventory or other bots.\nStep 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking.",
|
||||
"1": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!\n\nYour partner needs to make cooked_beef. You have their recipe:\nRecipe for cooked_beef:\nStep 1: Kill a cow and pick up 1 beef that is dropped.\nStep 2: Get coal from your inventory or other agents.\nStep 3: Put coal in the furnace\nStep 4: Go to furnace and use it to cook the beef.\n\nYou must communicate effectively to exchange recipe information and complete both dishes. Note: You can only guide your partner with recipe steps. You cannot help with ingredient collection or cooking."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 6,
|
||||
"max_steps_per_recipe": 4,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"coal": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1,
|
||||
"coal": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,579 @@
|
|||
{
|
||||
"multiagent_cooking_golden_apple_bread_hells_kitchen": {
|
||||
"conversation": "We need to make golden_apple and bread together. You are supposed to make bread and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"golden_apple",
|
||||
"bread"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "You need to make bread, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 4,
|
||||
"max_steps_per_recipe": 2,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 4,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cake_hells_kitchen": {
|
||||
"conversation": "We need to make golden_apple and cake together. You are supposed to make cake and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"golden_apple",
|
||||
"cake"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 7,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_golden_apple_rabbit_stew_hells_kitchen": {
|
||||
"conversation": "We need to make golden_apple and rabbit_stew together. You are supposed to make rabbit_stew and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"golden_apple",
|
||||
"rabbit_stew"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"1": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 10,
|
||||
"max_steps_per_recipe": 8,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"bowl": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_golden_apple_baked_potato_hells_kitchen": {
|
||||
"conversation": "We need to make golden_apple and baked_potato together. You are supposed to make baked_potato and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"golden_apple",
|
||||
"baked_potato"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']",
|
||||
"1": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 6,
|
||||
"max_steps_per_recipe": 4,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_golden_apple_cooked_beef_hells_kitchen": {
|
||||
"conversation": "We need to make golden_apple and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make golden_apple, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"golden_apple",
|
||||
"cooked_beef"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_apple, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 6,
|
||||
"max_steps_per_recipe": 4,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 4,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 4,
|
||||
"coal": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_bread_cake_hells_kitchen": {
|
||||
"conversation": "We need to make bread and cake together. You are supposed to make cake and I am supposed to make bread, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"bread",
|
||||
"cake"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make bread, but you don't have the recipe for it, your partner has it!Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 7,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_cake_rabbit_stew_hells_kitchen": {
|
||||
"conversation": "We need to make cake and rabbit_stew together. You are supposed to make rabbit_stew and I am supposed to make cake, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"cake",
|
||||
"rabbit_stew"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"1": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 13,
|
||||
"max_steps_per_recipe": 8,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_cake_baked_potato_hells_kitchen": {
|
||||
"conversation": "We need to make cake and baked_potato together. You are supposed to make baked_potato and I am supposed to make cake, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"cake",
|
||||
"baked_potato"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']",
|
||||
"1": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 9,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_cake_cooked_beef_hells_kitchen": {
|
||||
"conversation": "We need to make cake and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make cake, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"cake",
|
||||
"cooked_beef"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make cake, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 9,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2,
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_baked_potato_hells_kitchen": {
|
||||
"conversation": "We need to make rabbit_stew and baked_potato together. You are supposed to make baked_potato and I am supposed to make rabbit_stew, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"rabbit_stew",
|
||||
"baked_potato"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']",
|
||||
"1": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 12,
|
||||
"max_steps_per_recipe": 8,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_rabbit_stew_cooked_beef_hells_kitchen": {
|
||||
"conversation": "We need to make rabbit_stew and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make rabbit_stew, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"rabbit_stew",
|
||||
"cooked_beef"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make rabbit_stew, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 12,
|
||||
"max_steps_per_recipe": 8,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 6,
|
||||
"difficulty_category": "hard"
|
||||
},
|
||||
"difficulty": "hard",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_baked_potato_cooked_beef_hells_kitchen": {
|
||||
"conversation": "We need to make baked_potato and cooked_beef together. You are supposed to make cooked_beef and I am supposed to make baked_potato, but I only have YOUR recipe and you only have access to MY recipe! Let's exchange information and get cooking!",
|
||||
"agent_count": 2,
|
||||
"target": [
|
||||
"baked_potato",
|
||||
"cooked_beef"
|
||||
],
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make baked_potato, but you don't have the recipe for it, your partner has it!Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "You need to make cooked_beef, but you don't have the recipe for it, your partner has it!Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 8,
|
||||
"max_steps_per_recipe": 4,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,231 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"bowl": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"gold_ingot": 5,
|
||||
"apple": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 5,
|
||||
"gold_ingot": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 5,
|
||||
"milk_bucket": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 2,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 5,
|
||||
"coal": 5
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 5,
|
||||
"apple": 1,
|
||||
"coal": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
234
tasks/cooking_tasks/require_collab_test_2_items/3_agent.json
Normal file
234
tasks/cooking_tasks/require_collab_test_2_items/3_agent.json
Normal file
|
@ -0,0 +1,234 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 3,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 3,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 3,
|
||||
"bowl": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
},
|
||||
"2": {
|
||||
"milk_bucket": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 3,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 3,
|
||||
"coal": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 3,
|
||||
"apple": 1,
|
||||
"coal": 3
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 3,
|
||||
"coal": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,252 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 3,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 3
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 3,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 3,
|
||||
"bowl": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
},
|
||||
"2": {
|
||||
"milk_bucket": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 3
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 3,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 2
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 3,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 3,
|
||||
"coal": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 3,
|
||||
"apple": 1,
|
||||
"coal": 3
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 3,
|
||||
"coal": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
254
tasks/cooking_tasks/require_collab_test_2_items/4_agent.json
Normal file
254
tasks/cooking_tasks/require_collab_test_2_items/4_agent.json
Normal file
|
@ -0,0 +1,254 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2,
|
||||
"bowl": 1
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"2": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"3": {
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"3": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
|
||||
},
|
||||
"3": {
|
||||
"coal": 3,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1,
|
||||
"coal": 3
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,272 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2,
|
||||
"bowl": 1
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"2": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"3": {
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"3": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
|
||||
},
|
||||
"3": {
|
||||
"coal": 3,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 1500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1,
|
||||
"coal": 3
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,185 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"1": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"2": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"3": {
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"3": {
|
||||
"coal": 3,
|
||||
"gold_ingot": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"1": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"2": {
|
||||
"coal": 3,
|
||||
"milk_bucket": 1
|
||||
|
||||
},
|
||||
"3": {
|
||||
"coal": 3,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 4,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"1": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']"
|
||||
},
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1,
|
||||
"coal": 3
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
273
tasks/cooking_tasks/require_collab_test_2_items/5_agent.json
Normal file
273
tasks/cooking_tasks/require_collab_test_2_items/5_agent.json
Normal file
|
@ -0,0 +1,273 @@
|
|||
{
|
||||
"multiagent_cooking_2_1_bread_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, bread.",
|
||||
"agent_count": 5,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 bread. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"4": {
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_golden_apple_1_rabbit_stew": {
|
||||
"conversation": "Let's work together to make golden_apple, rabbit_stew.",
|
||||
"agent_count": 5,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"rabbit_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"rabbit_stew": [
|
||||
"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to the furnace and bake the potato.",
|
||||
"Step 5: From your inventory or other agents get a bowl",
|
||||
"Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.",
|
||||
"Step 7: Go to the furnace and cook the raw rabbit.",
|
||||
"Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 rabbit_stew. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for rabbit_stew:\n[\"Step 1: Go to the farm and collect 1 carrot, 1 potato, and 1 brown mushroom (search for 'potatoes' (not 'potato').\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to the furnace and bake the potato.', 'Step 5: From your inventory or other agents get a bowl', 'Step 6: Kill a rabbit and pick up 1 raw rabbit that is dropped.', 'Step 7: Go to the furnace and cook the raw rabbit.', 'Step 8: Go to the crafting table and combine the cooked rabbit, baked potato, carrot, brown mushroom, and bowl to make rabbit stew.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"apple": 1
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2,
|
||||
"bowl": 1
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"4": {
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_bread_1_cake": {
|
||||
"conversation": "Let's work together to make cake, bread.",
|
||||
"agent_count": 5,
|
||||
"target": {
|
||||
"cake": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
],
|
||||
"bread": [
|
||||
"Step 1: Go to the farm and collect 3 wheat.",
|
||||
"Step 2: Go to the crafting table and use the wheat to craft bread."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 cake, 1 bread. Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']Recipe for bread:\n['Step 1: Go to the farm and collect 3 wheat.', 'Step 2: Go to the crafting table and use the wheat to craft bread.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"milk_bucket": 1,
|
||||
"egg": 1
|
||||
},
|
||||
"2": {
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"3": {
|
||||
"egg": 1
|
||||
},
|
||||
"4": {
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_golden_apple": {
|
||||
"conversation": "Let's work together to make baked_potato, golden_apple.",
|
||||
"agent_count": 5,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"golden_apple": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 golden_apple. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 2,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"coal": 2,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"2": {
|
||||
"coal": 2,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"3": {
|
||||
"coal": 2,
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"4": {
|
||||
"coal": 2,
|
||||
"apple": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_baked_potato_1_cake": {
|
||||
"conversation": "Let's work together to make baked_potato, cake.",
|
||||
"agent_count": 5,
|
||||
"target": {
|
||||
"baked_potato": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"baked_potato": [
|
||||
"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 2: Go to the furnace and bake the potato."
|
||||
],
|
||||
"cake": [
|
||||
"Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.",
|
||||
"Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).",
|
||||
"Step 3: Get an egg from your inventory or other agents.",
|
||||
"Step 4: Go to the crafting table and craft the sugarcane into sugar.",
|
||||
"Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 baked_potato, 1 cake. Recipe for baked_potato:\n[\"Step 1: Go to the farm and collect 1 potato (search for 'potatoes' (not 'potato')).\", 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 2: Go to the furnace and bake the potato.']Recipe for cake:\n['Step 1: Go to the farm and collect 3 wheat, 2 sugar cane.', 'Step 2: From your inventory or other agents get 3 milk buckets (already filled with milk).', 'Step 3: Get an egg from your inventory or other agents.', 'Step 4: Go to the crafting table and craft the sugarcane into sugar.', 'Step 5: Go to the crafting table and combine all ingredients (3 wheat, 2 sugar, 1 egg, and milk bucket) to make a cake.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"coal": 2,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"1": {
|
||||
"coal": 2,
|
||||
"milk_bucket": 1
|
||||
},
|
||||
"2": {
|
||||
"coal": 2,
|
||||
"milk_bucket": 1
|
||||
|
||||
},
|
||||
"3": {
|
||||
"coal": 2,
|
||||
"egg": 1
|
||||
},
|
||||
"4": {
|
||||
"coal": 2,
|
||||
"egg": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"multiagent_cooking_2_1_cooked_beef_1_golden_apple": {
|
||||
"conversation": "Let's work together to make golden_apple, cooked_beef.",
|
||||
"agent_count": 5,
|
||||
"target": {
|
||||
"golden_apple": 1,
|
||||
"cooked_beef": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 500,
|
||||
"recipes": {
|
||||
"golden_apple": [
|
||||
"Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.",
|
||||
"Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple."
|
||||
],
|
||||
"cooked_beef": [
|
||||
"Step 1: Kill a cow and pick up 1 beef that is dropped.",
|
||||
"Step 2: Get coal from your inventory or other agents.",
|
||||
"Step 3: Put coal in the furnace",
|
||||
"Step 4: Go to furnace and use it to cook the beef."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": "Collaborate with agents around you to make 1 golden_apple, 1 cooked_beef. Recipe for golden_apple:\n['Step 1: Get 1 apple and 8 gold ingots from your inventory or other bots.', 'Step 2: Go to the crafting table and surround the apple with the gold ingots to create a golden apple.']Recipe for cooked_beef:\n['Step 1: Kill a cow and pick up 1 beef that is dropped.', 'Step 2: Get coal from your inventory or other agents.', 'Step 3: Put coal in the furnace', 'Step 4: Go to furnace and use it to cook the beef.']",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 2
|
||||
},
|
||||
"2": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 2
|
||||
},
|
||||
"3": {
|
||||
"gold_ingot": 2,
|
||||
"coal": 2
|
||||
},
|
||||
"4": {
|
||||
"apple": 1,
|
||||
"coal": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue