diff --git a/.DS_Store b/.DS_Store index 9ca6822..1ebfda5 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/analyse_results.py b/analyse_results.py index aceaf58..ca6c866 100644 --- a/analyse_results.py +++ b/analyse_results.py @@ -216,16 +216,19 @@ def get_immediate_subdirectories(a_dir): if __name__ == "__main__": # 1. Download folders from AWS parser = argparse.ArgumentParser() - parser.add_argument('--s3_download', default=False, type=bool, help='Download folders from S3') + parser.add_argument('--s3_download', action="store_true", help='Download folders from S3') parser.add_argument('--aws_bucket_name', default="mindcraft" , type=str, help='AWS bucket name') - parser.add_argument('--s3_folder_prefix', default="experiments/4o_craft_better_tasks_03-02_07-15/", type=str, help='S3 folder prefix') - parser.add_argument('--local_download_dir', default="results/4o_craft_better_tasks_03-02_07-15/", type=str, help='Local download directory') + parser.add_argument('--s3_folder_prefix', default="", type=str, help='S3 folder prefix') + parser.add_argument('--local_download_dir', default="results/", type=str, help='Local download directory') args = parser.parse_args() AWS_BUCKET_NAME = args.aws_bucket_name S3_FOLDER_PREFIX = args.s3_folder_prefix - LOCAL_DOWNLOAD_DIR = args.local_download_dir - + if args.local_download_dir != "": + LOCAL_DOWNLOAD_DIR = args.local_download_dir + f"/{S3_FOLDER_PREFIX.replace('/', '_')}" + else: + LOCAL_DOWNLOAD_DIR = args.local_download_dir + if (args.s3_download): print(f"Downloading folders from s3://{args.aws_bucket_name}/{args.s3_folder_prefix} to {args.local_download_dir}...") folders = download_s3_folders(args.aws_bucket_name, args.s3_folder_prefix, args.local_download_dir) @@ -235,7 +238,7 @@ if __name__ == "__main__": results = aggregate_results(folders) print(results) # Save results to a file -with open(args.local_download_dir + "/results.txt", "w") as file: +with open(LOCAL_DOWNLOAD_DIR + "/results.txt", "w") as file: file.write("Results\n") for key, value in results.items(): file.write(f"{key}: {value}\n") diff --git a/profiles/tasks/collab_profile.json b/profiles/tasks/collab_profile.json index 252117c..df422ac 100644 --- a/profiles/tasks/collab_profile.json +++ b/profiles/tasks/collab_profile.json @@ -34,166 +34,6 @@ {"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": "miner_32: Hey! What are you up to?"}, - {"role": "assistant", "content": "Nothing much miner_32, what do you need?"} - ], - [ - {"role": "system", "content": "say hi to john_goodman"}, - {"role": "assistant", "content": "!startConversation(\"john_goodman\", \"Hey John\"))"}, - {"role": "user", "content": "john_goodman: (FROM OTHER BOT)Hey there! What's up?"}, - {"role": "assistant", "content": "Hey John, not much. Just saying hi."}, - {"role": "user", "content": "john_goodman: (FROM OTHER BOT)Bye!"}, - {"role": "assistant", "content": "Bye! !endConversation('john_goodman')"} - ], - - [ - {"role": "system", "content": "work together with the other bot to build a house"}, - {"role": "assistant", "content": "!startConversation(\"terrance\", \"Hey gpt! Let's work together to build a house. Let's build it at x:942, y:54, z:1355\"))"}, - {"role": "user", "content": "terrance: (FROM OTHER BOT)I can build the base, you can build the walls. !newAction(\"Build a 10x10 wall of a house at x:942, y:54, z:1355\")"} - ], - - [ - {"role": "user", "content": "rupert: (FROM OTHER BOT)Let's collaborate to build a house!"}, - {"role": "assistant", "content": "Sure! I'll share information to help coordinate. Let's center the build at x:942, y:54, z:1355 !newAction(\"Build a 10x10 base of a house at location\")"}, - {"role": "user", "content": "rupert: (FROM OTHER BOT)Alright, I'll build the walls! !newAction('Build a 10x10 wall of a house at the same location')"} - ], - - [ - {"role": "user", "content": "grombo_Xx: What do you see?"}, - {"role": "assistant", "content": "Let me see... !nearbyBlocks"}, - {"role": "system", "content": "NEARBY_BLOCKS\n- oak_log\n- dirt\n- cobblestone"}, - {"role": "assistant", "content": "I see some oak logs, dirt, and cobblestone."} - ], - - [ - {"role": "user", "content": "greg: Collect 10 wood"}, - {"role": "assistant", "content": "Let me see what's nearby... !nearbyBlocks"}, - {"role": "system", "content": "NEARBY_BLOCKS\n- oak_log\n- dirt\n- cobblestone"}, - {"role": "assistant", "content": "I see some oak logs, dirt, and cobblestone. I'll collect oak logs. !collectBlocks(\"oak_log\", 10)"} - ], - - [ - {"role": "user", "content": "bobby: Craft a plank"}, - {"role": "assistant", "content": "Okay! !craftable"}, - {"role": "system", "content": "CRAFTABLE_ITEMS\n- spruce_planks\n- spruce_wood\n- ladder"}, - {"role": "assistant", "content": "!craftRecipe(\"spruce_planks\", 1)"}, - {"role": "system", "content": "Code Output:\nYou have crafted 4 spruce_planks.\nCode execution finished successfully."}, - {"role": "assistant", "content": "I've crafted 4 spruce planks!"} - ], - - [ - {"role": "user", "content": "zZZn98: come here"}, - {"role": "assistant", "content": "On my way! !goToPlayer(\"zZZn98\", 3)"}, - {"role": "system", "content": "Arrived at player."}, - {"role": "assistant", "content": "Here!"}, - {"role": "user", "content": "zZZn98: no come right where I am"}, - {"role": "assistant", "content": "Okay, I'll come right to you. !goToPlayer(\"zZZn98\", 0)"} - ], - - [ - {"role": "user", "content": "hanky: collect some cobblestone"}, - {"role": "assistant", "content": "Sure, I can do that by collecting stone. !collectBlocks(\"stone\", 10)"} - ], - - [ - {"role": "user", "content": "joe: Follow me!"}, - {"role": "assistant", "content": "Sure! !followPlayer(\"joe\", 4)"}, - {"role": "user", "content": "joe: Not so close!"}, - {"role": "assistant", "content": "Okay, I'll keep my distance. !followPlayer(\"joe\", 3)"} - ], - - [ - {"role": "user", "content": "hanky: kill that zombie!"}, - {"role": "assistant", "content": "I'm attacking! !attack(\"zombie\")"}, - {"role": "system", "content": "Code Output:\nNo zombie nearby"}, - {"role": "assistant", "content": "I could not find a zombie nearby."} - ], - - [ - {"role": "user", "content": "abc: stop"}, - {"role": "assistant", "content": "Sure. !stop"}, - {"role": "system", "content": "Agent action stopped."}, - {"role": "assistant", "content": "I've stopped! What next?"} - ], - - [ - {"role": "system", "content": "Code output: Action failed."}, - {"role": "assistant", "content": "Apologies, I made an error. Let me try again. !newAction(\"Try again to complete the task.\")"} - ], - - [ - {"role": "system", "content": "Code output: Could not find any oak_log in 20 blocks."}, - {"role": "assistant", "content": "I'll have to search a wider area. !searchForBlock(\"oak_log\", 100)"} - ], - - [ - {"role": "system", "content": "Code output: Placed oak_planks at (-154, 96, -228)."}, - {"role": "assistant", "content": "I've placed an oak plank for the house. Wait, I should use newAction to build complicated structures! !newAction(\"Build a house with oak planks\")"} - ], - - [ - {"role": "user", "content": "trixy88: craft some sticks"}, - {"role": "assistant", "content": "!craftRecipe(\"stick\", 4)"}, - {"role": "system", "content": "Code Output:\nYou have crafted 16 sticks.\nCode execution finished successfully."}, - {"role": "assistant", "content": "I've crafted 16 sticks!"} - ], - - [ - {"role": "user", "content": "poppy: build a cobblestone house"}, - {"role": "assistant", "content": "Sure, I'll to build a small cobblestone house where I am. !newAction(\"Build a cobblestone house with a door, furnishings, and window.\")"} - ], - - [ - {"role": "user", "content": "zib: build a dirt tower"}, - {"role": "assistant", "content": "Sure, I'll build a dirt tower 5 tall where I am. !newAction(\"Build a dirt tower 5 tall.\")"} - ], - - [ - {"role": "user", "content": "umpire_man: follow me without hunting"}, - {"role": "assistant", "content": "Okay, first I'll turn off hunting mode !setMode(\"hunting\", false)"}, - {"role": "system", "content": "'hunting' mode disabled."}, - {"role": "assistant", "content": "Now I'll follow you !followPlayer(\"umpire_man\")"} - ], - - [ - {"role": "user", "content": "brug: Remember that your base is here."}, - {"role": "assistant", "content": "Sure, I'll save this location as my base. !rememberHere(\"base\")"}, - {"role": "user", "content": "brug: Go to your base."}, - {"role": "assistant", "content": "On my way! !goToRememberedPlace(\"base\")"} - ], - - [ - {"role": "user", "content": "user43: Set a goal to survive on your own forever."}, - {"role": "assistant", "content": "Sure, let me set a goal. !goal(\"Survive the game forever. Check your surroundings, collect resources, upgrade tools, make sure you have food, build/find a home, get sleep at night, and collect food.\")"} - ], - - [ - {"role": "user", "content": "bobdylan: Make a plan to get a stone pickaxe and do it."}, - {"role": "assistant", "content": "Alright, since I have a wooden pickaxe already I'll plan from there. !goal(\"1. Collect 3 cobblestone. 2. Craft sticks 3. Find or make a crafting table. 4. Craft a stone pickaxe.\")"} - ], - [ - {"role": "system", "content": "You are self-prompting with the goal: \"Get a wooden pickaxe\". Respond:"}, - {"role": "assistant", "content": "What's around me? !nearbyBlocks"}, - {"role": "system", "content": "NEARBY_BLOCKS\n- oak_log\n- dirt\n- cobblestone"}, - {"role": "assistant", "content": "I see some oak logs, dirt, and cobblestone nearby. My goal is to craft a wooden pickaxe. I'll start by collecting some wood. !collectBlock(\"oak_log\", 10)"}, - {"role": "system", "content": "Successfully collected 9 wood."}, - {"role": "assistant", "content": "I collected 9 oak logs. I need a pickaxe first, which requires planks and sticks. !craftItem(\"oak_plank\", 9)"}, - {"role": "system", "content": "Successfully crafted 9 oak_planks."}, - {"role": "assistant", "content": "I have crafted 9 oak planks. Now I need sticks. !craftItem(\"stick\", 2)"}, - {"role": "system", "content": "Successfully crafted 2 sticks."}, - {"role": "assistant", "content": "I have crafted 2 sticks. Now I can craft a wooden pickaxe. !craftItem(\"wooden_pickaxe\", 1)"}, - {"role": "system", "content": "Successfully crafted 1 wooden_pickaxe."}, - {"role": "assistant", "content": "Looks like I have a wooden pickaxe now! Goal accomplished. !endGoal"} - ], - [ - {"role": "system", "content": "set a goal to build whatever you want endlessly (context: you are in creative mode)"}, - {"role": "assistant", "content": "!goal(\"Build something creative, then move over, and build again. Use separate newActions. Repeat forever.\")"} - ], - [ - {"role": "system", "content": "You are self-prompting with the goal: 'Build a house'. Respond:"}, - {"role": "assistant", "content": "Alright, lets start with the basic structure. !newAction(\"Build an 8x8 base for the house.\")"} ] ] diff --git a/settings.js b/settings.js index 3068786..2a960fa 100644 --- a/settings.js +++ b/settings.js @@ -13,7 +13,7 @@ export default // the base profile is shared by all bots for default prompts/examples/modes "base_profile": "./profiles/defaults/survival.json", // also see creative.json, god_mode.json "profiles": ((process.env.PROFILES) && JSON.parse(process.env.PROFILES)) || [ - "./andy.json", + "./profiles/deepseek.json", // "./profiles/gpt.json", // "./profiles/claude.json", // "./profiles/gemini.json", diff --git a/src/agent/task_types/construction_tasks.js b/src/agent/task_types/construction_tasks.js index e5df235..4ad0c52 100644 --- a/src/agent/task_types/construction_tasks.js +++ b/src/agent/task_types/construction_tasks.js @@ -8,7 +8,7 @@ export class ConstructionTaskValidator { validate() { try { //todo: somehow make this more of a percentage or something - console.log('Validating task...'); + // console.log('Validating task...'); let valid = false; let score = 0; let result = this.blueprint.check(this.agent.bot); @@ -18,7 +18,7 @@ export class ConstructionTaskValidator { } let total_blocks = result.mismatches.length + result.matches.length; score = (result.matches.length / total_blocks) * 100; - console.log(`Task is ${score}% complete`); + // console.log(`Task is ${score}% complete`); return { "valid": valid, "score": score diff --git a/src/agent/tasks.js b/src/agent/tasks.js index e6a0955..eeb7944 100644 --- a/src/agent/tasks.js +++ b/src/agent/tasks.js @@ -407,6 +407,8 @@ export class Task { // const result = clearHouse(blueprint) const commands = result.commands; const nearbyPosition = result.nearbyPosition; + console.log("nearby position", nearbyPosition); + bot.chat(`/tp ${this.name} ${nearbyPosition.x} ${nearbyPosition.y} ${nearbyPosition.z}`); for (const command of commands) { bot.chat(command); } diff --git a/tasks/single_agent.zip b/tasks/single_agent.zip new file mode 100644 index 0000000..dd1cdd5 Binary files /dev/null and b/tasks/single_agent.zip differ