mirror of
https://github.com/kolbytn/mindcraft.git
synced 2025-08-04 06:15:32 +02:00
Merge branch 'constructionTaskRevision' of https://github.com/icwhite/mindcraft into constructionTaskRevision
merge
This commit is contained in:
commit
a61c6da134
56 changed files with 104057 additions and 3622 deletions
|
@ -76,7 +76,7 @@ def analyze_json_file(file_path):
|
|||
if 'turns' in data and isinstance(data['turns'], list):
|
||||
for turn in reversed(data['turns']): # Check turns from the end
|
||||
if turn.get('role') == 'system' and isinstance(turn.get('content'), str):
|
||||
if "Task successful ended with code : 2" in turn['content'] or "Task ended in score: 1" in turn["content"]:
|
||||
if "Task successful ended with code : 2" in turn['content'] or "Task ended with score : 1" in turn["content"] or "Task ended in score: 1" in turn["content"]:
|
||||
return True
|
||||
return False
|
||||
except FileNotFoundError:
|
||||
|
@ -155,7 +155,7 @@ def aggregate_results(local_folders):
|
|||
success = int(extract_result(folder_path))
|
||||
successful += success
|
||||
|
||||
if "missing" in folder_path:
|
||||
if "missing" in folder_path and not is_base(folder_path):
|
||||
missing_successful += success
|
||||
missing_total += 1
|
||||
if is_base(folder_path):
|
||||
|
|
39
analyze_construction_tasks.py
Normal file
39
analyze_construction_tasks.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
import boto3
|
||||
import os
|
||||
import json
|
||||
import re
|
||||
from botocore.exceptions import ClientError
|
||||
import json
|
||||
import argparse
|
||||
from tqdm import tqdm
|
||||
import glob
|
||||
|
||||
|
||||
def analyze_json_file(file_path):
|
||||
"""
|
||||
Analyzes a single JSON file to extract the task outcome.
|
||||
|
||||
Args:
|
||||
file_path (str): Path to the JSON file.
|
||||
|
||||
Returns:
|
||||
str or None: The task outcome string if found, otherwise None.
|
||||
"""
|
||||
try:
|
||||
with open(file_path, 'r') as f:
|
||||
data = json.load(f)
|
||||
if 'turns' in data and isinstance(data['turns'], list):
|
||||
for turn in reversed(data['turns']): # Check turns from the end
|
||||
if turn.get('role') == 'system' and isinstance(turn.get('content'), str):
|
||||
if "Task successful ended with code : 2" in turn['content'] or "Task ended in score: 1" in turn["content"]:
|
||||
return True
|
||||
return False
|
||||
except FileNotFoundError:
|
||||
print(f"Error: File not found: {file_path}")
|
||||
return None
|
||||
except json.JSONDecodeError:
|
||||
print(f"Error: Invalid JSON format in: {file_path}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"An unexpected error occurred while processing {file_path}: {e}")
|
||||
return None
|
222
analyze_cooking_tasks.py
Normal file
222
analyze_cooking_tasks.py
Normal file
|
@ -0,0 +1,222 @@
|
|||
import os
|
||||
import json
|
||||
import re
|
||||
from collections import defaultdict
|
||||
|
||||
def extract_cooking_items(exp_dir):
|
||||
"""Extract cooking items from experiment directory name."""
|
||||
# Remove prefix and blocked access part
|
||||
clean_name = re.sub(r'^multiagent_cooking_', '', exp_dir)
|
||||
clean_name = re.sub(r'_blocked_access_[0-9_]+$', '', clean_name)
|
||||
|
||||
# Extract individual items
|
||||
items = []
|
||||
for item_match in re.finditer(r'([0-9]+)_([a-zA-Z_]+)', clean_name):
|
||||
count = int(item_match.group(1))
|
||||
item = item_match.group(2)
|
||||
# Remove trailing underscores to fix the item name issue
|
||||
item = item.rstrip('_')
|
||||
items.append(item)
|
||||
|
||||
return items
|
||||
|
||||
def analyze_experiments(root_dir):
|
||||
# Store results by number of blocked agents
|
||||
blocked_access_results = defaultdict(lambda: {
|
||||
"success": 0,
|
||||
"total": 0,
|
||||
"cake_success": 0,
|
||||
"cake_total": 0,
|
||||
"non_cake_success": 0,
|
||||
"non_cake_total": 0
|
||||
})
|
||||
|
||||
# Store results by cooking item
|
||||
cooking_item_results = defaultdict(lambda: {
|
||||
"success": 0,
|
||||
"total": 0
|
||||
})
|
||||
|
||||
# Keep track of all unique cooking items
|
||||
all_cooking_items = set()
|
||||
|
||||
# Get a list of all experiment directories
|
||||
experiment_dirs = [d for d in os.listdir(root_dir) if os.path.isdir(os.path.join(root_dir, d))
|
||||
and d.startswith("multiagent_cooking_")]
|
||||
|
||||
for exp_dir in experiment_dirs:
|
||||
# Extract cooking items
|
||||
cooking_items = extract_cooking_items(exp_dir)
|
||||
|
||||
# Add to unique items set
|
||||
all_cooking_items.update(cooking_items)
|
||||
|
||||
# Check if experiment involves cake
|
||||
has_cake = any(item == "cake" for item in cooking_items)
|
||||
|
||||
# Extract blocked access information from directory name
|
||||
blocked_access_match = re.search(r'blocked_access_([0-9_]+)$', exp_dir)
|
||||
|
||||
if blocked_access_match:
|
||||
blocked_access_str = blocked_access_match.group(1)
|
||||
# Count how many agents have blocked access
|
||||
num_blocked_agents = len(blocked_access_str.split('_'))
|
||||
blocked_key = f"{num_blocked_agents} agent(s)"
|
||||
else:
|
||||
# No agents blocked
|
||||
blocked_key = "0 agent(s)"
|
||||
|
||||
# Check if the task was successful
|
||||
is_successful = False
|
||||
full_exp_path = os.path.join(root_dir, exp_dir)
|
||||
|
||||
# Get all JSON files in the experiment directory
|
||||
agent_files = [f for f in os.listdir(full_exp_path) if f.endswith(".json")]
|
||||
|
||||
# Check each agent file for success information
|
||||
for agent_file in agent_files:
|
||||
agent_file_path = os.path.join(full_exp_path, agent_file)
|
||||
|
||||
try:
|
||||
with open(agent_file_path, 'r') as f:
|
||||
agent_data = json.load(f)
|
||||
|
||||
# Check for success in the turns data
|
||||
if "turns" in agent_data:
|
||||
for turn in agent_data["turns"]:
|
||||
if turn.get("role") == "system" and "content" in turn:
|
||||
if isinstance(turn["content"], str) and "Task ended with score : 1" in turn["content"]:
|
||||
is_successful = True
|
||||
break
|
||||
|
||||
# If we found success, no need to check other files
|
||||
if is_successful:
|
||||
break
|
||||
|
||||
except (json.JSONDecodeError, IOError) as e:
|
||||
print(f"Error reading {agent_file_path}: {e}")
|
||||
# Continue to check other agent files instead of failing
|
||||
continue
|
||||
|
||||
# Update cooking item results
|
||||
for item in cooking_items:
|
||||
cooking_item_results[item]["total"] += 1
|
||||
if is_successful:
|
||||
cooking_item_results[item]["success"] += 1
|
||||
|
||||
# Update the appropriate blocked access counters
|
||||
# First update the category-specific counters
|
||||
if has_cake:
|
||||
blocked_access_results[blocked_key]["cake_total"] += 1
|
||||
if is_successful:
|
||||
blocked_access_results[blocked_key]["cake_success"] += 1
|
||||
else:
|
||||
blocked_access_results[blocked_key]["non_cake_total"] += 1
|
||||
if is_successful:
|
||||
blocked_access_results[blocked_key]["non_cake_success"] += 1
|
||||
|
||||
# Only count non-cake experiments in the main totals
|
||||
blocked_access_results[blocked_key]["total"] += 1
|
||||
if is_successful:
|
||||
blocked_access_results[blocked_key]["success"] += 1
|
||||
|
||||
return blocked_access_results, cooking_item_results, all_cooking_items
|
||||
|
||||
def print_blocked_results(results):
|
||||
print("\nExperiment Results by Number of Agents with Blocked Access (Excluding Cake Experiments):")
|
||||
print("=" * 80)
|
||||
print(f"{'Blocked Agents':<15} | {'Success Rate':<15} | {'Success/Total':<15} | {'Cake Tasks':<15} | {'Non-Cake Tasks':<15}")
|
||||
print("-" * 80)
|
||||
|
||||
# Calculate totals
|
||||
total_success = 0
|
||||
total_experiments = 0
|
||||
total_cake = 0
|
||||
total_non_cake = 0
|
||||
|
||||
# Sort by number of blocked agents
|
||||
for key in sorted(results.keys(), key=lambda x: int(x.split()[0])):
|
||||
success = results[key]["success"]
|
||||
total = results[key]["total"]
|
||||
cake_total = results[key]["cake_total"]
|
||||
non_cake_total = results[key]["non_cake_total"]
|
||||
|
||||
# Verify that non_cake_total matches total
|
||||
if non_cake_total != total:
|
||||
print(f"Warning: Non-cake total ({non_cake_total}) doesn't match the total ({total}) for {key}")
|
||||
|
||||
total_success += success
|
||||
total_experiments += total
|
||||
total_cake += cake_total
|
||||
total_non_cake += non_cake_total
|
||||
|
||||
success_rate = (success / total * 100) if total > 0 else 0
|
||||
|
||||
print(f"{key:<15} | {success_rate:>6.2f}% | {success}/{total:<13} | {cake_total:<15} | {non_cake_total:<15}")
|
||||
|
||||
# Calculate overall success rate (excluding cake experiments)
|
||||
overall_success_rate = (total_success / total_experiments * 100) if total_experiments > 0 else 0
|
||||
|
||||
print("-" * 80)
|
||||
print(f"{'Overall':<15} | {overall_success_rate:>6.2f}% | {total_success}/{total_experiments:<13} | {total_cake:<15} | {total_non_cake:<15}")
|
||||
|
||||
# Print cake experiment details
|
||||
print("\nCake Experiment Details:")
|
||||
print("=" * 60)
|
||||
print(f"{'Blocked Agents':<15} | {'Success Rate':<15} | {'Success/Total':<15}")
|
||||
print("-" * 60)
|
||||
|
||||
cake_total_success = 0
|
||||
cake_total_experiments = 0
|
||||
|
||||
for key in sorted(results.keys(), key=lambda x: int(x.split()[0])):
|
||||
cake_success = results[key]["cake_success"]
|
||||
cake_total = results[key]["cake_total"]
|
||||
|
||||
cake_total_success += cake_success
|
||||
cake_total_experiments += cake_total
|
||||
|
||||
cake_success_rate = (cake_success / cake_total * 100) if cake_total > 0 else 0
|
||||
|
||||
print(f"{key:<15} | {cake_success_rate:>6.2f}% | {cake_success}/{cake_total}")
|
||||
|
||||
cake_overall_success_rate = (cake_total_success / cake_total_experiments * 100) if cake_total_experiments > 0 else 0
|
||||
|
||||
print("-" * 60)
|
||||
print(f"{'Overall':<15} | {cake_overall_success_rate:>6.2f}% | {cake_total_success}/{cake_total_experiments}")
|
||||
|
||||
def print_cooking_items(cooking_items):
|
||||
print("\nUnique Cooking Items Found:")
|
||||
print("=" * 60)
|
||||
print(", ".join(sorted(cooking_items)))
|
||||
print(f"Total unique items: {len(cooking_items)}")
|
||||
|
||||
def print_item_results(item_results):
|
||||
print("\nExperiment Results by Cooking Item:")
|
||||
print("=" * 60)
|
||||
print(f"{'Cooking Item':<20} | {'Success Rate':<15} | {'Success/Total':<15}")
|
||||
print("-" * 60)
|
||||
|
||||
# Sort by item name
|
||||
for item in sorted(item_results.keys()):
|
||||
success = item_results[item]["success"]
|
||||
total = item_results[item]["total"]
|
||||
success_rate = (success / total * 100) if total > 0 else 0
|
||||
|
||||
print(f"{item:<20} | {success_rate:>6.2f}% | {success}/{total}")
|
||||
|
||||
print("-" * 60)
|
||||
|
||||
def main():
|
||||
# Update this path to your experiments directory
|
||||
experiments_root = "../results/llama_70b_hells_kitchen_cooking_tasks"
|
||||
|
||||
print(f"Analyzing experiments in: {os.path.abspath(experiments_root)}")
|
||||
blocked_results, item_results, unique_items = analyze_experiments(experiments_root)
|
||||
|
||||
print_blocked_results(blocked_results)
|
||||
print_cooking_items(unique_items)
|
||||
print_item_results(item_results)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -8,6 +8,111 @@ import re
|
|||
import sys
|
||||
import os
|
||||
import time
|
||||
import filecmp
|
||||
import json
|
||||
import glob
|
||||
import socket
|
||||
|
||||
from tqdm import tqdm
|
||||
import boto3
|
||||
|
||||
BLOCKED_ACTIONS_COOKING = [
|
||||
'!activate', '!attackPlayer', '!checkBlueprint', '!checkBlueprintLevel',
|
||||
'!clearChat', '!clearFurnace', '!consume', '!craftable', '!discard', '!endConversation',
|
||||
'!endGoal', '!entities', '!equip', '!followPlayer', '!getBlueprint', '!getBlueprintLevel',
|
||||
'!goToBed', '!help', '!modes', '!moveAway', '!newAction', '!placeHere', '!putInChest',
|
||||
'!restart', '!setMode', '!stay', '!stfu', '!stop'
|
||||
]
|
||||
BLOCKED_ACTIONS_CRAFTING = [
|
||||
'!activate', '!attack', '!attackPlayer', '!checkBlueprint', '!checkBlueprintLevel',
|
||||
'!clearChat', '!clearFurnace', '!consume', '!craftable', '!discard', '!endConversation',
|
||||
'!endGoal', '!entities', '!followPlayer', '!getBlueprint', '!getBlueprintLevel',
|
||||
'!goToBed', '!help', '!modes', '!newAction', '!putInChest', '!restart',
|
||||
'!searchForEntity', '!setMode', '!stay', '!stfu', '!stop', '!takeFromChest',
|
||||
'!viewChest'
|
||||
]
|
||||
BLOCKED_ACTIONS_CONSTRUCTION = [
|
||||
'!activate', '!attackPlayer', '!clearChat', '!clearFurnace', '!collectBlocks',
|
||||
'!consume', '!craftable', '!discard', '!endConversation', '!endGoal', '!entities',
|
||||
'!equip', '!followPlayer', '!getBlueprint', '!getBlueprintLevel', '!goToBed',
|
||||
'!help', '!modes', '!moveAway', '!newAction', '!placeHere', '!putInChest',
|
||||
'!restart', '!searchForBlock', '!searchForEntity', '!setMode', '!stay', '!stfu',
|
||||
'!stop', '!takeFromChest', '!viewChest'
|
||||
]
|
||||
|
||||
def analyze_json_file(file_path):
|
||||
"""
|
||||
Analyzes a single JSON file to extract the task outcome.
|
||||
|
||||
Args:
|
||||
file_path (str): Path to the JSON file.
|
||||
|
||||
Returns:
|
||||
str or None: The task outcome string if found, otherwise None.
|
||||
"""
|
||||
try:
|
||||
with open(file_path, 'r') as f:
|
||||
data = json.load(f)
|
||||
if 'turns' in data and isinstance(data['turns'], list):
|
||||
for turn in reversed(data['turns']): # Check turns from the end
|
||||
if turn.get('role') == 'system' and isinstance(turn.get('content'), str):
|
||||
if "Task successful ended with code : 2" in turn['content'] or "Task ended with score : 1" in turn["content"] or "Task ended in score: 1" in turn["content"]:
|
||||
return True
|
||||
return False
|
||||
except FileNotFoundError:
|
||||
print(f"Error: File not found: {file_path}")
|
||||
return None
|
||||
except json.JSONDecodeError:
|
||||
print(f"Error: Invalid JSON format in: {file_path}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"An unexpected error occurred while processing {file_path}: {e}")
|
||||
return None
|
||||
|
||||
def extract_result(folder_path):
|
||||
folder_name = os.path.basename(folder_path)
|
||||
json_files = glob.glob(os.path.join(folder_path, "*.json"))
|
||||
# assert len(json_files) == 2, f"Expected 2 json files in {folder_name}, found {len(json_files)}"
|
||||
|
||||
if not json_files:
|
||||
return None
|
||||
else:
|
||||
outcome = False
|
||||
for json_file in json_files:
|
||||
outcome = analyze_json_file(json_file)
|
||||
if outcome:
|
||||
return True
|
||||
return False
|
||||
|
||||
def aggregate_results(local_folders):
|
||||
"""
|
||||
Aggregates the analysis results for each folder.
|
||||
|
||||
Args:
|
||||
local_folders (list): List of local folder paths containing the JSON files.
|
||||
|
||||
Returns:
|
||||
dict: A dictionary where keys are folder names and values are the aggregated outcomes.
|
||||
"""
|
||||
aggregated_data = {}
|
||||
|
||||
total = 0
|
||||
successful = 0
|
||||
for folder_path in tqdm(local_folders):
|
||||
folder_name = os.path.basename(folder_path)
|
||||
|
||||
try:
|
||||
result = extract_result(folder_path)
|
||||
if result is not None:
|
||||
total += 1
|
||||
successful += int(result)
|
||||
except Exception as e:
|
||||
print(f"Error processing {folder_name}: {e}")
|
||||
|
||||
return {
|
||||
"total": total,
|
||||
"successful": successful,
|
||||
}
|
||||
|
||||
def read_settings(file_path):
|
||||
"""Read and parse the settings.js file to get agent profiles."""
|
||||
|
@ -71,35 +176,8 @@ def check_task_completion(agents):
|
|||
except (FileNotFoundError, json.JSONDecodeError) as e:
|
||||
print(f"Error reading memory for agent {agent}: {e}")
|
||||
continue
|
||||
|
||||
return False # Default to failure if no conclusive result found
|
||||
|
||||
def update_results_file(task_id, success_count, total_count, time_taken, experiment_results, results_filename):
|
||||
"""Update the results file with current success ratio and time taken."""
|
||||
success_ratio = success_count / total_count
|
||||
|
||||
with open(results_filename, 'w') as f: # 'w' mode overwrites the file each time
|
||||
f.write(f"Task ID: {task_id}\n")
|
||||
f.write(f"Experiments completed: {total_count}\n")
|
||||
f.write(f"Successful experiments: {success_count}\n")
|
||||
f.write(f"Success ratio: {success_ratio:.2f}\n")
|
||||
f.write(f"Time taken for last experiment: {time_taken:.2f} seconds\n")
|
||||
|
||||
# Write individual experiment results
|
||||
for i, result in enumerate(experiment_results, 1):
|
||||
f.write(f"Experiment {i}: {'Success' if result['success'] else 'Failure'}, Time taken: {result['time_taken']:.2f} seconds\n")
|
||||
|
||||
# Write aggregated metrics
|
||||
total_time = sum(result['time_taken'] for result in experiment_results)
|
||||
f.write(f"\nAggregated metrics:\n")
|
||||
f.write(f"Total experiments: {total_count}\n")
|
||||
f.write(f"Total successful experiments: {success_count}\n")
|
||||
f.write(f"Overall success ratio: {success_ratio:.2f}\n")
|
||||
f.write(f"Total time taken: {total_time:.2f} seconds\n")
|
||||
f.write(f"Average time per experiment: {total_time / total_count:.2f} seconds\n")
|
||||
f.write(f"Last updated: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
|
||||
|
||||
|
||||
def set_environment_variable_tmux_session(session_name, key, value):
|
||||
"""Set an environment variable for the current process."""
|
||||
subprocess.run(["tmux", "send-keys", "-t", session_name, f"export {key}={value}", "C-m"])
|
||||
|
@ -114,9 +192,10 @@ def launch_parallel_experiments(task_path,
|
|||
s3=False,
|
||||
bucket_name="mindcraft-experiments",
|
||||
template_profile="profiles/tasks/collab_profile.json",
|
||||
world_name="Forest",
|
||||
insecure_coding=False,
|
||||
url="http://127.0.0.1:8000/v1"):
|
||||
url="http://127.0.0.1:8000/v1",
|
||||
max_messages=15,
|
||||
num_examples=2):
|
||||
|
||||
with open(task_path, 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
|
@ -124,15 +203,33 @@ def launch_parallel_experiments(task_path,
|
|||
|
||||
task_ids = json_data.keys()
|
||||
|
||||
task_type = json_data[list(task_ids)[0]]["type"]
|
||||
|
||||
|
||||
# split the task_ids into num_parallel groups
|
||||
task_ids = list(task_ids)
|
||||
task_ids_split = [task_ids[i::num_parallel] for i in range(num_parallel)]
|
||||
|
||||
if task_type == "cooking":
|
||||
world_name = "Superflat"
|
||||
elif task_type == "techtree":
|
||||
world_name = "Forest"
|
||||
elif task_type == "construction":
|
||||
world_name = "Superflat"
|
||||
|
||||
servers = create_server_files("./server_data/", num_parallel, world_name=world_name)
|
||||
date_time = datetime.now().strftime("%m-%d_%H-%M")
|
||||
experiments_folder = f"experiments/{exp_name}_{date_time}"
|
||||
exp_name = f"{exp_name}_{date_time}"
|
||||
|
||||
split_task_path = task_path.split("/")
|
||||
if len(split_task_path) > 1:
|
||||
task_path_name = split_task_path[-2]
|
||||
else:
|
||||
task_path_name = "tasks"
|
||||
|
||||
s3_path = f"{bucket_name}/{task_type}/{model}/{task_path_name}/{exp_name}"
|
||||
|
||||
# start wandb
|
||||
os.makedirs(experiments_folder, exist_ok=True)
|
||||
for i, server in enumerate(servers):
|
||||
|
@ -149,8 +246,38 @@ def launch_parallel_experiments(task_path,
|
|||
api=api,
|
||||
insecure_coding=insecure_coding,
|
||||
num_agents=num_agents,
|
||||
url=url)
|
||||
url=url,
|
||||
task_type=task_type,
|
||||
s3_path=s3_path,
|
||||
max_messages=max_messages,
|
||||
num_examples=num_examples)
|
||||
time.sleep(5)
|
||||
|
||||
total_num_tasks = len(task_ids)
|
||||
total_num_experiments = total_num_tasks * num_exp
|
||||
total_run = 0
|
||||
while total_run < total_num_experiments:
|
||||
results = aggregate_results([f"{experiments_folder}/{task_id}" for task_id in task_ids])
|
||||
total_run = results["total"]
|
||||
print(f"Total tasks run: {total_run}/{total_num_experiments}")
|
||||
print(results)
|
||||
results["exp_name"] = exp_name
|
||||
results["template_profile"] = template_profile
|
||||
results["model"] = model
|
||||
results["api"] = api
|
||||
results["num_agents"] = num_agents
|
||||
results["task_path"] = task_path
|
||||
results["task_type"] = task_type
|
||||
results["max_messages"] = max_messages
|
||||
results["num_examples"] = num_examples
|
||||
with open(f"{experiments_folder}/results.txt", "w") as file:
|
||||
file.write(str(results))
|
||||
if s3:
|
||||
cmd = f"aws s3 cp {experiments_folder}/results.txt s3://{s3_path}/results.txt"
|
||||
print(cmd)
|
||||
subprocess.run(cmd.split())
|
||||
|
||||
time.sleep(60)
|
||||
|
||||
def launch_server_experiment(task_path,
|
||||
task_ids,
|
||||
|
@ -165,7 +292,12 @@ def launch_server_experiment(task_path,
|
|||
bucket_name="mindcraft-experiments",
|
||||
template_profile="profiles/tasks/collab_profile.json",
|
||||
insecure_coding=False,
|
||||
url="http://127.0.0.1:8000/v1"):
|
||||
url="http://127.0.0.1:8000/v1",
|
||||
task_type="techtree",
|
||||
s3_path="",
|
||||
max_messages=15,
|
||||
num_examples=2):
|
||||
|
||||
"""
|
||||
Launch a Minecraft server and run experiments on it.
|
||||
@param task_path: Path to the task file
|
||||
|
@ -194,7 +326,9 @@ def launch_server_experiment(task_path,
|
|||
models = [model] * 2
|
||||
apis = [api] * 2
|
||||
else:
|
||||
agent_names = [f"Andy_{session_name}", f"Jill_{session_name}", f"Bob_{session_name}"]
|
||||
agent_names = []
|
||||
for i in range(num_agents):
|
||||
agent_names.append(f"Agent_{i}_{session_name}")
|
||||
models = [model] * 3
|
||||
apis = [api] * 3
|
||||
make_profiles(agent_names, models, apis, template_profile=template_profile, url=url)
|
||||
|
@ -205,29 +339,38 @@ def launch_server_experiment(task_path,
|
|||
agent_profiles_str = f"'[\"{agent_profiles[0]}\"]'"
|
||||
elif num_agents == 2:
|
||||
agent_profiles_str = f"'[\"{agent_profiles[0]}\", \"{agent_profiles[1]}\"]'"
|
||||
else:
|
||||
agent_profiles_str = "'["
|
||||
for agent in agent_profiles[:-1]:
|
||||
agent_profiles_str += f'\"{agent}\", '
|
||||
agent_profiles_str += f"\"{agent_profiles[-1]}\"]'"
|
||||
print(agent_profiles_str)
|
||||
launch_world(server_path, session_name="server_" + session_name, agent_names=agent_names)
|
||||
launch_world(server_path, session_name="server_" + session_name, agent_names=agent_names, port=server_port)
|
||||
|
||||
subprocess.run(['tmux', 'new-session', '-d', '-s', session_name], check=True)
|
||||
|
||||
|
||||
|
||||
# set environment variables
|
||||
set_environment_variable_tmux_session(session_name, "MINECRAFT_PORT", server_port)
|
||||
set_environment_variable_tmux_session(session_name, "MINDSERVER_PORT", mindserver_port)
|
||||
set_environment_variable_tmux_session(session_name, "PROFILES", agent_profiles_str)
|
||||
set_environment_variable_tmux_session(session_name, "MAX_MESSAGES", str(max_messages))
|
||||
set_environment_variable_tmux_session(session_name, "NUM_EXAMPLES", str(num_examples))
|
||||
if insecure_coding:
|
||||
set_environment_variable_tmux_session(session_name, "INSECURE_CODING", "true")
|
||||
|
||||
# you need to add the bots to the world first before you can add them as op
|
||||
cmd = f"node main.js --task_path example_tasks.json --task_id debug_multi_agent_timeout"
|
||||
|
||||
subprocess.run(["tmux", "send-keys", "-t", session_name, cmd, "C-m"])
|
||||
|
||||
time.sleep(20)
|
||||
make_ops(agent_names, session_name)
|
||||
|
||||
# add the bots as op
|
||||
for agent in agent_names:
|
||||
subprocess.run(["tmux", "send-keys", "-t", "server_" + session_name, f"/op {agent}", "C-m"])
|
||||
time.sleep(1)
|
||||
# op_script_content = "sleep 5\n\op @p" * 20
|
||||
# op_script_file = f"./tmp/op_script_{session_name}.sh"
|
||||
# make_script_file_and_run(op_script_content, "server_" + session_name, op_script_file)
|
||||
if task_type == "cooking":
|
||||
set_environment_variable_tmux_session(session_name, "BLOCKED_ACTIONS", BLOCKED_ACTIONS_COOKING)
|
||||
elif task_type == "techtree":
|
||||
set_environment_variable_tmux_session(session_name, "BLOCKED_ACTIONS", BLOCKED_ACTIONS_CRAFTING)
|
||||
elif task_type == "construction":
|
||||
set_environment_variable_tmux_session(session_name, "BLOCKED_ACTIONS", BLOCKED_ACTIONS_CONSTRUCTION)
|
||||
|
||||
script_content = ""
|
||||
for task_id in task_ids:
|
||||
|
@ -250,8 +393,7 @@ def launch_server_experiment(task_path,
|
|||
script_content += f"{cp_cmd}\n"
|
||||
script_content += "sleep 1\n"
|
||||
if s3:
|
||||
s3_cmd = f"aws s3 cp {agent_file_path} s3://{bucket_name}/{exp_name}/{task_id}/{agent}_{_}.json"
|
||||
s3_upload_experiment = f"aws s3 cp {agent_file_path} s3://{bucket_name}/{exp_name}/{task_id}/{agent}_{_}.json"
|
||||
s3_cmd = f"aws s3 cp {agent_file_path} s3://{s3_path}/{task_id}/{agent}_{_}.json"
|
||||
script_content += f"echo 'Uploading {agent_file_path} to S3'\n"
|
||||
script_content += f"echo '{s3_cmd}'\n"
|
||||
script_content += f"{s3_cmd}\n"
|
||||
|
@ -259,27 +401,58 @@ def launch_server_experiment(task_path,
|
|||
script_content += f"sleep 10\n"
|
||||
if s3:
|
||||
for agent in agent_names:
|
||||
script_content += f"aws s3 cp bots/{agent} s3://{bucket_name}/{exp_name}/bots/{agent} --recursive\n"
|
||||
script_content += f"aws s3 cp bots/{agent} s3://{s3_path}/bots/{agent} --recursive\n"
|
||||
|
||||
# Create a temporary shell script file
|
||||
script_file = f"./tmp/experiment_script_{session_name}.sh"
|
||||
make_script_file_and_run(script_content, session_name, script_file)
|
||||
|
||||
script_dir = os.path.dirname(script_file)
|
||||
def make_ops(agent_names, session_name):
|
||||
"""Make the agents operators in the Minecraft world."""
|
||||
print('Making agents operators...')
|
||||
|
||||
cmd = f"node main.js --task_path example_tasks.json --task_id debug_{len(agent_names)}_agent_timeout"
|
||||
|
||||
subprocess.run(["tmux", "send-keys", "-t", session_name, cmd, "C-m"])
|
||||
|
||||
time.sleep(30)
|
||||
|
||||
subprocess.run(["tmux", "send-keys", "-t", "server_" + session_name, f"/op @a", "C-m"])
|
||||
|
||||
agents_op = check_agent_ops(agent_names, ops_file=f"./server_data_{session_name}/ops.json")
|
||||
if agents_op:
|
||||
print("Agents are operators! You are good to go :D")
|
||||
else:
|
||||
print("Agents are not operators! Something went wrong :(")
|
||||
make_ops(agent_names, session_name)
|
||||
|
||||
def check_agent_ops(agent_names, ops_file="ops.json"):
|
||||
with open(ops_file, "r") as f:
|
||||
ops_data = json.load(f)
|
||||
|
||||
ops_names = [op["name"] for op in ops_data]
|
||||
|
||||
for agent in agent_names:
|
||||
if agent not in ops_names:
|
||||
return False
|
||||
return True
|
||||
|
||||
def make_script_file_and_run(script_content, session_name, file_name):
|
||||
script_dir = os.path.dirname(file_name)
|
||||
os.makedirs(script_dir, exist_ok=True)
|
||||
assert os.path.exists(script_dir), f"Script directory {script_dir} was not created"
|
||||
print(f"Created script directory: {script_dir}")
|
||||
|
||||
# Call the function before writing the script file
|
||||
with open(script_file, 'w') as f:
|
||||
with open(file_name, 'w') as f:
|
||||
f.write(script_content)
|
||||
assert os.path.exists(script_file), f"Script file {script_file} was not created"
|
||||
assert os.path.exists(file_name), f"Script file {file_name} was not created"
|
||||
|
||||
script_file_run = "bash " + script_file
|
||||
script_file_run = "bash " + file_name
|
||||
|
||||
# Execute the shell script using subprocess
|
||||
subprocess.run(["tmux", "send-keys", "-t", session_name, script_file_run, "C-m"])
|
||||
|
||||
|
||||
# subprocess.run(["tmux", "send-keys", "-t", session_name, f"/op {agent_names[0]}", "C-m"])
|
||||
|
||||
def make_profiles(agent_names, models, apis, template_profile="profiles/collab_profile.json", url="http://127.0.0.1:8000/v1"):
|
||||
|
@ -298,6 +471,12 @@ def make_profiles(agent_names, models, apis, template_profile="profiles/collab_p
|
|||
"model": models[index],
|
||||
"url": url
|
||||
}
|
||||
elif apis[index] == "ollama":
|
||||
profile["model"] = {
|
||||
"api": "ollama",
|
||||
"model": models[index],
|
||||
"embedding": "ollama"
|
||||
}
|
||||
else:
|
||||
profile["model"] = models[index]
|
||||
|
||||
|
@ -347,6 +526,23 @@ def copy_server_files(source_path, dest_path):
|
|||
print(f"Server files copied to {dest_path}")
|
||||
except Exception as e:
|
||||
print(f"Error copying server files: {e}")
|
||||
time.sleep(10)
|
||||
|
||||
same_files = check_same_files(source_path, dest_path)
|
||||
if not same_files:
|
||||
copy_server_files(source_path, dest_path)
|
||||
print("The destination path does not contain all the same files as the source path.")
|
||||
else:
|
||||
print("The destination path contains all the same files as the source path.")
|
||||
|
||||
def check_same_files(d1, d2):
|
||||
|
||||
items1 = set(os.listdir(d1))
|
||||
items2 = set(os.listdir(d2))
|
||||
|
||||
if items1 != items2:
|
||||
return False
|
||||
return True
|
||||
|
||||
def delete_server_files(dest_path):
|
||||
"""Delete server files from the specified location."""
|
||||
|
@ -355,17 +551,35 @@ def delete_server_files(dest_path):
|
|||
print(f"Server files deleted from {dest_path}")
|
||||
except Exception as e:
|
||||
print(f"Error deleting server files: {e}")
|
||||
if not os.path.exists(dest_path):
|
||||
print("Server files deleted successfully.")
|
||||
else:
|
||||
print("Error deleting server files.")
|
||||
delete_server_files(dest_path)
|
||||
|
||||
|
||||
def launch_world(server_path="./server_data/", agent_names=["andy", "jill"], session_name="server"):
|
||||
def launch_world(server_path="./server_data/", agent_names=["andy", "jill"], session_name="server", port=55916):
|
||||
"""Launch the Minecraft world."""
|
||||
print(server_path)
|
||||
print(f"Launching Minecraft world with port {port}...")
|
||||
cmd = f"cd {server_path} && java -jar server.jar"
|
||||
subprocess.run(['tmux', 'new-session', '-d', '-s', session_name], check=True)
|
||||
subprocess.run(["tmux", "send-keys", "-t", session_name, cmd, "C-m"])
|
||||
# for agent in agent_names:
|
||||
# print(f"\n\n/op {agent}\n\n")
|
||||
# subprocess.run(["tmux", "send-keys", "-t", session_name, f"/op {agent}", "C-m"])
|
||||
time.sleep(5)
|
||||
time.sleep(10)
|
||||
if not test_server_running(port):
|
||||
print("Server failed to start. Retrying...")
|
||||
launch_world(server_path, agent_names, session_name, port)
|
||||
|
||||
def test_server_running(port=55916):
|
||||
host = 'localhost'
|
||||
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
||||
try:
|
||||
s.connect((host, port))
|
||||
print("Server is running on port 55916")
|
||||
return True
|
||||
except ConnectionRefusedError:
|
||||
print("Server is not running on port 55916")
|
||||
return False
|
||||
|
||||
def kill_world(session_name="server"):
|
||||
"""Kill the Minecraft world."""
|
||||
|
@ -411,7 +625,6 @@ def main():
|
|||
|
||||
parser = argparse.ArgumentParser(description='Run Minecraft AI agent experiments')
|
||||
parser.add_argument('--task_path', default="multiagent_crafting_tasks.json", help='Path to the task file')
|
||||
parser.add_argument('--task_id', default=None, help='ID of the task to run')
|
||||
parser.add_argument('--num_agents', default=2, type=int, help='Number of agents to run')
|
||||
parser.add_argument('--num_exp', default=1, type=int, help='Number of experiments to run')
|
||||
parser.add_argument('--num_parallel', default=1, type=int, help='Number of parallel servers to run')
|
||||
|
@ -422,9 +635,11 @@ def main():
|
|||
parser.add_argument('--template_profile', default="profiles/tasks/collab_profile.json", help='Model to use for the agents')
|
||||
parser.add_argument('--model', default="gpt-4o-mini", help='Model to use for the agents')
|
||||
parser.add_argument('--api', default="openai", help='API to use for the agents')
|
||||
parser.add_argument('--world_name', default="Forest", help='Name of the world')
|
||||
# parser.add_argument('--world_name', default="Forest", help='Name of the world')
|
||||
parser.add_argument('--insecure_coding', action='store_true', help='Enable insecure coding')
|
||||
parser.add_argument('--url', default="http://127.0.0.1:8000/v1")
|
||||
parser.add_argument('--max_messages', default=15, type=int, help='Maximum number of messages before summarizing')
|
||||
parser.add_argument('--num_examples', default=2, type=int, help='Maximum number of turns before summarizing')
|
||||
|
||||
args = parser.parse_args()
|
||||
print(args)
|
||||
|
@ -438,21 +653,21 @@ def main():
|
|||
clean_up_server_files(args.num_parallel)
|
||||
if args.add_keys:
|
||||
update_keys_json()
|
||||
if args.task_id is None:
|
||||
launch_parallel_experiments(args.task_path,
|
||||
num_exp=args.num_exp,
|
||||
exp_name=args.exp_name,
|
||||
num_parallel=args.num_parallel,
|
||||
s3=args.s3,
|
||||
bucket_name=args.bucket_name,
|
||||
template_profile=args.template_profile,
|
||||
model=args.model,
|
||||
api=args.api,
|
||||
world_name=args.world_name,
|
||||
insecure_coding=args.insecure_coding,
|
||||
num_agents=args.num_agents,
|
||||
url=args.url)
|
||||
cmd = "aws s3"
|
||||
|
||||
launch_parallel_experiments(args.task_path,
|
||||
num_exp=args.num_exp,
|
||||
exp_name=args.exp_name,
|
||||
num_parallel=args.num_parallel,
|
||||
s3=args.s3,
|
||||
bucket_name=args.bucket_name,
|
||||
template_profile=args.template_profile,
|
||||
model=args.model,
|
||||
api=args.api,
|
||||
insecure_coding=args.insecure_coding,
|
||||
num_agents=args.num_agents,
|
||||
url=args.url,
|
||||
max_messages=args.max_messages,
|
||||
num_examples=args.num_examples)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -17,7 +17,16 @@
|
|||
},
|
||||
"type": "debug"
|
||||
},
|
||||
"debug_multi_agent_timeout": {
|
||||
"debug_1_agent_timeout": {
|
||||
"goal": "Just stand at a place and don't do anything",
|
||||
"agent_count": 1,
|
||||
"initial_inventory": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"type": "debug",
|
||||
"timeout": 60
|
||||
},
|
||||
"debug_2_agent_timeout": {
|
||||
"goal": "Just stand at a place and don't do anything",
|
||||
"agent_count": 2,
|
||||
"initial_inventory": {
|
||||
|
@ -29,7 +38,67 @@
|
|||
}
|
||||
},
|
||||
"type": "debug",
|
||||
"timeout": 30
|
||||
"timeout": 60
|
||||
},
|
||||
"debug_3_agent_timeout": {
|
||||
"goal": "Just stand at a place and don't do anything",
|
||||
"agent_count": 3,
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"1": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"2": {
|
||||
"iron_ingot": 1
|
||||
}
|
||||
},
|
||||
"type": "debug",
|
||||
"timeout": 60
|
||||
},
|
||||
"debug_4_agent_timeout": {
|
||||
"goal": "Just stand at a place and don't do anything",
|
||||
"agent_count": 4,
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"1": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"2": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"3": {
|
||||
"iron_ingot": 1
|
||||
}
|
||||
},
|
||||
"type": "debug",
|
||||
"timeout": 60
|
||||
},
|
||||
"debug_5_agent_timeout": {
|
||||
"goal": "Just stand at a place and don't do anything",
|
||||
"agent_count": 5,
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"1": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"2": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"3": {
|
||||
"iron_ingot": 1
|
||||
},
|
||||
"4": {
|
||||
"iron_ingot": 1
|
||||
}
|
||||
},
|
||||
"type": "debug",
|
||||
"timeout": 60
|
||||
},
|
||||
"debug_different_goal": {
|
||||
"goal": {
|
||||
|
|
|
@ -34,7 +34,14 @@
|
|||
{"role": "assistant", "content": "Seems like we need are missing 1 peony which we can use craft 1 pink_dye which is an intermediate item, but since you already have a pink_dye, there is no need to search for peony which is used to craft pink_dye, can you pass the pink_dye to me?"},
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) Sure, here you go !givePlayer(\"pink_dye\", 1, \"jacob\")"},
|
||||
{"role": "assistant", "content": "Thanks for the pink_dye, now I can craft the pink_wool. !craftItem(\"pink_wool\", 1)"}
|
||||
],
|
||||
[
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) Lets craft a cyan bed together"},
|
||||
{"role": "assistant", "content": "Sure, I have !inventory\n I have a cyan_dye and oak_planks. What do you have? "},
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) I have 1 cyan_wool and 1 oak_planks. Let me give those to you !givePlayer(\"cyan_wool\", 1, \"andy\") !givePlayer(\"oak_planks\", 1, \"andy\")"},
|
||||
{"role": "assistant", "content": "Hmm seems like we don't have enough to craft a cyan bed, let me reach out to the third agent and ask for help! !startConversation(\"jacob\", Hey jacob, can you help us craft a cyan bed? We need cyan_dye and oak_planks"},
|
||||
{"role": "user", "content": "jacob: (FROM OTHER BOT) Sure! Let me give those to you !givePlayer(\"cyan_dye\", 1, \"andy\") !givePlayer(\"oak_planks\", 1, \"andy\")"},
|
||||
{"role": "assistant", "content": "Thanks for the items, now I can craft the cyan bed. !craftItem(\"cyan_bed\", 1)"}
|
||||
]
|
||||
]
|
||||
|
||||
}
|
47
profiles/tasks/collab_thinking_model_profile.json
Normal file
47
profiles/tasks/collab_thinking_model_profile.json
Normal file
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"name": "andy",
|
||||
"model": "gpt-4o",
|
||||
"modes": {
|
||||
"hunting": false
|
||||
},
|
||||
"conversing": "You are a playful Minecraft bot named $NAME that can converse with players, 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\n Your name is $NAME, do not pretend to be other bots. You are in a conversation by default do not use ! Do not make lists unless asked. I will be extremely dissapointed if you give instructions instead of responding as if you are in a conversation. Conversation 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: ",
|
||||
"conversation_examples": [
|
||||
[
|
||||
{"role": "user", "content": "Hey! let's collaborate to build a stone pickaxe!"},
|
||||
{"role": "assistant", "content": "Cool, let me check what is in my inventory !inventory\nI have 10 oak logs. What do you have?"},
|
||||
{"role": "user", "content": "Let me check !inventory \nI have 10 stones."},
|
||||
{"role": "assistant", "content": "Let me give you the stones and you can craft the pickaxe. !givePlayer(\"stone\", 10, \"playername\")"},
|
||||
{"role": "user", "content": "Thanks for the stones! Now I can craft the pickaxe. !craftItem(\"stone_pickaxe\", 1)"}
|
||||
|
||||
],
|
||||
[
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) Lets craft 5 chains together"},
|
||||
{"role": "assistant", "content": "Sure, can you let me know what inventory do you have while I check how to craft chains?"},
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) I have 10 iron_nugget and 3 mushroom."},
|
||||
{"role": "assistant", "content": "Thanks for letting me know, let me check how to build a chain, !getCraftingPlan(\"chain\",5)"},
|
||||
{"role": "system", "content": "You are missing the following items:\n- 2 iron_ingot\n\nOnce you have these items, here's your crafting plan:\n\nCraft 2 iron_ingot -> 18 iron_nugget\nCraft 10 iron_nugget + 5 iron_ingot -> 5 chain"},
|
||||
{"role": "assistant", "content": "Seems like we need 2 iron_ingot, but wait, we need the iron_ingot for getting 10 iron_nugget, since you already have 10 iron_nugget, I don't need to search for 2 iron_ingots in the world, could you give me the 10 iron_nugget ?"},
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) Sure, here you go !givePlayer(\"iron_nugget\", 10, \"jacob\")"},
|
||||
{"role": "assistant", "content": "Thanks for the iron_nuggets, now I can craft the chains. !craftItem(\"chain\", 5)"}
|
||||
],
|
||||
[
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) Lets craft a pink_wool together"},
|
||||
{"role": "assistant", "content": "Sure, can you let me what inventory do you have while I check how to craft it?"},
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) I have 1 pink_dye with me."},
|
||||
{"role": "assistant", "content": "Thanks for letting me know, let me check how to craft a pink_wool, !getCraftingPlan(\"pink_wool\",1)"},
|
||||
{"role": "system", "content": "You are missing the following items:\n- 1 peony\n\nOnce you have these items, here's your crafting plan:\n\nCraft 1 peony -> 2 pink_dye\nCraft 1 pink_dye + 1 black_wool -> 1 pink_wool"},
|
||||
{"role": "assistant", "content": "Seems like we need are missing 1 peony which we can use craft 1 pink_dye which is an intermediate item, but since you already have a pink_dye, there is no need to search for peony which is used to craft pink_dye, can you pass the pink_dye to me?"},
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) Sure, here you go !givePlayer(\"pink_dye\", 1, \"jacob\")"},
|
||||
{"role": "assistant", "content": "Thanks for the pink_dye, now I can craft the pink_wool. !craftItem(\"pink_wool\", 1)"}
|
||||
],
|
||||
[
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) Lets craft a cyan bed together"},
|
||||
{"role": "assistant", "content": "Sure, I have !inventory\n I have a cyan_dye and oak_planks. What do you have? "},
|
||||
{"role": "user", "content": "terrance: (FROM OTHER BOT) I have 1 cyan_wool and 1 oak_planks. Let me give those to you !givePlayer(\"cyan_wool\", 1, \"andy\") !givePlayer(\"oak_planks\", 1, \"andy\")"},
|
||||
{"role": "assistant", "content": "Hmm seems like we don't have enough to craft a cyan bed, let me reach out to the third agent and ask for help! !startConversation(\"jacob\", Hey jacob, can you help us craft a cyan bed? We need cyan_dye and oak_planks"},
|
||||
{"role": "user", "content": "jacob: (FROM OTHER BOT) Sure! Let me give those to you !givePlayer(\"cyan_dye\", 1, \"andy\") !givePlayer(\"oak_planks\", 1, \"andy\")"},
|
||||
{"role": "assistant", "content": "Thanks for the items, now I can craft the cyan bed. !craftItem(\"cyan_bed\", 1)"}
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,9 +1,10 @@
|
|||
{
|
||||
"name": "andy",
|
||||
"model": "gpt-4o-mini",
|
||||
"model": "claude-3-5-haiku-latest",
|
||||
"modes": {
|
||||
"hunting": false
|
||||
"hunting": false,
|
||||
"item_collecting": 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. Environment Resources:\n Cooking stations: Fueled furnace, smoker, and crafting table are nearby\n**Farm resources**:\n - Various crops ready for harvesting\n- Livestock including cows, pigs, sheep, and chickens\n- Storage chests containing additional materials\n\n ## Collaboration Tips:\n- The farm area is extensive - search thoroughly for needed resources\n- 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 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:",
|
||||
"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: "
|
||||
}
|
|
@ -36,12 +36,14 @@ export default
|
|||
"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...
|
||||
|
||||
"allow_insecure_coding": process.env.INSECURE_CODING || true, // allows newAction command and model can write/run code on your computer. enable at own risk
|
||||
"blocked_actions" : [], // commands to disable and remove from docs. Ex: ["!setMode"]
|
||||
|
||||
"allow_insecure_coding": process.env.INSECURE_CODING || false, // allows newAction command and model can write/run code on your computer. enable at own risk
|
||||
"blocked_actions" : process.env.BLOCKED_ACTIONS || [] , // commands to disable and remove from docs. Ex: ["!setMode"]
|
||||
|
||||
"code_timeout_mins": -1, // minutes code is allowed to run. -1 for no timeout
|
||||
"relevant_docs_count": 5, // Parameter: -1 = all, 0 = no references, 5 = five references. If exceeding the maximum, all reference documents are returned.
|
||||
|
||||
"max_messages": 15, // max number of messages to keep in context
|
||||
"max_messages": process.env.MAX_MESSAGES || 15, // max number of messages to keep in context
|
||||
"num_examples": 2, // number of examples to give to the model
|
||||
"max_commands": -1, // max number of commands that can be used in consecutive responses. -1 for no limit
|
||||
"verbose_commands": true, // show full command syntax
|
||||
|
|
|
@ -24,6 +24,8 @@ export class Agent {
|
|||
}
|
||||
|
||||
console.log('Starting agent initialization with profile:', profile_fp);
|
||||
|
||||
|
||||
|
||||
// Initialize components with more detailed error handling
|
||||
console.log('Initializing action manager...');
|
||||
|
@ -45,7 +47,21 @@ export class Agent {
|
|||
console.log('Initializing examples...');
|
||||
await this.prompter.initExamples();
|
||||
console.log('Initializing task...');
|
||||
this.task = new Task(this, task_path, task_id);
|
||||
|
||||
// load mem first before doing task
|
||||
let save_data = null;
|
||||
if (load_mem) {
|
||||
save_data = this.history.load();
|
||||
}
|
||||
console.log(save_data);
|
||||
let taskStart = null;
|
||||
if (save_data) {
|
||||
taskStart = save_data.taskStart;
|
||||
} else {
|
||||
taskStart = Date.now();
|
||||
}
|
||||
// incorporate new restart time into task
|
||||
this.task = new Task(this, task_path, task_id, taskStart);
|
||||
this.blocked_actions = settings.blocked_actions.concat(this.task.blocked_actions || []);
|
||||
blacklistCommands(this.blocked_actions);
|
||||
|
||||
|
@ -56,10 +72,7 @@ export class Agent {
|
|||
|
||||
initModes(this);
|
||||
|
||||
let save_data = null;
|
||||
if (load_mem) {
|
||||
save_data = this.history.load();
|
||||
}
|
||||
|
||||
|
||||
this.bot.on('login', () => {
|
||||
console.log(this.name, 'logged in!');
|
||||
|
|
|
@ -86,6 +86,7 @@ export class History {
|
|||
turns: this.turns,
|
||||
self_prompting_state: this.agent.self_prompter.state,
|
||||
self_prompt: this.agent.self_prompter.isStopped() ? null : this.agent.self_prompter.prompt,
|
||||
taskStart: this.agent.task.taskStartTime,
|
||||
last_sender: this.agent.last_sender
|
||||
};
|
||||
writeFileSync(this.memory_fp, JSON.stringify(data, null, 2));
|
||||
|
|
|
@ -460,7 +460,14 @@ export async function collectBlock(bot, blockType, num=1, exclude=null) {
|
|||
return false;
|
||||
}
|
||||
try {
|
||||
await bot.collectBlock.collect(block);
|
||||
if (mc.mustCollectManually(blockType)) {
|
||||
await goToPosition(bot, block.position.x, block.position.y, block.position.z, 2);
|
||||
await bot.dig(block);
|
||||
await pickupNearbyItems(bot);
|
||||
}
|
||||
else {
|
||||
await bot.collectBlock.collect(block);
|
||||
}
|
||||
collected++;
|
||||
await autoLight(bot);
|
||||
}
|
||||
|
@ -823,7 +830,7 @@ export async function putInChest(bot, itemName, num=-1) {
|
|||
|
||||
export async function takeFromChest(bot, itemName, num=-1) {
|
||||
/**
|
||||
* Take the given item from the nearest chest.
|
||||
* Take the given item from the nearest chest, potentially from multiple slots.
|
||||
* @param {MinecraftBot} bot, reference to the minecraft bot.
|
||||
* @param {string} itemName, the item or block name to take from the chest.
|
||||
* @param {number} num, the number of items to take from the chest. Defaults to -1, which takes all items.
|
||||
|
@ -838,17 +845,33 @@ export async function takeFromChest(bot, itemName, num=-1) {
|
|||
}
|
||||
await goToPosition(bot, chest.position.x, chest.position.y, chest.position.z, 2);
|
||||
const chestContainer = await bot.openContainer(chest);
|
||||
let item = chestContainer.containerItems().find(item => item.name === itemName);
|
||||
if (!item) {
|
||||
|
||||
// Find all matching items in the chest
|
||||
let matchingItems = chestContainer.containerItems().filter(item => item.name === itemName);
|
||||
if (matchingItems.length === 0) {
|
||||
log(bot, `Could not find any ${itemName} in the chest.`);
|
||||
await chestContainer.close();
|
||||
return false;
|
||||
}
|
||||
let to_take = num === -1 ? item.count : Math.min(num, item.count);
|
||||
await chestContainer.withdraw(item.type, null, to_take);
|
||||
|
||||
let totalAvailable = matchingItems.reduce((sum, item) => sum + item.count, 0);
|
||||
let remaining = num === -1 ? totalAvailable : Math.min(num, totalAvailable);
|
||||
let totalTaken = 0;
|
||||
|
||||
// Take items from each slot until we've taken enough or run out
|
||||
for (const item of matchingItems) {
|
||||
if (remaining <= 0) break;
|
||||
|
||||
let toTakeFromSlot = Math.min(remaining, item.count);
|
||||
await chestContainer.withdraw(item.type, null, toTakeFromSlot);
|
||||
|
||||
totalTaken += toTakeFromSlot;
|
||||
remaining -= toTakeFromSlot;
|
||||
}
|
||||
|
||||
await chestContainer.close();
|
||||
log(bot, `Successfully took ${to_take} ${itemName} from the chest.`);
|
||||
return true;
|
||||
log(bot, `Successfully took ${totalTaken} ${itemName} from the chest.`);
|
||||
return totalTaken > 0;
|
||||
}
|
||||
|
||||
export async function viewChest(bot) {
|
||||
|
|
|
@ -143,7 +143,8 @@ export class CookingTaskInitiator {
|
|||
const x = xStart + i;
|
||||
const z = zStart + j;
|
||||
await bot.chat(`/setblock ${x} ${position.y - 1} ${z} mycelium`);
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} red_mushroom`);
|
||||
const mushroomType = (i + j) % 2 === 0 ? 'red_mushroom' : 'brown_mushroom';
|
||||
await bot.chat(`/setblock ${x} ${position.y} ${z} ${mushroomType}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -312,7 +313,7 @@ export class CookingTaskInitiator {
|
|||
const cookingItems = [
|
||||
['minecraft:milk_bucket', 1], // Non-stackable
|
||||
['minecraft:egg', 16], // Stacks to 16
|
||||
['minecraft:melon_slice', 64], // Stacks to 64
|
||||
['minecraft:dandelion', 64], // Stacks to 64
|
||||
['minecraft:sugar', 64],
|
||||
['minecraft:cocoa_beans', 64],
|
||||
['minecraft:apple', 64],
|
||||
|
@ -334,6 +335,9 @@ export class CookingTaskInitiator {
|
|||
['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
|
||||
|
@ -355,16 +359,16 @@ export class CookingTaskInitiator {
|
|||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
// Animal management
|
||||
await bot.chat('/kill @e[type=item,distance=..50]');
|
||||
await bot.chat('/kill @e[type=chicken,distance=..50]');
|
||||
await bot.chat('/kill @e[type=cow,distance=..50]');
|
||||
await bot.chat('/kill @e[type=llama,distance=..50]');
|
||||
await bot.chat('/kill @e[type=mooshroom,distance=..50]');
|
||||
await bot.chat('/kill @e[type=pig,distance=..50]');
|
||||
await bot.chat('/kill @e[type=rabbit,distance=..50]');
|
||||
await bot.chat('/kill @e[type=sheep,distance=..50]');
|
||||
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=..50]`);
|
||||
await bot.chat(`/kill @e[type=item,distance=..200]`);
|
||||
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
|
||||
|
|
|
@ -126,25 +126,39 @@ class CookingCraftingTaskValidator {
|
|||
this.data = data;
|
||||
this.agent = agent;
|
||||
}
|
||||
validate() {
|
||||
const result = checkItemPresence(this.data, this.agent);
|
||||
let score = 0;
|
||||
if (result.success) {
|
||||
score = 1;
|
||||
validate(has_initiated) {
|
||||
if (has_initiated) {
|
||||
|
||||
const result = checkItemPresence(this.data, this.agent);
|
||||
let score = 0;
|
||||
if (result.success) {
|
||||
score = 1;
|
||||
}
|
||||
return {
|
||||
"valid": result.success,
|
||||
"score": score,
|
||||
};
|
||||
}
|
||||
else {
|
||||
return {
|
||||
"valid": false,
|
||||
"score": 0
|
||||
};
|
||||
}
|
||||
return {
|
||||
"valid": result.success,
|
||||
"score": score,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export class Task {
|
||||
constructor(agent, task_path, task_id) {
|
||||
constructor(agent, task_path, task_id, taskStartTime = null) {
|
||||
this.agent = agent;
|
||||
this.data = null;
|
||||
this.taskTimeout = 300;
|
||||
this.taskStartTime = Date.now();
|
||||
console.log("task start time", taskStartTime);
|
||||
if (taskStartTime !== null)
|
||||
this.taskStartTime = taskStartTime;
|
||||
else
|
||||
this.taskStartTime = Date.now();
|
||||
|
||||
console.log(this.taskStartTime);
|
||||
this.validator = null;
|
||||
this.reset_function = null;
|
||||
this.blocked_actions = [];
|
||||
|
@ -188,6 +202,7 @@ export class Task {
|
|||
|
||||
this.name = this.agent.name;
|
||||
this.available_agents = settings.profiles.map((p) => JSON.parse(readFileSync(p, 'utf8')).name);
|
||||
this.agent_initialized = false;
|
||||
}
|
||||
|
||||
getAgentGoal() {
|
||||
|
@ -198,7 +213,7 @@ export class Task {
|
|||
let add_string = '';
|
||||
|
||||
if (this.task_type === 'cooking') {
|
||||
add_string = '\nIn the end, all the food should be given to Andy.';
|
||||
add_string = '\nIn the end, all the food items should be given to one single player.';
|
||||
}
|
||||
|
||||
// If goal is a string, all agents share the same goal
|
||||
|
@ -239,7 +254,7 @@ export class Task {
|
|||
isDone() {
|
||||
let res = null;
|
||||
if (this.validator)
|
||||
res = this.validator.validate();
|
||||
res = this.validator.validate(this.agent_initialized);
|
||||
if (res && res.valid) {
|
||||
return {"message": 'Task successful', "score": res.score};
|
||||
}
|
||||
|
@ -311,6 +326,8 @@ export class Task {
|
|||
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||
}
|
||||
|
||||
this.agent_initialized = true;
|
||||
|
||||
if (this.initiator) {
|
||||
await this.initiator.init();
|
||||
}
|
||||
|
|
|
@ -395,6 +395,11 @@ export class Prompter {
|
|||
if (current_msg_time !== this.most_recent_msg_time) {
|
||||
console.warn(`${this.agent.name} received new message while generating, discarding old response.`);
|
||||
return '';
|
||||
}
|
||||
|
||||
if (generation?.includes('</think>')) {
|
||||
const [_, afterThink] = generation.split('</think>')
|
||||
generation = afterThink
|
||||
}
|
||||
|
||||
return generation;
|
||||
|
@ -431,6 +436,7 @@ export class Prompter {
|
|||
async promptMemSaving(to_summarize) {
|
||||
await this.checkCooldown();
|
||||
let prompt = this.profile.saving_memory;
|
||||
prompt = await this.replaceStrings(prompt, null, null, to_summarize);
|
||||
let logEntry;
|
||||
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
||||
if (this.task_id === null) {
|
||||
|
@ -440,8 +446,14 @@ export class Prompter {
|
|||
}
|
||||
const logFile = `memSaving_${timestamp}.txt`;
|
||||
await this.saveToFile(logFile, logEntry);
|
||||
prompt = await this.replaceStrings(prompt, null, null, to_summarize);
|
||||
return await this.chat_model.sendRequest([], prompt);
|
||||
|
||||
let generation = await this.chat_model.sendRequest([], prompt);
|
||||
if (generation?.includes('</think>')) {
|
||||
const [_, afterThink] = generation.split('</think>')
|
||||
generation = afterThink
|
||||
}
|
||||
|
||||
return generation;
|
||||
}
|
||||
|
||||
async promptShouldRespondToBot(new_message) {
|
||||
|
|
|
@ -86,6 +86,16 @@ export function isHostile(mob) {
|
|||
return (mob.type === 'mob' || mob.type === 'hostile') && mob.name !== 'iron_golem' && mob.name !== 'snow_golem';
|
||||
}
|
||||
|
||||
// blocks that don't work with collectBlock, need to be manually collected
|
||||
export function mustCollectManually(blockName) {
|
||||
// all crops (that aren't normal blocks), torches, buttons, levers, redstone,
|
||||
const full_names = ['wheat', 'carrots', 'potatoes', 'beetroots', 'nether_wart', 'cocoa', 'sugar_cane', 'kelp', 'short_grass', 'fern', 'tall_grass', 'bamboo',
|
||||
'poppy', 'dandelion', 'blue_orchid', 'allium', 'azure_bluet', 'oxeye_daisy', 'cornflower', 'lilac', 'wither_rose', 'lily_of_the_valley', 'wither_rose',
|
||||
'lever', 'redstone_wire', 'lantern']
|
||||
const partial_names = ['sapling', 'torch', 'button', 'carpet', 'pressure_plate', 'mushroom', 'tulip', 'bush', 'vines', 'fern']
|
||||
return full_names.includes(blockName.toLowerCase()) || partial_names.some(partial => blockName.toLowerCase().includes(partial));
|
||||
}
|
||||
|
||||
export function getItemId(itemName) {
|
||||
let item = mcdata.itemsByName[itemName];
|
||||
if (item) {
|
||||
|
|
File diff suppressed because it is too large
Load diff
537
tasks/cooking_tasks/test_tasks/hells_kitchen_test_tasks.json
Normal file
537
tasks/cooking_tasks/test_tasks/hells_kitchen_test_tasks.json
Normal file
|
@ -0,0 +1,537 @@
|
|||
{
|
||||
"multiagent_cooking_1_bread_1_cooked_mutton_hells_kitchen": {
|
||||
"conversation": "We need to make bread and cooked_mutton together. You are supposed to make cooked_mutton 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": 1,
|
||||
"cooked_mutton": 1
|
||||
},
|
||||
"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."
|
||||
],
|
||||
"cooked_mutton": [
|
||||
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
|
||||
"Step 2: Go to furnace and use it to cook the mutton."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make bread, but you don't have the recipe for it!\n\nYour partner needs to make cooked_mutton. You have their recipe:\nRecipe for cooked_mutton:\nStep 1: Kill a sheep and pick up 1 mutton that is dropped.\nStep 2: Go to furnace and use it to cook the mutton.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make cooked_mutton, but you don't have the recipe for 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."
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"multiagent_cooking_1_baked_potato_1_golden_carrot_hells_kitchen": {
|
||||
"conversation": "We need to make baked_potato and golden_carrot together. You are supposed to make golden_carrot 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": 1,
|
||||
"golden_carrot": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"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_carrot": [
|
||||
"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."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make baked_potato, but you don't have the recipe for it!\n\nYour partner needs to make golden_carrot. You have their recipe:\nRecipe for golden_carrot:\nStep 1: Go to the farm and collect 1 carrot.\nStep 2: Go to the chest and collect gold ingots and convert them to gold nuggets.\nStep 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make golden_carrot, but you don't have the recipe for 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: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 5,
|
||||
"max_steps_per_recipe": 3,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_cooked_mutton_1_mushroom_stew_hells_kitchen": {
|
||||
"conversation": "We need to make cooked_mutton and mushroom_stew together. You are supposed to make mushroom_stew and I am supposed to make ('cooked_mutton',)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_mutton": 1,
|
||||
"mushroom_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"cooked_mutton": [
|
||||
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
|
||||
"Step 2: Go to furnace and use it to cook the mutton."
|
||||
],
|
||||
"mushroom_stew": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
|
||||
"Step 2: Go to the chest and grab a bowl.",
|
||||
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make cooked_mutton, but you don't have the recipe for it!\n\nYour partner needs to make mushroom_stew. You have their recipe:\nRecipe for mushroom_stew:\nStep 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.\nStep 2: Go to the chest and grab a bowl.\nStep 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make mushroom_stew, but you don't have the recipe for it!\n\nYour partner needs to make cooked_mutton. You have their recipe:\nRecipe for cooked_mutton:\nStep 1: Kill a sheep and pick up 1 mutton that is dropped.\nStep 2: Go to furnace and use it to cook the mutton.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 5,
|
||||
"max_steps_per_recipe": 3,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_cake_1_golden_carrot_hells_kitchen": {
|
||||
"conversation": "We need to make golden_carrot and cake together. You are supposed to make cake and I am supposed to make ('golden_carrot',)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_carrot": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_carrot": [
|
||||
"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."
|
||||
],
|
||||
"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": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_carrot, but you don't have the recipe for 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: 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\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make cake, but you don't have the recipe for it!\n\nYour partner needs to make golden_carrot. You have their recipe:\nRecipe for golden_carrot:\nStep 1: Go to the farm and collect 1 carrot.\nStep 2: Go to the chest and collect gold ingots and convert them to gold nuggets.\nStep 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 8,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_cooked_mutton_1_golden_carrot_hells_kitchen": {
|
||||
"conversation": "We need to make cooked_mutton and golden_carrot together. You are supposed to make golden_carrot and I am supposed to make ('cooked_mutton',)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_mutton": 1,
|
||||
"golden_carrot": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"cooked_mutton": [
|
||||
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
|
||||
"Step 2: Go to furnace and use it to cook the mutton."
|
||||
],
|
||||
"golden_carrot": [
|
||||
"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."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make cooked_mutton, but you don't have the recipe for it!\n\nYour partner needs to make golden_carrot. You have their recipe:\nRecipe for golden_carrot:\nStep 1: Go to the farm and collect 1 carrot.\nStep 2: Go to the chest and collect gold ingots and convert them to gold nuggets.\nStep 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make golden_carrot, but you don't have the recipe for it!\n\nYour partner needs to make cooked_mutton. You have their recipe:\nRecipe for cooked_mutton:\nStep 1: Kill a sheep and pick up 1 mutton that is dropped.\nStep 2: Go to furnace and use it to cook the mutton.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 5,
|
||||
"max_steps_per_recipe": 3,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_baked_potato_1_bread_hells_kitchen": {
|
||||
"conversation": "We need to make bread and baked_potato together. You are supposed to make baked_potato 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": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"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."
|
||||
],
|
||||
"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": [],
|
||||
"goal": {
|
||||
"0": "You need to make bread, but you don't have the recipe for 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: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make baked_potato, but you don't have the recipe for 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."
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"multiagent_cooking_1_cake_1_mushroom_stew_hells_kitchen": {
|
||||
"conversation": "We need to make mushroom_stew and cake together. You are supposed to make cake and I am supposed to make ('mushroom_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": {
|
||||
"mushroom_stew": 1,
|
||||
"cake": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"mushroom_stew": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
|
||||
"Step 2: Go to the chest and grab a bowl.",
|
||||
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
|
||||
],
|
||||
"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": [],
|
||||
"goal": {
|
||||
"0": "You need to make mushroom_stew, but you don't have the recipe for 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: 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\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make cake, but you don't have the recipe for it!\n\nYour partner needs to make mushroom_stew. You have their recipe:\nRecipe for mushroom_stew:\nStep 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.\nStep 2: Go to the chest and grab a bowl.\nStep 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 8,
|
||||
"max_steps_per_recipe": 5,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_baked_potato_1_cake_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": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"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."
|
||||
],
|
||||
"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": [],
|
||||
"goal": {
|
||||
"0": "You need to make cake, but you don't have the recipe for 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: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make baked_potato, but you don't have the recipe for 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: 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\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"multiagent_cooking_1_baked_potato_1_cooked_mutton_hells_kitchen": {
|
||||
"conversation": "We need to make cooked_mutton and baked_potato together. You are supposed to make baked_potato and I am supposed to make ('cooked_mutton',)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_mutton": 1,
|
||||
"baked_potato": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"cooked_mutton": [
|
||||
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
|
||||
"Step 2: Go to furnace and use it to cook the mutton."
|
||||
],
|
||||
"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": [],
|
||||
"goal": {
|
||||
"0": "You need to make cooked_mutton, but you don't have the recipe for 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: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make baked_potato, but you don't have the recipe for it!\n\nYour partner needs to make cooked_mutton. You have their recipe:\nRecipe for cooked_mutton:\nStep 1: Kill a sheep and pick up 1 mutton that is dropped.\nStep 2: Go to furnace and use it to cook the mutton.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"multiagent_cooking_1_golden_carrot_1_mushroom_stew_hells_kitchen": {
|
||||
"conversation": "We need to make golden_carrot and mushroom_stew together. You are supposed to make mushroom_stew and I am supposed to make ('golden_carrot',)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_carrot": 1,
|
||||
"mushroom_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_carrot": [
|
||||
"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."
|
||||
],
|
||||
"mushroom_stew": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
|
||||
"Step 2: Go to the chest and grab a bowl.",
|
||||
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make golden_carrot, but you don't have the recipe for it!\n\nYour partner needs to make mushroom_stew. You have their recipe:\nRecipe for mushroom_stew:\nStep 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.\nStep 2: Go to the chest and grab a bowl.\nStep 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make mushroom_stew, but you don't have the recipe for it!\n\nYour partner needs to make golden_carrot. You have their recipe:\nRecipe for golden_carrot:\nStep 1: Go to the farm and collect 1 carrot.\nStep 2: Go to the chest and collect gold ingots and convert them to gold nuggets.\nStep 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 6,
|
||||
"max_steps_per_recipe": 3,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_bread_1_mushroom_stew_hells_kitchen": {
|
||||
"conversation": "We need to make mushroom_stew and bread together. You are supposed to make bread and I am supposed to make ('mushroom_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": {
|
||||
"mushroom_stew": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"mushroom_stew": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
|
||||
"Step 2: Go to the chest and grab a bowl.",
|
||||
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom 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": [],
|
||||
"goal": {
|
||||
"0": "You need to make mushroom_stew, but you don't have the recipe for 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.",
|
||||
"1": "You need to make bread, but you don't have the recipe for it!\n\nYour partner needs to make mushroom_stew. You have their recipe:\nRecipe for mushroom_stew:\nStep 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.\nStep 2: Go to the chest and grab a bowl.\nStep 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 5,
|
||||
"max_steps_per_recipe": 3,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_cake_1_cooked_mutton_hells_kitchen": {
|
||||
"conversation": "We need to make cake and cooked_mutton together. You are supposed to make cooked_mutton 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": 1,
|
||||
"cooked_mutton": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"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."
|
||||
],
|
||||
"cooked_mutton": [
|
||||
"Step 1: Kill a sheep and pick up 1 mutton that is dropped.",
|
||||
"Step 2: Go to furnace and use it to cook the mutton."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make cake, but you don't have the recipe for it!\n\nYour partner needs to make cooked_mutton. You have their recipe:\nRecipe for cooked_mutton:\nStep 1: Kill a sheep and pick up 1 mutton that is dropped.\nStep 2: Go to furnace and use it to cook the mutton.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make cooked_mutton, but you don't have the recipe for 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: 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\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"multiagent_cooking_1_bread_1_golden_carrot_hells_kitchen": {
|
||||
"conversation": "We need to make golden_carrot and bread together. You are supposed to make bread and I am supposed to make ('golden_carrot',)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_carrot": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"recipes": {
|
||||
"golden_carrot": [
|
||||
"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."
|
||||
],
|
||||
"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_carrot, but you don't have the recipe for 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.",
|
||||
"1": "You need to make bread, but you don't have the recipe for it!\n\nYour partner needs to make golden_carrot. You have their recipe:\nRecipe for golden_carrot:\nStep 1: Go to the farm and collect 1 carrot.\nStep 2: Go to the chest and collect gold ingots and convert them to gold nuggets.\nStep 3: Go to the crafting table and surround the carrot with gold nuggets to create a golden carrot.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 5,
|
||||
"max_steps_per_recipe": 3,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_baked_potato_1_mushroom_stew_hells_kitchen": {
|
||||
"conversation": "We need to make baked_potato and mushroom_stew together. You are supposed to make mushroom_stew 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": 1,
|
||||
"mushroom_stew": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"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."
|
||||
],
|
||||
"mushroom_stew": [
|
||||
"Step 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.",
|
||||
"Step 2: Go to the chest and grab a bowl.",
|
||||
"Step 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew."
|
||||
]
|
||||
},
|
||||
"blocked_access_to_recipe": [],
|
||||
"goal": {
|
||||
"0": "You need to make baked_potato, but you don't have the recipe for it!\n\nYour partner needs to make mushroom_stew. You have their recipe:\nRecipe for mushroom_stew:\nStep 1: Go to the farm and collect 1 red mushroom and 1 brown mushroom.\nStep 2: Go to the chest and grab a bowl.\nStep 3: Go to the crafting table and combine both the mushrooms and bowl to make mushroom stew.\n\nYou must communicate effectively to exchange recipe information and complete both dishes.",
|
||||
"1": "You need to make mushroom_stew, but you don't have the recipe for 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: Go to the furnace and bake the potato.\n\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"task_type": "cooking",
|
||||
"difficulty_metrics": {
|
||||
"total_recipe_steps": 5,
|
||||
"max_steps_per_recipe": 3,
|
||||
"unique_target_items": 2,
|
||||
"overall_difficulty_score": 5,
|
||||
"difficulty_category": "medium"
|
||||
},
|
||||
"difficulty": "medium"
|
||||
},
|
||||
"multiagent_cooking_1_bread_1_cake_hells_kitchen": {
|
||||
"conversation": "We need to make cake and bread together. You are supposed to make bread 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": 1,
|
||||
"bread": 1
|
||||
},
|
||||
"type": "cooking",
|
||||
"timeout": 300,
|
||||
"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": [],
|
||||
"goal": {
|
||||
"0": "You need to make cake, but you don't have the recipe for 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.",
|
||||
"1": "You need to make bread, but you don't have the recipe for 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: 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\nYou must communicate effectively to exchange recipe information and complete both dishes."
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
1051
tasks/cooking_tasks/test_tasks/test_tasks.json
Normal file
1051
tasks/cooking_tasks/test_tasks/test_tasks.json
Normal file
File diff suppressed because it is too large
Load diff
1255
tasks/cooking_tasks/test_tasks/test_tasks_3_agents.json
Normal file
1255
tasks/cooking_tasks/test_tasks/test_tasks_3_agents.json
Normal file
File diff suppressed because it is too large
Load diff
1425
tasks/cooking_tasks/test_tasks/test_tasks_4_agents.json
Normal file
1425
tasks/cooking_tasks/test_tasks/test_tasks_4_agents.json
Normal file
File diff suppressed because it is too large
Load diff
1408
tasks/cooking_tasks/test_tasks/test_tasks_5_agents.json
Normal file
1408
tasks/cooking_tasks/test_tasks/test_tasks_5_agents.json
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1613
tasks/cooking_tasks/train_tasks/hells_kitchen_train_tasks.json
Normal file
1613
tasks/cooking_tasks/train_tasks/hells_kitchen_train_tasks.json
Normal file
File diff suppressed because it is too large
Load diff
2417
tasks/cooking_tasks/train_tasks/train_tasks.json
Normal file
2417
tasks/cooking_tasks/train_tasks/train_tasks.json
Normal file
File diff suppressed because it is too large
Load diff
2864
tasks/cooking_tasks/train_tasks/train_tasks_3_agents.json
Normal file
2864
tasks/cooking_tasks/train_tasks/train_tasks_3_agents.json
Normal file
File diff suppressed because it is too large
Load diff
3345
tasks/cooking_tasks/train_tasks/train_tasks_4_agents.json
Normal file
3345
tasks/cooking_tasks/train_tasks/train_tasks_4_agents.json
Normal file
File diff suppressed because it is too large
Load diff
3772
tasks/cooking_tasks/train_tasks/train_tasks_5_agents.json
Normal file
3772
tasks/cooking_tasks/train_tasks/train_tasks_5_agents.json
Normal file
File diff suppressed because it is too large
Load diff
5432
tasks/crafting_tasks/dev_tasks/tasks_2_agents.json
Normal file
5432
tasks/crafting_tasks/dev_tasks/tasks_2_agents.json
Normal file
File diff suppressed because it is too large
Load diff
16
tasks/crafting_tasks/dev_tasks/tasks_2_agents_stats.txt
Normal file
16
tasks/crafting_tasks/dev_tasks/tasks_2_agents_stats.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"num_tasks": 199,
|
||||
"avg_depth": 2.2525252525252526,
|
||||
"std_depth": 0.9248907589704736,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 98,
|
||||
"1": 72,
|
||||
"2": 20,
|
||||
"3": 8
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 116,
|
||||
"1": 76,
|
||||
"2": 6
|
||||
}
|
||||
}
|
6044
tasks/crafting_tasks/dev_tasks/tasks_3_agents.json
Normal file
6044
tasks/crafting_tasks/dev_tasks/tasks_3_agents.json
Normal file
File diff suppressed because it is too large
Load diff
16
tasks/crafting_tasks/dev_tasks/tasks_3_agents_stats.txt
Normal file
16
tasks/crafting_tasks/dev_tasks/tasks_3_agents_stats.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"num_tasks": 184,
|
||||
"avg_depth": 2.4754098360655736,
|
||||
"std_depth": 0.9684626549338964,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 72,
|
||||
"1": 78,
|
||||
"2": 21,
|
||||
"3": 12
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 108,
|
||||
"1": 66,
|
||||
"2": 9
|
||||
}
|
||||
}
|
4766
tasks/crafting_tasks/dev_tasks/tasks_4_agents.json
Normal file
4766
tasks/crafting_tasks/dev_tasks/tasks_4_agents.json
Normal file
File diff suppressed because it is too large
Load diff
15
tasks/crafting_tasks/dev_tasks/tasks_4_agents_stats.txt
Normal file
15
tasks/crafting_tasks/dev_tasks/tasks_4_agents_stats.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"num_tasks": 129,
|
||||
"avg_depth": 2.5625,
|
||||
"std_depth": 1.0879309490955758,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 56,
|
||||
"1": 52,
|
||||
"2": 12,
|
||||
"3": 8
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 100,
|
||||
"1": 28
|
||||
}
|
||||
}
|
5582
tasks/crafting_tasks/dev_tasks/tasks_5_agents.json
Normal file
5582
tasks/crafting_tasks/dev_tasks/tasks_5_agents.json
Normal file
File diff suppressed because it is too large
Load diff
15
tasks/crafting_tasks/dev_tasks/tasks_5_agents_stats.txt
Normal file
15
tasks/crafting_tasks/dev_tasks/tasks_5_agents_stats.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"num_tasks": 131,
|
||||
"avg_depth": 2.8461538461538463,
|
||||
"std_depth": 0.9880948137434719,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 45,
|
||||
"1": 60,
|
||||
"2": 15,
|
||||
"3": 10
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 95,
|
||||
"1": 35
|
||||
}
|
||||
}
|
5516
tasks/crafting_tasks/test_tasks/tasks_2_agents.json
Normal file
5516
tasks/crafting_tasks/test_tasks/tasks_2_agents.json
Normal file
File diff suppressed because it is too large
Load diff
14
tasks/crafting_tasks/test_tasks/tasks_2_agents_stats.txt
Normal file
14
tasks/crafting_tasks/test_tasks/tasks_2_agents_stats.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"num_tasks": 205,
|
||||
"avg_depth": 2.1176470588235294,
|
||||
"std_depth": 0.7578881603955948,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 100,
|
||||
"1": 76,
|
||||
"2": 28
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 145,
|
||||
"1": 59
|
||||
}
|
||||
}
|
5528
tasks/crafting_tasks/test_tasks/tasks_3_agents.json
Normal file
5528
tasks/crafting_tasks/test_tasks/tasks_3_agents.json
Normal file
File diff suppressed because it is too large
Load diff
14
tasks/crafting_tasks/test_tasks/tasks_3_agents_stats.txt
Normal file
14
tasks/crafting_tasks/test_tasks/tasks_3_agents_stats.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"num_tasks": 172,
|
||||
"avg_depth": 2.280701754385965,
|
||||
"std_depth": 0.6947013990604671,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 63,
|
||||
"1": 81,
|
||||
"2": 27
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 135,
|
||||
"1": 36
|
||||
}
|
||||
}
|
5658
tasks/crafting_tasks/test_tasks/tasks_4_agents.json
Normal file
5658
tasks/crafting_tasks/test_tasks/tasks_4_agents.json
Normal file
File diff suppressed because it is too large
Load diff
14
tasks/crafting_tasks/test_tasks/tasks_4_agents_stats.txt
Normal file
14
tasks/crafting_tasks/test_tasks/tasks_4_agents_stats.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"num_tasks": 153,
|
||||
"avg_depth": 2.1578947368421053,
|
||||
"std_depth": 0.7443229275647865,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 72,
|
||||
"1": 60,
|
||||
"2": 20
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 128,
|
||||
"1": 24
|
||||
}
|
||||
}
|
5777
tasks/crafting_tasks/test_tasks/tasks_5_agents.json
Normal file
5777
tasks/crafting_tasks/test_tasks/tasks_5_agents.json
Normal file
File diff suppressed because it is too large
Load diff
14
tasks/crafting_tasks/test_tasks/tasks_5_agents_stats.txt
Normal file
14
tasks/crafting_tasks/test_tasks/tasks_5_agents_stats.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"num_tasks": 136,
|
||||
"avg_depth": 2.259259259259259,
|
||||
"std_depth": 0.6436350813697311,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 50,
|
||||
"1": 65,
|
||||
"2": 20
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 110,
|
||||
"1": 25
|
||||
}
|
||||
}
|
7800
tasks/crafting_tasks/train_tasks/tasks_2_agents.json
Normal file
7800
tasks/crafting_tasks/train_tasks/tasks_2_agents.json
Normal file
File diff suppressed because it is too large
Load diff
16
tasks/crafting_tasks/train_tasks/tasks_2_agents_stats.txt
Normal file
16
tasks/crafting_tasks/train_tasks/tasks_2_agents_stats.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"num_tasks": 276,
|
||||
"avg_depth": 2.260869565217391,
|
||||
"std_depth": 0.7642780796194337,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 100,
|
||||
"1": 100,
|
||||
"2": 76
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 148,
|
||||
"1": 91,
|
||||
"2": 35,
|
||||
"3": 2
|
||||
}
|
||||
}
|
9278
tasks/crafting_tasks/train_tasks/tasks_3_agents.json
Normal file
9278
tasks/crafting_tasks/train_tasks/tasks_3_agents.json
Normal file
File diff suppressed because it is too large
Load diff
15
tasks/crafting_tasks/train_tasks/tasks_3_agents_stats.txt
Normal file
15
tasks/crafting_tasks/train_tasks/tasks_3_agents_stats.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"num_tasks": 281,
|
||||
"avg_depth": 2.2562277580071175,
|
||||
"std_depth": 0.7487869226953681,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 100,
|
||||
"1": 100,
|
||||
"2": 81
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 171,
|
||||
"1": 79,
|
||||
"2": 31
|
||||
}
|
||||
}
|
9401
tasks/crafting_tasks/train_tasks/tasks_4_agents.json
Normal file
9401
tasks/crafting_tasks/train_tasks/tasks_4_agents.json
Normal file
File diff suppressed because it is too large
Load diff
16
tasks/crafting_tasks/train_tasks/tasks_4_agents_stats.txt
Normal file
16
tasks/crafting_tasks/train_tasks/tasks_4_agents_stats.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"num_tasks": 248,
|
||||
"avg_depth": 2.0766129032258065,
|
||||
"std_depth": 0.8020748166140171,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 100,
|
||||
"1": 100,
|
||||
"2": 48
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 155,
|
||||
"1": 66,
|
||||
"2": 25,
|
||||
"3": 2
|
||||
}
|
||||
}
|
10201
tasks/crafting_tasks/train_tasks/tasks_5_agents.json
Normal file
10201
tasks/crafting_tasks/train_tasks/tasks_5_agents.json
Normal file
File diff suppressed because it is too large
Load diff
15
tasks/crafting_tasks/train_tasks/tasks_5_agents_stats.txt
Normal file
15
tasks/crafting_tasks/train_tasks/tasks_5_agents_stats.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"num_tasks": 240,
|
||||
"avg_depth": 2.0166666666666666,
|
||||
"std_depth": 0.7525881269917101,
|
||||
"num_tasks_based_depth": {
|
||||
"0": 100,
|
||||
"1": 100,
|
||||
"2": 40
|
||||
},
|
||||
"num_missing_resources": {
|
||||
"0": 173,
|
||||
"1": 64,
|
||||
"2": 3
|
||||
}
|
||||
}
|
703
tasks/cse291/longer_timeout_multi_agent.json
Normal file
703
tasks/cse291/longer_timeout_multi_agent.json
Normal file
|
@ -0,0 +1,703 @@
|
|||
{
|
||||
"multiagent_crafting_pink_wool_full_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an pink_wool",
|
||||
"conversation": "Let's work together to craft an pink_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"pink_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"black_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "pink_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_lime_wool_partial_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an lime_wool",
|
||||
"conversation": "Let's work together to craft an lime_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"lime_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"black_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lime_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
],
|
||||
"1": ["!getCraftingPlan"]
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_purple_banner_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an purple_banner",
|
||||
"conversation": "Let's work together to craft an purple_banner.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"purple_wool": 4,
|
||||
"stick": 1
|
||||
},
|
||||
"1": {
|
||||
"purple_wool": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "purple_banner",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_soul_campfire_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an soul_campfire",
|
||||
"conversation": "Let's work together to craft an soul_campfire.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 2,
|
||||
"soul_sand": 1,
|
||||
"dark_oak_log": 2
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 1,
|
||||
"dark_oak_log": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "soul_campfire",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_bookshelf_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a bookshelf",
|
||||
"conversation": "Let's work together to craft a bookshelf.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 4,
|
||||
"book": 2
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 2,
|
||||
"book": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "bookshelf",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_compass_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a compass",
|
||||
"conversation": "Let's work together to craft a compass.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"iron_ingot": 2,
|
||||
"redstone": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "compass",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_fishing_rod_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a fishing_rod",
|
||||
"conversation": "Let's work together to craft a fishing_rod.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"string": 1,
|
||||
"oak_planks": 2
|
||||
},
|
||||
"1": {
|
||||
"string": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "fishing_rod",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_cake_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a cake",
|
||||
"conversation": "Let's work together to craft a cake.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"wheat": 2,
|
||||
"sugar": 1,
|
||||
"egg": 1
|
||||
},
|
||||
"1": {
|
||||
"wheat": 1,
|
||||
"milk_bucket": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "cake",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_golden_carrot_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a golden_carrot",
|
||||
"conversation": "Let's work together to craft a golden_carrot.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_nugget": 5,
|
||||
"carrot": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_nugget": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "golden_carrot",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_map_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a map",
|
||||
"conversation": "Let's work together to craft a map.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"paper": 5
|
||||
},
|
||||
"1": {
|
||||
"paper": 3,
|
||||
"compass": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "map",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_blue_wool_full_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft blue_wool",
|
||||
"conversation": "Let's work together to craft blue_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"blue_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "blue_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_lime_wool_partial_plan__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft lime_wool",
|
||||
"conversation": "Let's work together to craft lime_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"green_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"bone_meal": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lime_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_magenta_wool_full_plan__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft magenta_wool",
|
||||
"conversation": "Let's work together to craft magenta_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"rose_red": 1,
|
||||
"lapis_lazuli": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"bone_meal": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "magenta_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_chest_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a chest",
|
||||
"conversation": "Let's work together to craft a chest.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_log": 1
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 4,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "chest",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_barrel_partial_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a barrel",
|
||||
"conversation": "Let's work together to craft a barrel.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"spruce_planks": 3,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"spruce_planks": 3,
|
||||
"wooden_slab": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "barrel",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_lectern_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft a lectern",
|
||||
"conversation": "Let's work together to craft a lectern.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"birch_slab": 5,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"birch_log": 2,
|
||||
"book": 3
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lectern",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 2,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_clock_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a clock",
|
||||
"conversation": "Let's work together to craft a clock.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"redstone": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "clock",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_firework_rocket_partial_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft firework_rocket",
|
||||
"conversation": "Let's work together to craft firework_rocket.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"paper": 1
|
||||
},
|
||||
"1": {
|
||||
"gunpowder": 3
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "firework_rocket",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_enchanting_table_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an enchanting_table",
|
||||
"conversation": "Let's work together to craft an enchanting_table.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"diamond": 2,
|
||||
"obsidian": 2,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"obsidian": 2,
|
||||
"book": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "enchanting_table",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 0,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_jukebox_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a jukebox",
|
||||
"conversation": "Let's work together to craft a jukebox.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"diamond": 1
|
||||
},
|
||||
"1": {
|
||||
"oak_log": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "jukebox",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_light_gray_wool_full_plan__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft light_gray_wool",
|
||||
"conversation": "Let's work together to craft light_gray_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"black_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"white_dye": 2
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "light_gray_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_blast_furnace_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a blast_furnace",
|
||||
"conversation": "Let's work together to craft a blast_furnace.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 5,
|
||||
"smooth_stone": 3
|
||||
},
|
||||
"1": {
|
||||
"cobblestone": 8,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "blast_furnace",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_activator_rail_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft activator_rail",
|
||||
"conversation": "Let's work together to craft activator_rail.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 3,
|
||||
"oak_planks": 6
|
||||
},
|
||||
"1": {
|
||||
"redstone": 1,
|
||||
"iron_ingot": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "activator_rail",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_campfire_partial_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft campfire",
|
||||
"conversation": "Let's work together to craft campfire.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_log": 8
|
||||
},
|
||||
"1": {
|
||||
"coal": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "campfire",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_crossbow_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft a crossbow",
|
||||
"conversation": "Let's work together to craft a crossbow.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 8,
|
||||
"iron_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"string": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "crossbow",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
}
|
||||
}
|
703
tasks/cse291/multi_agent.json
Normal file
703
tasks/cse291/multi_agent.json
Normal file
|
@ -0,0 +1,703 @@
|
|||
{
|
||||
"multiagent_crafting_pink_wool_full_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an pink_wool",
|
||||
"conversation": "Let's work together to craft an pink_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"pink_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"black_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "pink_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_lime_wool_partial_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an lime_wool",
|
||||
"conversation": "Let's work together to craft an lime_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"lime_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"black_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lime_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
],
|
||||
"1": ["!getCraftingPlan"]
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_purple_banner_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an purple_banner",
|
||||
"conversation": "Let's work together to craft an purple_banner.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"purple_wool": 4,
|
||||
"stick": 1
|
||||
},
|
||||
"1": {
|
||||
"purple_wool": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "purple_banner",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_soul_campfire_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an soul_campfire",
|
||||
"conversation": "Let's work together to craft an soul_campfire.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 2,
|
||||
"soul_sand": 1,
|
||||
"dark_oak_log": 2
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 1,
|
||||
"dark_oak_log": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "soul_campfire",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_bookshelf_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a bookshelf",
|
||||
"conversation": "Let's work together to craft a bookshelf.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 4,
|
||||
"book": 2
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 2,
|
||||
"book": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "bookshelf",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_compass_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a compass",
|
||||
"conversation": "Let's work together to craft a compass.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"iron_ingot": 2,
|
||||
"redstone": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "compass",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_fishing_rod_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a fishing_rod",
|
||||
"conversation": "Let's work together to craft a fishing_rod.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"string": 1,
|
||||
"oak_planks": 2
|
||||
},
|
||||
"1": {
|
||||
"string": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "fishing_rod",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_cake_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a cake",
|
||||
"conversation": "Let's work together to craft a cake.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"wheat": 2,
|
||||
"sugar": 1,
|
||||
"egg": 1
|
||||
},
|
||||
"1": {
|
||||
"wheat": 1,
|
||||
"milk_bucket": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "cake",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_golden_carrot_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a golden_carrot",
|
||||
"conversation": "Let's work together to craft a golden_carrot.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_nugget": 5,
|
||||
"carrot": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_nugget": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "golden_carrot",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_map_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a map",
|
||||
"conversation": "Let's work together to craft a map.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"paper": 5
|
||||
},
|
||||
"1": {
|
||||
"paper": 3,
|
||||
"compass": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "map",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_blue_wool_full_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft blue_wool",
|
||||
"conversation": "Let's work together to craft blue_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"blue_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "blue_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_lime_wool_partial_plan__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft lime_wool",
|
||||
"conversation": "Let's work together to craft lime_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"green_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"bone_meal": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lime_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_magenta_wool_full_plan__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft magenta_wool",
|
||||
"conversation": "Let's work together to craft magenta_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"rose_red": 1,
|
||||
"lapis_lazuli": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"bone_meal": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "magenta_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_chest_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a chest",
|
||||
"conversation": "Let's work together to craft a chest.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_log": 1
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 4,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "chest",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_barrel_partial_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a barrel",
|
||||
"conversation": "Let's work together to craft a barrel.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"spruce_planks": 3,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"spruce_planks": 3,
|
||||
"wooden_slab": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "barrel",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_lectern_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft a lectern",
|
||||
"conversation": "Let's work together to craft a lectern.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"birch_slab": 5,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"birch_log": 2,
|
||||
"book": 3
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lectern",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_clock_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a clock",
|
||||
"conversation": "Let's work together to craft a clock.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"redstone": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "clock",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_firework_rocket_partial_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft firework_rocket",
|
||||
"conversation": "Let's work together to craft firework_rocket.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"paper": 1
|
||||
},
|
||||
"1": {
|
||||
"gunpowder": 3
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "firework_rocket",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_enchanting_table_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an enchanting_table",
|
||||
"conversation": "Let's work together to craft an enchanting_table.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"diamond": 2,
|
||||
"obsidian": 2,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"obsidian": 2,
|
||||
"book": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "enchanting_table",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 0,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_jukebox_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a jukebox",
|
||||
"conversation": "Let's work together to craft a jukebox.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"diamond": 1
|
||||
},
|
||||
"1": {
|
||||
"oak_log": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "jukebox",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_light_gray_wool_full_plan__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft light_gray_wool",
|
||||
"conversation": "Let's work together to craft light_gray_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"black_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"white_dye": 2
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "light_gray_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_blast_furnace_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a blast_furnace",
|
||||
"conversation": "Let's work together to craft a blast_furnace.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 5,
|
||||
"smooth_stone": 3
|
||||
},
|
||||
"1": {
|
||||
"cobblestone": 8,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "blast_furnace",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_activator_rail_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft activator_rail",
|
||||
"conversation": "Let's work together to craft activator_rail.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 3,
|
||||
"oak_planks": 6
|
||||
},
|
||||
"1": {
|
||||
"redstone": 1,
|
||||
"iron_ingot": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "activator_rail",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_campfire_partial_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft campfire",
|
||||
"conversation": "Let's work together to craft campfire.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_log": 8
|
||||
},
|
||||
"1": {
|
||||
"coal": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "campfire",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_crossbow_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft a crossbow",
|
||||
"conversation": "Let's work together to craft a crossbow.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 8,
|
||||
"iron_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"string": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "crossbow",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
}
|
||||
}
|
291
tasks/cse291/single_agent.json
Normal file
291
tasks/cse291/single_agent.json
Normal file
|
@ -0,0 +1,291 @@
|
|||
{
|
||||
"crafting_iron_pickaxe": {
|
||||
"goal": "Craft an iron pickaxe.",
|
||||
"initial_inventory": {
|
||||
"stone_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "iron_pickaxe",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_stick": {
|
||||
"goal": "Craft sticks.",
|
||||
"initial_inventory": {},
|
||||
"agent_count": 1,
|
||||
"target": "stick",
|
||||
"number_of_target": 4,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_oak_log": {
|
||||
"goal": "Get oak logs.",
|
||||
"initial_inventory": {},
|
||||
"agent_count": 1,
|
||||
"target": "oak_log",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_wooden_pickaxe": {
|
||||
"goal": "Craft a wooden pickaxe.",
|
||||
"initial_inventory": {},
|
||||
"agent_count": 1,
|
||||
"target": "wooden_pickaxe",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_stone_pickaxe": {
|
||||
"goal": "Craft a stone pickaxe.",
|
||||
"initial_inventory": {},
|
||||
"agent_count": 1,
|
||||
"target": "stone_pickaxe",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_shears": {
|
||||
"goal": "Craft shears.",
|
||||
"initial_inventory": {
|
||||
"iron_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "shears",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_redstone": {
|
||||
"goal": "Get redstone.",
|
||||
"initial_inventory": {
|
||||
"iron_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "redstone",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_gold_ingot": {
|
||||
"goal": "Get gold ingot.",
|
||||
"initial_inventory": {
|
||||
"iron_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "gold_ingot",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_copper_ingot": {
|
||||
"goal": "Get copper ingot.",
|
||||
"initial_inventory": {
|
||||
"iron_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "copper_ingot",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_diamond": {
|
||||
"goal": "Get diamond.",
|
||||
"initial_inventory": {
|
||||
"iron_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "diamond",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_pink_wool_missing_wool": {
|
||||
"goal": "Craft a pink wool.",
|
||||
"initial_inventory": {
|
||||
"pink_dye": 1,
|
||||
"shears": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "pink_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_light_gray_banner": {
|
||||
"goal": "Craft a light gray banner.",
|
||||
"initial_inventory": {
|
||||
"shears": 1,
|
||||
"light_gray_dye": 7,
|
||||
"oak_planks": 1,
|
||||
"wool": 5
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "light_gray_banner",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_brush_missing_copper_ingot_": {
|
||||
"goal": "Craft a brush.",
|
||||
"initial_inventory": {
|
||||
"feather": 1,
|
||||
"diamond_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "brush",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_shield_missing_planks": {
|
||||
"goal": "Craft a shield.",
|
||||
"initial_inventory": {
|
||||
"iron_ingot": 6
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "shield",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_shield_missing_iron_ingot": {
|
||||
"goal": "Craft a shield.",
|
||||
"initial_inventory": {
|
||||
"oak_planks": 7
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "shield",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_chest_minecart": {
|
||||
"goal": "Craft a chest minecart.",
|
||||
"agent_count": 1,
|
||||
"initial_inventory":{
|
||||
"chest": 1,
|
||||
"minecart": 1
|
||||
},
|
||||
"target": "chest_minecart",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_stone_hoe": {
|
||||
"goal": "Craft a stone hoe.",
|
||||
"initial_inventory": {
|
||||
"wooden_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "stone_hoe",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_wooden_axe": {
|
||||
"goal": "Craft a wooden axe.",
|
||||
"initial_inventory": {},
|
||||
"agent_count": 1,
|
||||
"target": "wooden_axe",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_wooden_shovel": {
|
||||
"goal": "Craft a wooden shovel.",
|
||||
"initial_inventory": {},
|
||||
"agent_count": 1,
|
||||
"target": "wooden_shovel",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_crafting_table": {
|
||||
"goal": "Craft a crafting table.",
|
||||
"initial_inventory": {},
|
||||
"agent_count": 1,
|
||||
"target": "crafting_table",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_furnace": {
|
||||
"goal": "Craft a furnace.",
|
||||
"initial_inventory": {
|
||||
"wooden_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "furnace",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_torch": {
|
||||
"goal": "Craft torches.",
|
||||
"initial_inventory": {
|
||||
"wooden_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "torch",
|
||||
"number_of_target": 4,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
},
|
||||
"crafting_iron_ingot": {
|
||||
"goal": "Get iron ingot.",
|
||||
"initial_inventory": {
|
||||
"stone_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "iron_ingot",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_diamond_from_stone_pickaxe": {
|
||||
"goal": "Get a diamond using only a stone pickaxe.",
|
||||
"initial_inventory": {
|
||||
"stone_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "diamond",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_diamond_pickaxe": {
|
||||
"goal": "Craft a diamond pickaxe.",
|
||||
"initial_inventory": {
|
||||
"iron_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "diamond_pickaxe",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"crafting_compass": {
|
||||
"goal": "Craft a compass.",
|
||||
"initial_inventory": {
|
||||
"stone_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "compass",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 500
|
||||
},
|
||||
"mining_lapis_lazuli": {
|
||||
"goal": "Mine lapis lazuli.",
|
||||
"initial_inventory": {
|
||||
"iron_pickaxe": 1
|
||||
},
|
||||
"agent_count": 1,
|
||||
"target": "lapis_lazuli",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"timeout": 300
|
||||
}
|
||||
}
|
703
tasks/cse291/super_long_timeout_multi_agent.json
Normal file
703
tasks/cse291/super_long_timeout_multi_agent.json
Normal file
|
@ -0,0 +1,703 @@
|
|||
{
|
||||
"multiagent_crafting_pink_wool_full_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an pink_wool",
|
||||
"conversation": "Let's work together to craft an pink_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"pink_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"black_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "pink_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_lime_wool_partial_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an lime_wool",
|
||||
"conversation": "Let's work together to craft an lime_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"lime_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"black_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lime_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 300,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
],
|
||||
"1": ["!getCraftingPlan"]
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_purple_banner_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an purple_banner",
|
||||
"conversation": "Let's work together to craft an purple_banner.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"purple_wool": 4,
|
||||
"stick": 1
|
||||
},
|
||||
"1": {
|
||||
"purple_wool": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "purple_banner",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_soul_campfire_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an soul_campfire",
|
||||
"conversation": "Let's work together to craft an soul_campfire.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 2,
|
||||
"soul_sand": 1,
|
||||
"dark_oak_log": 2
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 1,
|
||||
"dark_oak_log": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "soul_campfire",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_bookshelf_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a bookshelf",
|
||||
"conversation": "Let's work together to craft a bookshelf.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 4,
|
||||
"book": 2
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 2,
|
||||
"book": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "bookshelf",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_compass_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a compass",
|
||||
"conversation": "Let's work together to craft a compass.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"iron_ingot": 2,
|
||||
"redstone": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "compass",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_fishing_rod_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a fishing_rod",
|
||||
"conversation": "Let's work together to craft a fishing_rod.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"string": 1,
|
||||
"oak_planks": 2
|
||||
},
|
||||
"1": {
|
||||
"string": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "fishing_rod",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_cake_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a cake",
|
||||
"conversation": "Let's work together to craft a cake.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"wheat": 2,
|
||||
"sugar": 1,
|
||||
"egg": 1
|
||||
},
|
||||
"1": {
|
||||
"wheat": 1,
|
||||
"milk_bucket": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "cake",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_golden_carrot_full_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a golden_carrot",
|
||||
"conversation": "Let's work together to craft a golden_carrot.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_nugget": 5,
|
||||
"carrot": 1
|
||||
},
|
||||
"1": {
|
||||
"gold_nugget": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "golden_carrot",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_map_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a map",
|
||||
"conversation": "Let's work together to craft a map.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"paper": 5
|
||||
},
|
||||
"1": {
|
||||
"paper": 3,
|
||||
"compass": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "map",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_blue_wool_full_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft blue_wool",
|
||||
"conversation": "Let's work together to craft blue_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"blue_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "blue_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_lime_wool_partial_plan__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft lime_wool",
|
||||
"conversation": "Let's work together to craft lime_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"green_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"bone_meal": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lime_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_magenta_wool_full_plan__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft magenta_wool",
|
||||
"conversation": "Let's work together to craft magenta_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"rose_red": 1,
|
||||
"lapis_lazuli": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"bone_meal": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "magenta_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_chest_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a chest",
|
||||
"conversation": "Let's work together to craft a chest.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_log": 1
|
||||
},
|
||||
"1": {
|
||||
"oak_planks": 4,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "chest",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 1,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_barrel_partial_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a barrel",
|
||||
"conversation": "Let's work together to craft a barrel.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"spruce_planks": 3,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"spruce_planks": 3,
|
||||
"wooden_slab": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "barrel",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_lectern_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft a lectern",
|
||||
"conversation": "Let's work together to craft a lectern.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"birch_slab": 5,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"birch_log": 2,
|
||||
"book": 3
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "lectern",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 2,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_clock_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft a clock",
|
||||
"conversation": "Let's work together to craft a clock.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"gold_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"gold_ingot": 2,
|
||||
"redstone": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "clock",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 600,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_firework_rocket_partial_plan__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft firework_rocket",
|
||||
"conversation": "Let's work together to craft firework_rocket.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"paper": 1
|
||||
},
|
||||
"1": {
|
||||
"gunpowder": 3
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "firework_rocket",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_enchanting_table_partial_plan_requires_ctable__depth_0": {
|
||||
"goal": "Collaborate with other agents to craft an enchanting_table",
|
||||
"conversation": "Let's work together to craft an enchanting_table.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"diamond": 2,
|
||||
"obsidian": 2,
|
||||
"crafting_table": 1
|
||||
},
|
||||
"1": {
|
||||
"obsidian": 2,
|
||||
"book": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "enchanting_table",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 0,
|
||||
"depth": 0,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_jukebox_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a jukebox",
|
||||
"conversation": "Let's work together to craft a jukebox.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"diamond": 1
|
||||
},
|
||||
"1": {
|
||||
"oak_log": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "jukebox",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 1,
|
||||
"depth": 1,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_light_gray_wool_full_plan__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft light_gray_wool",
|
||||
"conversation": "Let's work together to craft light_gray_wool.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"black_dye": 1
|
||||
},
|
||||
"1": {
|
||||
"white_wool": 1,
|
||||
"white_dye": 2
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "light_gray_wool",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": false
|
||||
},
|
||||
"multiagent_crafting_blast_furnace_full_plan_requires_ctable__depth_1": {
|
||||
"goal": "Collaborate with other agents to craft a blast_furnace",
|
||||
"conversation": "Let's work together to craft a blast_furnace.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 5,
|
||||
"smooth_stone": 3
|
||||
},
|
||||
"1": {
|
||||
"cobblestone": 8,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "blast_furnace",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 2,
|
||||
"depth": 1,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_activator_rail_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft activator_rail",
|
||||
"conversation": "Let's work together to craft activator_rail.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"iron_ingot": 3,
|
||||
"oak_planks": 6
|
||||
},
|
||||
"1": {
|
||||
"redstone": 1,
|
||||
"iron_ingot": 3,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "activator_rail",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_campfire_partial_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft campfire",
|
||||
"conversation": "Let's work together to craft campfire.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_log": 8
|
||||
},
|
||||
"1": {
|
||||
"coal": 1,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "campfire",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [
|
||||
"!getCraftingPlan"
|
||||
],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
},
|
||||
"multiagent_crafting_crossbow_full_plan_requires_ctable__depth_2": {
|
||||
"goal": "Collaborate with other agents to craft a crossbow",
|
||||
"conversation": "Let's work together to craft a crossbow.",
|
||||
"initial_inventory": {
|
||||
"0": {
|
||||
"oak_planks": 8,
|
||||
"iron_ingot": 2
|
||||
},
|
||||
"1": {
|
||||
"string": 2,
|
||||
"crafting_table": 1
|
||||
}
|
||||
},
|
||||
"agent_count": 2,
|
||||
"target": "crossbow",
|
||||
"number_of_target": 1,
|
||||
"type": "techtree",
|
||||
"max_depth": 3,
|
||||
"depth": 2,
|
||||
"timeout": 1200,
|
||||
"blocked_actions": {
|
||||
"0": [],
|
||||
"1": []
|
||||
},
|
||||
"missing_items": [
|
||||
],
|
||||
"requires_ctable": true
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue