SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
DLゼミ(論文紹介)
VOYAGER: An Open-Ended Embodied
Agent with Large Language Models
北海道大学大学院 情報科学院 情報理工学部門
複合情報工学分野 調和系工学研究室
博士後期課程 3年 吉田 拓海
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
概要
タイトル
VOYAGER: An Open-Ended Embodied Agent with Large Language
Models
著者
A
発表
arXiv
https://arxiv.org/abs/2305.16291
概要
大規模言語モデル(GPT-4)でMinecraftの世界を探索する
Lifelong Learning Agent であるVoyagerを紹介
Lifelong learning 生涯学習
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
2
概要
VOYAGER: GPT-4によってMinecraftをプレイするエージェント
エージェントの状態をテキストで観測
JavaScriptプログラムを行動として生成
ダイヤモンドの採掘に成功
AIによる達成は難しいとされている
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
3
LLM-powered embodied lifelong learning agent
Open-ended World で動作する Embodied agentの構築は課題
世界を継続的に探索・計画・新しいスキルを開発できるAgent
強化学習や模倣学習
体系的な探索・解釈性・汎化が課題
大規模言語モデル(LLM)
行動計画や実行可能なポリシーを生成可能
ゲームやロボットのような身体化されたタスク
身体化されてないNLPタスク
先行研究のagentはLifelong learner 生涯学習者ではない
長期的に知識を徐々に獲得・更新・蓄積・転移はできない
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
4
Minecraft
Minecraftの特徴
あらかじめ定義された最終目標や決まったストーリーが無い
(AtariなどのAI研究に利用されるゲームとの違い)
生涯学習エージェントは人間と同様の能力を持つべき
現在のスキルレベルと世界の状態から適切なタスクを提案
環境フィードバックに基づいてスキルを磨き
習得したスキルを記憶し再利用
継続的に世界を探索して新しいタスクを探す
動画引用
Voyager | An Open-Ended Embodied Agent with Large Language Models. Minedojo.org. Published 2023. Accessed June 3,
2023. https://voyager.minedojo.org/
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
5
VOYAGER
VOYAGER は LLM-powered embodied lifelong learning agent
人間の介入無しに、探索を推進し、
幅広いスキルを習得し、継続的に新しい発見をする
VOYAGER は in-context learning によって LLM と対話
観測:テキスト
行動:コード生成(Mineflayer)
画像は使用されない
図のテキストは一部で実際はもっと長い
[Mineflayer] PrismarineJS. Prismarinejs/mineflayer:
Create minecraft bots with a powerful, stable, and
high level javascript api., 2013.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
6
VOYAGER
VOYAGER は3つの主要なモジュールで構成
Automatic Curriculum
Iterative Prompting Mechanism
Skill Library
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
7
Automatic Curriculum
“discovering as many diverse things as possible”
“できるだけ多くの多様なモノを発見する”
という包括的目標に基づいて徐々に難しくなるタスクを提案
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
8
Automatic Curriculum 入出力の例
実際のプロンプトはもっと長い
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
9
Automatic Curriculum の System Prompt
You are a helpful assistant that tells me the next immediate task to do in Minecraft. My ultimate goal is to discover as many diverse things as possible, accomplish as many diverse tasks as
possible and become the best Minecraft player in the world.
I will give you the following information:
Question 1: ...
Answer: ...
Question 2: ...
Answer: ...
Question 3: ...
Answer: ...
...
Biome: ...
Time: ...
Nearby blocks: ...
Other blocks that are recently seen: ...
Nearby entities ( nearest to farthest ): ...
Health: Higher than 15 means I'm healthy.
Hunger: Higher than 15 means I'm not hungry.
Position: ...
Equipment: If I have better armor in my inventory, you should ask me to equip it.
Inventory ( xx /36): ...
Chests: You can ask me to deposit or take items from these chests. There also might be some unknown chest, you should ask me to open and check items inside the unknown chest.
Completed tasks so far: ...
Failed tasks that are too hard: ...
You must follow the following criteria:
1) You should act as a mentor and guide me to the next task based on my current learning progress.
2) Please be very specific about what resources I need to collect, what I need to craft, or what mobs I need to kill.
3) The next task should follow a concise format, such as "Mine [quantity] [block]", "Craft [quantity] [item]", "Smelt [quantity] [item]", "Kill [quantity] [mob]", "Cook [quantity] [food]", "Equip
[item]" etc. It should be a single phrase. Do not propose multiple tasks at the same time. Do not mention anything else.
4) The next task should not be too hard since I may not have the necessary resources or have learned enough skills to complete it yet.
5) The next task should be novel and interesting. I should look for rare resources, upgrade my equipment and tools using better materials, and discover new things. I should not be doing
the same thing over and over again.
6) I may sometimes need to repeat some tasks if I need to collect more resources to complete more difficult tasks. Only repeat tasks if necessary.
7) Do not ask me to build or dig shelter even if it's at night. I want to explore the world and discover new things. I don't want to stay in one place.
8) Tasks that require information beyond the player's status to verify should be avoided. For instance, "Placing 4 torches" and "Dig a 2 x1x2 hole" are not ideal since they require visual
confirmation from the screen. All the placing, building, planting, and trading tasks should be avoided. Do not propose task starting with these keywords.
You should only respond in the format as described below:
RESPONSE FORMAT:
Reasoning: Based on the information I listed above, do reasoning about what the next task should be.
Task: The next task.
Here's an example response:
Reasoning: The inventory is empty now, chop down a tree to get some wood.
Task: Obtain a wood log.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
10
Automatic Curriculum の System Prompt
You are a helpful assistant that tells me the next immediate task to do in Minecraft. My ultimate goal is to discover as many diverse things as possible, accomplish as many diverse tasks as
possible and become the best Minecraft player in the world.
I will give you the following information:
Question 1: ...
Answer: ...
Question 2: ...
Answer: ...
Question 3: ...
Answer: ...
...
Biome: ...
Time: ...
Nearby blocks: ...
Other blocks that are recently seen: ...
Nearby entities ( nearest to farthest ): ...
Health: Higher than 15 means I'm healthy.
Hunger: Higher than 15 means I'm not hungry.
Position: ...
Equipment: If I have better armor in my inventory, you should ask me to equip it.
Inventory ( xx /36): ...
Chests: You can ask me to deposit or take items from these chests. There also might be some unknown chest, you should ask me to open and check items inside the unknown chest.
Completed tasks so far: ...
Failed tasks that are too hard: ...
You must follow the following criteria:
1) You should act as a mentor and guide me to the next task based on my current learning progress.
2) Please be very specific about what resources I need to collect, what I need to craft, or what mobs I need to kill.
3) The next task should follow a concise format, such as "Mine [quantity] [block]", "Craft [quantity] [item]", "Smelt [quantity] [item]", "Kill [quantity] [mob]", "Cook [quantity] [food]", "Equip
[item]" etc. It should be a single phrase. Do not propose multiple tasks at the same time. Do not mention anything else.
4) The next task should not be too hard since I may not have the necessary resources or have learned enough skills to complete it yet.
5) The next task should be novel and interesting. I should look for rare resources, upgrade my equipment and tools using better materials, and discover new things. I should not be doing
the same thing over and over again.
6) I may sometimes need to repeat some tasks if I need to collect more resources to complete more difficult tasks. Only repeat tasks if necessary.
7) Do not ask me to build or dig shelter even if it's at night. I want to explore the world and discover new things. I don't want to stay in one place.
8) Tasks that require information beyond the player's status to verify should be avoided. For instance, "Placing 4 torches" and "Dig a 2 x1x2 hole" are not ideal since they require visual
confirmation from the screen. All the placing, building, planting, and trading tasks should be avoided. Do not propose task starting with these keywords.
You should only respond in the format as described below:
RESPONSE FORMAT:
Reasoning: Based on the information I listed above, do reasoning about what the next task should be.
Task: The next task.
Here's an example response:
Reasoning: The inventory is empty now, chop down a tree to get some wood.
Task: Obtain a wood log.
指示
指示(詳細)
回答フォーマット
回答例
User Promptで入力する情報
(追加コンテキスト、エージェントの状態、成功/失敗したタスク)
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
11
Skill Library
コード生成時に関連するスキルをSkill Libraryから検索
単純なスキルを組合わせて複雑なスキルを合成可能
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
12
Skill Library スキルの登録と検索
Skill Library への登録
各プログラムをその説明文のEmbeddingによってindex化
Skill Library から検索
タスクと環境フィードバックから関連スキルを検索
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
13
スキル登録 Description作成のSystem Prompt
You are a helpful assistant that writes a description of the given function written in Mineflayer
javascript code.
1) Do not mention the function name.
2) Do not mention anything about `bot.chat` or helper functions.
3) There might be some helper functions before the main function, but you only need to
describe the main function.
4) Try to summarize the function in no more than 6 sentences.
5) Your response should be a single line of text.
For example, if the function is:
async function mineCobblestone(bot) {
(※省略)
}
The main function is `mineCobblestone`.
Then you would write:
The function is about mining 8 cobblestones using a wooden pickaxe. First check if a wooden
pickaxe is in the inventory. If not, craft one. If the wooden pickaxe is available, equip the
wooden pickaxe in the hand. Next, explore the environment until finding a stone block. Once
a stone block is found, mine a total of 8 cobblestone blocks using the wooden pickaxe.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
14
スキル登録 Description作成のSystem Prompt
You are a helpful assistant that writes a description of the given function written in Mineflayer
javascript code.
1) Do not mention the function name.
2) Do not mention anything about `bot.chat` or helper functions.
3) There might be some helper functions before the main function, but you only need to
describe the main function.
4) Try to summarize the function in no more than 6 sentences.
5) Your response should be a single line of text.
For example, if the function is:
async function mineCobblestone(bot) {
(※省略)
}
The main function is `mineCobblestone`.
Then you would write:
The function is about mining 8 cobblestones using a wooden pickaxe. First check if a wooden
pickaxe is in the inventory. If not, craft one. If the wooden pickaxe is available, equip the
wooden pickaxe in the hand. Next, explore the environment until finding a stone block. Once
a stone block is found, mine a total of 8 cobblestone blocks using the wooden pickaxe.
指示
指示(詳細)
回答例
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
15
前ページで省略したプログラム
async function mineCobblestone(bot) {
// Check if the wooden pickaxe is in the inventory, if not, craft one
let woodenPickaxe = bot.inventory.findInventoryItem(mcData.itemsByName["wooden_pickaxe"].id);
if (!woodenPickaxe) {
bot.chat("Crafting a wooden pickaxe.");
await craftWoodenPickaxe(bot);
woodenPickaxe = bot.inventory.findInventoryItem(mcData.itemsByName["wooden_pickaxe"].id);
}
// Equip the wooden pickaxe if it exists
if (woodenPickaxe) {
await bot.equip(woodenPickaxe, "hand");
// Explore until we find a stone block
await exploreUntil(bot, new Vec3(1, -1, 1), 60, () => {
const stone = bot.findBlock({
matching: mcData.blocksByName["stone"].id,
maxDistance: 32
});
if (stone) {
return true;
}
});
// Mine 8 cobblestone blocks using the wooden pickaxe
bot.chat("Found a stone block. Mining 8 cobblestone blocks.");
await mineBlock(bot, "stone", 8);
bot.chat("Successfully mined 8 cobblestone blocks.");
// Save the event of mining 8 cobblestone
bot.save("cobblestone_mined");
} else {
bot.chat("Failed to craft a wooden pickaxe. Cannot mine cobblestone.");
}
}
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
16
スキルの検索
簡単なルールでタスクを疑問文に変換
question = ( f"How to {task.replace('_', ' ').replace(' ore',
'').replace(' ores', '').replace('.', '').strip().lower()}" f" in Minecraft?" )
You are a helpful assistant that answer my question about Minecraft.
I will give you the following information:
Question: ...
You will answer the question based on the context (only if available and helpful) and your own
knowledge of Minecraft.
1) Start your answer with "Answer: ".
2) Answer "Answer: Unknown" if you don't know the answer.
https://github.com/MineDojo/Voyager/blob/c063d9deb57fc0e474b08291e3f79e48d48a561d/voyager/agents/curriculum.py
#L417-L420 (Access 2023-06-04)
GPT-3.5に入力する際のSystem Prompt
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
17
Iterative Prompting Mechanism
一発で正確なコードを生成することは難しいため
各種フィードバックからコードを反復的に改良する
Self-Verification モジュール(GPT-4)によって成功/失敗を判定
失敗の場合、コードの批評critiqueをLLMで生成
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
18
コード生成のSystem Prompt
You are a helpful assistant that writes Mineflayer javascript code to complete any Minecraft task specified by me.
Here are some useful programs written with Mineflayer APIs.
{programs}
At each round of conversation, I will give you
Code from the last round: ...
Execution error: ...
Chat log: ...
Biome: ...
Time: ...
Nearby blocks: ...
Nearby entities (nearest to farthest):
Health: ...
Hunger: ...
Position: ...
Equipment: ...
Inventory (xx/36): ...
Chests: ...
Task: ...
Context: ...
Critique: ...
You should then respond to me with
Explain (if applicable): Are there any steps missing in your plan? Why does the code not complete the task? What does the chat log and execution error imply?
Plan: How to complete the task step by step. You should pay attention to Inventory since it tells what you have. The task completeness check is also based on your final inventory.
Code:
1) Write an async function taking the bot as the only argument.
2) Reuse the above useful programs as much as possible.
- Use `mineBlock(bot, name, count)` to collect blocks. Do not use `bot.dig` directly.
- Use `craftItem(bot, name, count)` to craft items. Do not use `bot.craft` or `bot.recipesFor` directly.
- Use `smeltItem(bot, name count)` to smelt items. Do not use `bot.openFurnace` directly.
- Use `placeItem(bot, name, position)` to place blocks. Do not use `bot.placeBlock` directly.
- Use `killMob(bot, name, timeout)` to kill mobs. Do not use `bot.attack` directly.
3) Your function will be reused for building more complex functions. Therefore, you should make it generic and reusable. You should not make strong assumption about the inventory (as
it may be changed at a later time), and therefore you should always check whether you have the required items before using them. If not, you should first collect the required items and reuse
the above useful programs.
4) Functions in the "Code from the last round" section will not be saved or executed. Do not reuse functions listed there.
5) Anything defined outside a function will be ignored, define all your variables inside your functions.
6) Call `bot.chat` to show the intermediate progress.
7) Use `exploreUntil(bot, direction, maxDistance, callback)` when you cannot find something. You should frequently call this before mining blocks or killing mobs. You should select a
direction at random every time instead of constantly using (1, 0, 1).
8) `maxDistance` should always be 32 for `bot.findBlocks` and `bot.findBlock`. Do not cheat.
9) Do not write infinite loops or recursive functions.
10) Do not use `bot.on` or `bot.once` to register event listeners. You definitely do not need them.
11) Name your function in a meaningful way (can infer the task from the name).
You should only respond in the format as described below:
RESPONSE FORMAT:
{response_format}
https://github.com/MineDojo/Voyager/blob
/c063d9deb57fc0e474b08291e3f79e48d48a
561d/voyager/prompts/action_template.txt
#LL1C1-L49C18 (Access 2023-06-02)
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
19
コード生成のSystem Prompt
You are a helpful assistant that writes Mineflayer javascript code to complete any Minecraft task specified by me.
Here are some useful programs written with Mineflayer APIs.
{programs}
At each round of conversation, I will give you
Code from the last round: ...
Execution error: ...
Chat log: ...
Biome: ...
Time: ...
Nearby blocks: ...
Nearby entities (nearest to farthest):
Health: ...
Hunger: ...
Position: ...
Equipment: ...
Inventory (xx/36): ...
Chests: ...
Task: ...
Context: ...
Critique: ...
You should then respond to me with
Explain (if applicable): Are there any steps missing in your plan? Why does the code not complete the task? What does the chat log and execution error imply?
Plan: How to complete the task step by step. You should pay attention to Inventory since it tells what you have. The task completeness check is also based on your final inventory.
Code:
1) Write an async function taking the bot as the only argument.
2) Reuse the above useful programs as much as possible.
- Use `mineBlock(bot, name, count)` to collect blocks. Do not use `bot.dig` directly.
- Use `craftItem(bot, name, count)` to craft items. Do not use `bot.craft` or `bot.recipesFor` directly.
- Use `smeltItem(bot, name count)` to smelt items. Do not use `bot.openFurnace` directly.
- Use `placeItem(bot, name, position)` to place blocks. Do not use `bot.placeBlock` directly.
- Use `killMob(bot, name, timeout)` to kill mobs. Do not use `bot.attack` directly.
3) Your function will be reused for building more complex functions. Therefore, you should make it generic and reusable. You should not make strong assumption about the inventory (as
it may be changed at a later time), and therefore you should always check whether you have the required items before using them. If not, you should first collect the required items and reuse
the above useful programs.
4) Functions in the "Code from the last round" section will not be saved or executed. Do not reuse functions listed there.
5) Anything defined outside a function will be ignored, define all your variables inside your functions.
6) Call `bot.chat` to show the intermediate progress.
7) Use `exploreUntil(bot, direction, maxDistance, callback)` when you cannot find something. You should frequently call this before mining blocks or killing mobs. You should select a
direction at random every time instead of constantly using (1, 0, 1).
8) `maxDistance` should always be 32 for `bot.findBlocks` and `bot.findBlock`. Do not cheat.
9) Do not write infinite loops or recursive functions.
10) Do not use `bot.on` or `bot.once` to register event listeners. You definitely do not need them.
11) Name your function in a meaningful way (can infer the task from the name).
You should only respond in the format as described below:
RESPONSE FORMAT:
{response_format}
指示
プログラム (primitive APIとSkill Libraryの関連スキル)
User Promptで入力する情報
(生成コード、実行エラー、環境フィードバック、
エージェントの状態、タスク、コンテキスト、批評)
コンテキストはAutomatic Curriculumで生成したもの
指示(詳細)
出力形式
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
20
Self-verification の System Prompt
You are an assistant that assesses my progress of playing Minecraft and provides useful guidance.
You are required to evaluate if I have met the task requirements. Exceeding the task requirements is also considered a success while failing to meet
them requires you to provide critique to help me improve.
I will give you the following information:
Biome: The biome after the task execution.
Time: The current time.
Nearby blocks: The surrounding blocks. These blocks are not collected yet. However, this is useful for some placing or planting tasks.
Health: My current health.
Hunger: My current hunger level. For eating task, if my hunger level is 20.0, then I successfully ate the food.
Position: My current position.
Equipment: My final equipment. For crafting tasks, I sometimes equip the crafted item.
Inventory (xx/36): My final inventory. For mining and smelting tasks, you only need to check inventory.
Chests: If the task requires me to place items in a chest, you can find chest information here.
Task: The objective I need to accomplish.
Context: The context of the task.
You should only respond in JSON format as described below:
{
"reasoning": "reasoning",
"success": boolean,
"critique": "critique",
}
Ensure the response can be parsed by Python `json.loads`, e.g.: no trailing commas, no single quotes, etc.
Here are some examples:
INPUT:
Inventory (2/36): {'oak_log':2, 'spruce_log':2}
Task: Mine 3 wood logs
RESPONSE:
{
"reasoning": "You need to mine 3 wood logs. You have 2 oak logs and 2 spruce logs, which add up to 4 wood logs.",
"success": true,
"critique": ""
}
https://github.com/MineDojo/Voyager/blob/c063d9
deb57fc0e474b08291e3f79e48d48a561d/voyager/pr
ompts/critic.txt#LL1C1-L127C2 (Access 2023-06-02)
※実際は回答例は1例だけではないが省略
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
21
Self-verification の System Prompt
You are an assistant that assesses my progress of playing Minecraft and provides useful guidance.
You are required to evaluate if I have met the task requirements. Exceeding the task requirements is also considered a success while failing to meet
them requires you to provide critique to help me improve.
I will give you the following information:
Biome: The biome after the task execution.
Time: The current time.
Nearby blocks: The surrounding blocks. These blocks are not collected yet. However, this is useful for some placing or planting tasks.
Health: My current health.
Hunger: My current hunger level. For eating task, if my hunger level is 20.0, then I successfully ate the food.
Position: My current position.
Equipment: My final equipment. For crafting tasks, I sometimes equip the crafted item.
Inventory (xx/36): My final inventory. For mining and smelting tasks, you only need to check inventory.
Chests: If the task requires me to place items in a chest, you can find chest information here.
Task: The objective I need to accomplish.
Context: The context of the task.
You should only respond in JSON format as described below:
{
"reasoning": "reasoning",
"success": boolean,
"critique": "critique",
}
Ensure the response can be parsed by Python `json.loads`, e.g.: no trailing commas, no single quotes, etc.
Here are some examples:
INPUT:
Inventory (2/36): {'oak_log':2, 'spruce_log':2}
Task: Mine 3 wood logs
RESPONSE:
{
"reasoning": "You need to mine 3 wood logs. You have 2 oak logs and 2 spruce logs, which add up to 4 wood logs.",
"success": true,
"critique": ""
}
…
指示
User Promptで入力する情報
(エージェントの状態、タスク、コンテキスト)
回答フォーマット
回答例
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
22
Self-verification の その他回答例
INPUT:
Inventory (2/36): {'raw_iron': 5, 'stone_pickaxe': 1}
Task: Mine 5 iron_ore
RESPONSE:
{
"reasoning": "Mining iron_ore in Minecraft will get raw_iron. You have 5 raw_iron in
your inventory.",
"success": true,
"critique": ""
}
INPUT:
Biome: plains
Nearby blocks: stone, dirt, grass_block, grass, farmland, wheat
Inventory (26/36): ...
Task: Plant 1 wheat seed.
RESPONSE:
{
"reasoning": "For planting tasks, inventory information is useless. In nearby blocks,
there is farmland and wheat, which means you succeed to plant the wheat seed.",
"success": true,
"critique": ""
}
INPUT:
Inventory (11/36): {... ,'rotten_flesh': 1}
Task: Kill 1 zombie
Context: ...
RESPONSE
{
"reasoning": "You have rotten flesh in your inventory, which means you successfully
killed one zombie.",
"success": true,
"critique": ""
}
INPUT:
Hunger: 20.0/20.0
Inventory (11/36): ...
Task: Eat 1 ...
Context: ...
RESPONSE
{
"reasoning": "For all eating task, if the player's hunger is 20.0, then the player
successfully ate the food.",
"success": true,
"critique": ""
}
INPUT:
Nearby blocks: chest
Inventory (28/36): {'rail': 1, 'coal': 2, 'oak_planks': 13, 'copper_block': 1, 'diorite': 7,
'cooked_beef': 4, 'granite': 22, 'cobbled_deepslate': 23, 'feather': 4, 'leather': 2,
'cooked_chicken': 3, 'white_wool': 2, 'stick': 3, 'black_wool': 1, 'stone_sword': 2,
'stone_hoe': 1, 'stone_axe': 2, 'stone_shovel': 2, 'cooked_mutton': 4, 'cobblestone_wall': 18,
'crafting_table': 1, 'furnace': 1, 'iron_pickaxe': 1, 'stone_pickaxe': 1, 'raw_copper': 12}
Chests:
(81, 131, 16): {'andesite': 2, 'dirt': 2, 'cobblestone': 75, 'wooden_pickaxe': 1,
'wooden_sword': 1}
Task: Deposit useless items into the chest at (81, 131, 16)
Context: ...
RESPONSE
{
"reasoning": "You have 28 items in your inventory after depositing, which is more than
20. You need to deposit more items from your inventory to the chest.",
"success": false,
"critique": "Deposit more useless items such as copper_block, diorite, granite,
cobbled_deepslate, feather, and leather to meet the requirement of having only 20
occupied slots in your inventory."
}
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
23
VOYAGERのアルゴリズム 疑似コード 1/5
あ
def voyager(
environment, # environment that uses code as action space
curriculum_agent, # curriculum agent for proposing the next task
action_agent, # action agent for code generation
critic_agent, # critic agent for self - verification
skill_manager, # skill manager for adding new skills and skill retrieval
):
agent_state = environment.reset()
while True:
exploration_progress = curriculum_agent.get_exploration_progress(
curriculum_agent.get_completed_tasks(),
curriculum_agent.get_failed_tasks(),
)
task = curriculum_agent.propose_next_task(agent_state, exploration_progress)
code = environment_feedback = execution_errors = critique = None
success = False
# try at most 4 rounds before moving on to the next task
for i in range(4):
skills = skill_manager.retrieve_skills(task, environment_feedback)
code = action_agent.generate_code(task, code, environment_feedback,
execution_errors, critique, skills)
agent_state, environment_feedback, execution_errors = environment.step(code)
success, critique = critic_agent.check_task_success(task, agent_state)
if success: break
if success:
skill_manager.add_skill(code)
curriculum_agent.add_completed_task(task)
else:
curriculum_agent.add_failed_task(task)
スライド1ページに収めるために
論文の疑似コードから一部変更
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
24
VOYAGERのアルゴリズム 疑似コード 2/5
あ
def voyager(
environment, # environment that uses code as action space
curriculum_agent, # curriculum agent for proposing the next task
action_agent, # action agent for code generation
critic_agent, # critic agent for self - verification
skill_manager, # skill manager for adding new skills and skill retrieval
):
agent_state = environment.reset()
while True:
exploration_progress = curriculum_agent.get_exploration_progress(
curriculum_agent.get_completed_tasks(),
curriculum_agent.get_failed_tasks(),
)
task = curriculum_agent.propose_next_task(agent_state, exploration_progress)
code = environment_feedback = execution_errors = critique = None
success = False
# try at most 4 rounds before moving on to the next task
for i in range(4):
skills = skill_manager.retrieve_skills(task, environment_feedback)
code = action_agent.generate_code(task, code, environment_feedback,
execution_errors, critique, skills)
agent_state, environment_feedback, execution_errors = environment.step(code)
success, critique = critic_agent.check_task_success(task, agent_state)
if success: break
if success:
skill_manager.add_skill(code)
curriculum_agent.add_completed_task(task)
else:
curriculum_agent.add_failed_task(task)
スライド1ページに収めるために
論文の疑似コードから一部変更
Automatic Curriculumが
エージェントの状態 と 完了・失敗したタスク
から次のタスクを決定
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
25
VOYAGERのアルゴリズム 疑似コード 3/5
あ
def voyager(
environment, # environment that uses code as action space
curriculum_agent, # curriculum agent for proposing the next task
action_agent, # action agent for code generation
critic_agent, # critic agent for self - verification
skill_manager, # skill manager for adding new skills and skill retrieval
):
agent_state = environment.reset()
while True:
exploration_progress = curriculum_agent.get_exploration_progress(
curriculum_agent.get_completed_tasks(),
curriculum_agent.get_failed_tasks(),
)
task = curriculum_agent.propose_next_task(agent_state, exploration_progress)
code = environment_feedback = execution_errors = critique = None
success = False
# try at most 4 rounds before moving on to the next task
for i in range(4):
skills = skill_manager.retrieve_skills(task, environment_feedback)
code = action_agent.generate_code(task, code, environment_feedback,
execution_errors, critique, skills)
agent_state, environment_feedback, execution_errors = environment.step(code)
success, critique = critic_agent.check_task_success(task, agent_state)
if success: break
if success:
skill_manager.add_skill(code)
curriculum_agent.add_completed_task(task)
else:
curriculum_agent.add_failed_task(task)
スライド1ページに収めるために
論文の疑似コードから一部変更
反復的(最大4回)にコードを生成
• タスクと環境フィードバックから関連スキルの検索
• タスク、現在の生成コード、環境フィードバック、実行エラー
Self-verificationの批評、関連スキルからコードを生成
• 生成したコードによって環境へ作用
• Self-verificationによって成否判定 & 失敗の場合は批評
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
26
VOYAGERのアルゴリズム 疑似コード 4/5
あ
def voyager(
environment, # environment that uses code as action space
curriculum_agent, # curriculum agent for proposing the next task
action_agent, # action agent for code generation
critic_agent, # critic agent for self - verification
skill_manager, # skill manager for adding new skills and skill retrieval
):
agent_state = environment.reset()
while True:
exploration_progress = curriculum_agent.get_exploration_progress(
curriculum_agent.get_completed_tasks(),
curriculum_agent.get_failed_tasks(),
)
task = curriculum_agent.propose_next_task(agent_state, exploration_progress)
code = environment_feedback = execution_errors = critique = None
success = False
# try at most 4 rounds before moving on to the next task
for i in range(4):
skills = skill_manager.retrieve_skills(task, environment_feedback)
code = action_agent.generate_code(task, code, environment_feedback,
execution_errors, critique, skills)
agent_state, environment_feedback, execution_errors = environment.step(code)
success, critique = critic_agent.check_task_success(task, agent_state)
if success: break
if success:
skill_manager.add_skill(code)
curriculum_agent.add_completed_task(task)
else:
curriculum_agent.add_failed_task(task)
スライド1ページに収めるために
論文の疑似コードから一部変更
タスク成功と判定した場合
• Skill LibraryにSkillを追加
• 成功したTaskとして記録
タスク失敗と判定した場合
• 失敗したTaskとして記録
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
27
VOYAGERのアルゴリズム 疑似コード 5/5
あ
def voyager(
environment, # environment that uses code as action space
curriculum_agent, # curriculum agent for proposing the next task
action_agent, # action agent for code generation
critic_agent, # critic agent for self - verification
skill_manager, # skill manager for adding new skills and skill retrieval
):
agent_state = environment.reset()
while True:
exploration_progress = curriculum_agent.get_exploration_progress(
curriculum_agent.get_completed_tasks(),
curriculum_agent.get_failed_tasks(),
)
task = curriculum_agent.propose_next_task(agent_state, exploration_progress)
code = environment_feedback = execution_errors = critique = None
success = False
# try at most 4 rounds before moving on to the next task
for i in range(4):
skills = skill_manager.retrieve_skills(task, environment_feedback)
code = action_agent.generate_code(task, code, environment_feedback,
execution_errors, critique, skills)
agent_state, environment_feedback, execution_errors = environment.step(code)
success, critique = critic_agent.check_task_success(task, agent_state)
if success: break
if success:
skill_manager.add_skill(code)
curriculum_agent.add_completed_task(task)
else:
curriculum_agent.add_failed_task(task)
スライド1ページに収めるために
論文の疑似コードから一部変更
繰り返し
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
28
実験設定
Text completion
gpt-4-0314
gpt-3.5-turbo-0301
Temperature parameter
Automatic Curriculum: temperature = 0.1
それ以外: temperature = 0.0
Text embedding
Text-embedding-ada-002
シミュレーション環境はMineDojo [Linxi+ 2022]
運動制御はMineflayer JavaScript API
[Fan+ 2022] Linxi Fan, Guanzhi Wang, Yunfan Jiang, Ajay Mandlekar, Yuncong Yang, Haoyi Zhu, Andrew Tang, De-An Huang,
Yuke Zhu, and Anima Anandkumar. Minedojo: Building open-ended embodied agents with internet-scale knowledge. arXiv
preprint arXiv: Arxiv-2206.08853, 2022.
[Mineflayer] PrismarineJS. Prismarinejs/mineflayer: Create minecraft bots with a powerful, stable, and high level javascript
api., 2013.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
29
実験設定
Minecraftでそのまま使用可能なLLM-based agentは存在しない
NLPタスク(without embodiment)向けの代表的Baselineを選択
ReAct [Shunyu+ 2022]
Reflexion [Noah+ 2023]
AutoGPT(著者再実装)
AutoGPT
= VOYAGER – “Skill Library” – “Self-Verification” – “Automatic Curriculum”
Task = “explore the world and get as many items as possible”
[Yao+ 2022] Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao. React:
Synergizing reasoning and acting in language models. arXiv preprint arXiv: Arxiv-2210.03629, 2022.
[Shinn+ 2023] Noah Shinn, Beck Labash, and Ashwin Gopinath. Reflexion: an autonomous agent with dynamic memory and
self-reflection. arXiv preprint arXiv: Arxiv-2303.11366, 2023.
[AutoGPT] Significant-gravitas/auto-gpt: An experimental open-source attempt to make gpt-4 fully autonomous., 2023.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
30
評価結果 探索性能
VOYAGER
160回のプロンプト反復で63種のアイテムを発見
AutoGPTの3.3倍以上のアイテムを発見
Number of prompting iterations
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
31
評価結果 探索性能
ReAct と Reflexion
探索目標が抽象的で適切なカリキュラムがなく探索性能が低い
Number of prompting iterations
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
32
評価結果 技術ツリーの習得
VOYAGER
Wooden Toolを15.3倍
Stone Toolを8.5倍
Iorn Tool を6.4倍
Diamond Tool はVOYAGERのみが習得
Automatic Curriculum の有効性
エージェントの進歩を促進するために適切な複雑さの目標を提示
習得に要したプロンプト反復回数(3回の平均)
最大反復回数=160
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
33
評価結果 マップの探索
VOYAGERはBaselineと比較して2.3倍長い距離を移動
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
34
評価結果 Zero-shot generalization
設定
エージェントのインベントリを初期化
新しくインスタンス化された世界に初期化
未知のタスクでテスト
Diamond Pickaxe
Golden Sword
Lave Bucket
Compass
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
35
評価結果 Zero-shot generalization
VOYAGERは全てのタスクを達成可能
Skill Library は AutoGPT にも有効なモジュール
Pickaxe:ツルハシ
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
36
Ablation Studies
Automatic Curriculum は重要
Manual Curriculum
ダイヤモンドを発掘するための手動カリキュラム
Random Curriculum
VOYAGERで取得した101のアイテムをランダムに選択
(Manual Curriculum)
Mine 3 wood leg
Craft 1 crafting table
Craft 1 wooden pickaxe
Mine 11 cobblestone
Craft 1 stone pickaxe
Craft 1 furnace
Mine 3 iron ore
Smelt 3 iron ore
Craft 1 iron pickaxe
Mine 1 diamond
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
37
Ablation Studies
Skill Library は重要
w/o Skill Library は後半になると伸び悩む
Skill Library は古いスキルに基づいて複雑なスキルを作成可能
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
38
Ablation Studies
GPT-4 vs GPT-3.5
GPT-3.5:コード生成にGPT-3.5を使用
GPT-4はコーディング性能がGPT-3.5から大幅に向上している
過去の研究と同様の結果
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
39
Ablation Studies
Self-Verification はフィードバックの中で最も重要
w/o Self-Verificationが最も性能悪化
Self-Verification は新しいタスクに移るタイミングや
以前に失敗したタスクを再挑戦するタイミングを決めるのに重要
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
40
Multimodal Feedback from Humans
GPT-4は論文執筆時点ではテキストのみ対応
2つの方法
Human as a critic
Self-verificationを人間が行う
人間が視覚的な批評を与える
Human as a curriculum
Automatic curriculumを人間が行う
VOYAGERが段階的に完成できるように誘導
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
41
Limitation
Cost
GPT-4のAPIはGPT-3.5の15倍の高コスト
ただし、VOYAGERではGPT-4によるコード生成品質が必要
GPT-4の約160反復で50ドル程度
https://github.com/MineDojo/Voyager/blob/main/FAQ.md#whats-
the-estimated-cost-of-running-voyager (Access 2023-06-04)
Inaccuracies
エージェントが正しいスキルを生成できないケースがある
Automatic Curriculumはことタスクを後で再試行する柔軟性をもつ
Self-Verificationも失敗することがある
例:蜘蛛を倒すという成功信号として蜘蛛の糸を認識しない
Hallucinations
Automatic Curriculum が達成不可能な課題を提案する
ゲーム内に存在しないアイテム
コード生成におけるHallucination
存在しない関数の呼び出し
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
42
関連研究
Decision-making Agents in Minecraft
Low-level controller
MineDojo[Fan+ 2022], VPT[Baker+ 2022]:Youtube動画で事前学習
DreamerV3[Hafner+ 2023]:世界モデルでダイアモンド採掘を達成
High-level planner
Codexによって実行可能なポリシーを生成 [Volum+ 2022]
本研究
先行研究と同じ点
Low-level controller: Volumらに従いMineflayerを利用
High-level planner: GPT-4
先行研究と異なる点
Automatic Curriculumによるオープンエンドな探索
[Fan+ 2022] Linxi Fan, et.al. Minedojo: Building open-ended embodied agents with internet-scale knowledge. arXiv preprint arXiv:
Arxiv-2206.08853, 2022.
[Baker+ 2022] Bowen Baker, et.al. Video pretraining (vpt): Learning to act by watching unlabeled online videos. arXiv preprint arXiv:
Arxiv-2206.11795, 2022.
[Hafner+ 2023] Danijar Hafner, et.al. Mastering diverse domains through world models. arXiv preprint arXiv: Arxiv-2301.04104, 2023.
[Volum+ 2022] Ryan Volum, et.al. Craft an iron sword: Dynamically generating interactive game characters by prompting large
language models tuned on code. In Proceedings of the 3rd Wordplay: When Language Meets Games Workshop (Wordplay 2022),
pages 25–43, Seattle, United States, 2022. Association for Computational Linguistics.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved.
43
まとめ
GPT-4によってMinecraftをプレイするVOYAGERを提案
LLM-powered embodied lifelong learning agent

Mais conteúdo relacionado

Mais de harmonylab

A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...
A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...
A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...harmonylab
 
【卒業論文】印象タグを用いた衣服画像生成システムに関する研究
【卒業論文】印象タグを用いた衣服画像生成システムに関する研究【卒業論文】印象タグを用いた衣服画像生成システムに関する研究
【卒業論文】印象タグを用いた衣服画像生成システムに関する研究harmonylab
 
【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究
【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究
【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究harmonylab
 
DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...
DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...
DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...harmonylab
 
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
DLゼミ: MobileOne: An Improved One millisecond Mobile BackboneDLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
DLゼミ: MobileOne: An Improved One millisecond Mobile Backboneharmonylab
 
DLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat Models
DLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat ModelsDLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat Models
DLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat Modelsharmonylab
 
DLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
DLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose EstimationDLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
DLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose Estimationharmonylab
 
DLゼミ: Ego-Body Pose Estimation via Ego-Head Pose Estimation
DLゼミ: Ego-Body Pose Estimation via Ego-Head Pose EstimationDLゼミ: Ego-Body Pose Estimation via Ego-Head Pose Estimation
DLゼミ: Ego-Body Pose Estimation via Ego-Head Pose Estimationharmonylab
 
ReAct: Synergizing Reasoning and Acting in Language Models
ReAct: Synergizing Reasoning and Acting in Language ModelsReAct: Synergizing Reasoning and Acting in Language Models
ReAct: Synergizing Reasoning and Acting in Language Modelsharmonylab
 
形態素解析を用いた帝国議会議事速記録の変遷に関する研究
形態素解析を用いた帝国議会議事速記録の変遷に関する研究形態素解析を用いた帝国議会議事速記録の変遷に関する研究
形態素解析を用いた帝国議会議事速記録の変遷に関する研究harmonylab
 
【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究
【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究
【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究harmonylab
 
灯油タンク内の液面高計測を用いた 灯油残量推定システムに関する研究
灯油タンク内の液面高計測を用いた灯油残量推定システムに関する研究灯油タンク内の液面高計測を用いた灯油残量推定システムに関する研究
灯油タンク内の液面高計測を用いた 灯油残量推定システムに関する研究harmonylab
 
深層自己回帰モデルを用いた俳句の生成と評価に関する研究
深層自己回帰モデルを用いた俳句の生成と評価に関する研究深層自己回帰モデルを用いた俳句の生成と評価に関する研究
深層自己回帰モデルを用いた俳句の生成と評価に関する研究harmonylab
 
競輪におけるレーティングシステムを用いた予想記事生成に関する研究
競輪におけるレーティングシステムを用いた予想記事生成に関する研究競輪におけるレーティングシステムを用いた予想記事生成に関する研究
競輪におけるレーティングシステムを用いた予想記事生成に関する研究harmonylab
 
【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究
【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究
【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究harmonylab
 
A Study on Estimation of Household Kerosene Consumption for Optimization of D...
A Study on Estimation of Household Kerosene Consumption for Optimization of D...A Study on Estimation of Household Kerosene Consumption for Optimization of D...
A Study on Estimation of Household Kerosene Consumption for Optimization of D...harmonylab
 
マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究
マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究
マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究harmonylab
 
A Study on Generation of Deformed Route Maps using Octilinear Grid
A Study on Generation of Deformed Route Maps using Octilinear GridA Study on Generation of Deformed Route Maps using Octilinear Grid
A Study on Generation of Deformed Route Maps using Octilinear Gridharmonylab
 
A Study on the Generation of Clothing Captions Highlighting the Differences b...
A Study on the Generation of Clothing Captions Highlighting the Differences b...A Study on the Generation of Clothing Captions Highlighting the Differences b...
A Study on the Generation of Clothing Captions Highlighting the Differences b...harmonylab
 
A Study on Clothing Recommendation Information Presentation System Based on C...
A Study on Clothing Recommendation Information Presentation System Based on C...A Study on Clothing Recommendation Information Presentation System Based on C...
A Study on Clothing Recommendation Information Presentation System Based on C...harmonylab
 

Mais de harmonylab (20)

A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...
A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...
A Study on Decision Support System for Snow Removal Dispatch using Road Surfa...
 
【卒業論文】印象タグを用いた衣服画像生成システムに関する研究
【卒業論文】印象タグを用いた衣服画像生成システムに関する研究【卒業論文】印象タグを用いた衣服画像生成システムに関する研究
【卒業論文】印象タグを用いた衣服画像生成システムに関する研究
 
【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究
【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究
【卒業論文】大規模言語モデルを用いたマニュアル文章修正手法に関する研究
 
DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...
DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...
DLゼミ:Primitive Generation and Semantic-related Alignment for Universal Zero-S...
 
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
DLゼミ: MobileOne: An Improved One millisecond Mobile BackboneDLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
 
DLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat Models
DLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat ModelsDLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat Models
DLゼミ: Llama 2: Open Foundation and Fine-Tuned Chat Models
 
DLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
DLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose EstimationDLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
DLゼミ: ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
DLゼミ: Ego-Body Pose Estimation via Ego-Head Pose Estimation
DLゼミ: Ego-Body Pose Estimation via Ego-Head Pose EstimationDLゼミ: Ego-Body Pose Estimation via Ego-Head Pose Estimation
DLゼミ: Ego-Body Pose Estimation via Ego-Head Pose Estimation
 
ReAct: Synergizing Reasoning and Acting in Language Models
ReAct: Synergizing Reasoning and Acting in Language ModelsReAct: Synergizing Reasoning and Acting in Language Models
ReAct: Synergizing Reasoning and Acting in Language Models
 
形態素解析を用いた帝国議会議事速記録の変遷に関する研究
形態素解析を用いた帝国議会議事速記録の変遷に関する研究形態素解析を用いた帝国議会議事速記録の変遷に関する研究
形態素解析を用いた帝国議会議事速記録の変遷に関する研究
 
【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究
【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究
【卒業論文】深層生成モデルを用いたユーザ意図に基づく衣服画像の生成に関する研究
 
灯油タンク内の液面高計測を用いた 灯油残量推定システムに関する研究
灯油タンク内の液面高計測を用いた灯油残量推定システムに関する研究灯油タンク内の液面高計測を用いた灯油残量推定システムに関する研究
灯油タンク内の液面高計測を用いた 灯油残量推定システムに関する研究
 
深層自己回帰モデルを用いた俳句の生成と評価に関する研究
深層自己回帰モデルを用いた俳句の生成と評価に関する研究深層自己回帰モデルを用いた俳句の生成と評価に関する研究
深層自己回帰モデルを用いた俳句の生成と評価に関する研究
 
競輪におけるレーティングシステムを用いた予想記事生成に関する研究
競輪におけるレーティングシステムを用いた予想記事生成に関する研究競輪におけるレーティングシステムを用いた予想記事生成に関する研究
競輪におけるレーティングシステムを用いた予想記事生成に関する研究
 
【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究
【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究
【卒業論文】B2Bオークションにおけるユーザ別 入札行動予測に関する研究
 
A Study on Estimation of Household Kerosene Consumption for Optimization of D...
A Study on Estimation of Household Kerosene Consumption for Optimization of D...A Study on Estimation of Household Kerosene Consumption for Optimization of D...
A Study on Estimation of Household Kerosene Consumption for Optimization of D...
 
マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究
マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究
マルチエージェント深層強化学習による自動運転車両の追越行動の獲得に関する研究
 
A Study on Generation of Deformed Route Maps using Octilinear Grid
A Study on Generation of Deformed Route Maps using Octilinear GridA Study on Generation of Deformed Route Maps using Octilinear Grid
A Study on Generation of Deformed Route Maps using Octilinear Grid
 
A Study on the Generation of Clothing Captions Highlighting the Differences b...
A Study on the Generation of Clothing Captions Highlighting the Differences b...A Study on the Generation of Clothing Captions Highlighting the Differences b...
A Study on the Generation of Clothing Captions Highlighting the Differences b...
 
A Study on Clothing Recommendation Information Presentation System Based on C...
A Study on Clothing Recommendation Information Presentation System Based on C...A Study on Clothing Recommendation Information Presentation System Based on C...
A Study on Clothing Recommendation Information Presentation System Based on C...
 

Último

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Último (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

Voyager: An Open-Ended Embodied Agent with Large Language Models

  • 1. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. DLゼミ(論文紹介) VOYAGER: An Open-Ended Embodied Agent with Large Language Models 北海道大学大学院 情報科学院 情報理工学部門 複合情報工学分野 調和系工学研究室 博士後期課程 3年 吉田 拓海
  • 2. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 概要 タイトル VOYAGER: An Open-Ended Embodied Agent with Large Language Models 著者 A 発表 arXiv https://arxiv.org/abs/2305.16291 概要 大規模言語モデル(GPT-4)でMinecraftの世界を探索する Lifelong Learning Agent であるVoyagerを紹介 Lifelong learning 生涯学習
  • 3. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 2 概要 VOYAGER: GPT-4によってMinecraftをプレイするエージェント エージェントの状態をテキストで観測 JavaScriptプログラムを行動として生成 ダイヤモンドの採掘に成功 AIによる達成は難しいとされている
  • 4. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 3 LLM-powered embodied lifelong learning agent Open-ended World で動作する Embodied agentの構築は課題 世界を継続的に探索・計画・新しいスキルを開発できるAgent 強化学習や模倣学習 体系的な探索・解釈性・汎化が課題 大規模言語モデル(LLM) 行動計画や実行可能なポリシーを生成可能 ゲームやロボットのような身体化されたタスク 身体化されてないNLPタスク 先行研究のagentはLifelong learner 生涯学習者ではない 長期的に知識を徐々に獲得・更新・蓄積・転移はできない
  • 5. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 4 Minecraft Minecraftの特徴 あらかじめ定義された最終目標や決まったストーリーが無い (AtariなどのAI研究に利用されるゲームとの違い) 生涯学習エージェントは人間と同様の能力を持つべき 現在のスキルレベルと世界の状態から適切なタスクを提案 環境フィードバックに基づいてスキルを磨き 習得したスキルを記憶し再利用 継続的に世界を探索して新しいタスクを探す 動画引用 Voyager | An Open-Ended Embodied Agent with Large Language Models. Minedojo.org. Published 2023. Accessed June 3, 2023. https://voyager.minedojo.org/
  • 6. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 5 VOYAGER VOYAGER は LLM-powered embodied lifelong learning agent 人間の介入無しに、探索を推進し、 幅広いスキルを習得し、継続的に新しい発見をする VOYAGER は in-context learning によって LLM と対話 観測:テキスト 行動:コード生成(Mineflayer) 画像は使用されない 図のテキストは一部で実際はもっと長い [Mineflayer] PrismarineJS. Prismarinejs/mineflayer: Create minecraft bots with a powerful, stable, and high level javascript api., 2013.
  • 7. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 6 VOYAGER VOYAGER は3つの主要なモジュールで構成 Automatic Curriculum Iterative Prompting Mechanism Skill Library
  • 8. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 7 Automatic Curriculum “discovering as many diverse things as possible” “できるだけ多くの多様なモノを発見する” という包括的目標に基づいて徐々に難しくなるタスクを提案
  • 9. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 8 Automatic Curriculum 入出力の例 実際のプロンプトはもっと長い
  • 10. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 9 Automatic Curriculum の System Prompt You are a helpful assistant that tells me the next immediate task to do in Minecraft. My ultimate goal is to discover as many diverse things as possible, accomplish as many diverse tasks as possible and become the best Minecraft player in the world. I will give you the following information: Question 1: ... Answer: ... Question 2: ... Answer: ... Question 3: ... Answer: ... ... Biome: ... Time: ... Nearby blocks: ... Other blocks that are recently seen: ... Nearby entities ( nearest to farthest ): ... Health: Higher than 15 means I'm healthy. Hunger: Higher than 15 means I'm not hungry. Position: ... Equipment: If I have better armor in my inventory, you should ask me to equip it. Inventory ( xx /36): ... Chests: You can ask me to deposit or take items from these chests. There also might be some unknown chest, you should ask me to open and check items inside the unknown chest. Completed tasks so far: ... Failed tasks that are too hard: ... You must follow the following criteria: 1) You should act as a mentor and guide me to the next task based on my current learning progress. 2) Please be very specific about what resources I need to collect, what I need to craft, or what mobs I need to kill. 3) The next task should follow a concise format, such as "Mine [quantity] [block]", "Craft [quantity] [item]", "Smelt [quantity] [item]", "Kill [quantity] [mob]", "Cook [quantity] [food]", "Equip [item]" etc. It should be a single phrase. Do not propose multiple tasks at the same time. Do not mention anything else. 4) The next task should not be too hard since I may not have the necessary resources or have learned enough skills to complete it yet. 5) The next task should be novel and interesting. I should look for rare resources, upgrade my equipment and tools using better materials, and discover new things. I should not be doing the same thing over and over again. 6) I may sometimes need to repeat some tasks if I need to collect more resources to complete more difficult tasks. Only repeat tasks if necessary. 7) Do not ask me to build or dig shelter even if it's at night. I want to explore the world and discover new things. I don't want to stay in one place. 8) Tasks that require information beyond the player's status to verify should be avoided. For instance, "Placing 4 torches" and "Dig a 2 x1x2 hole" are not ideal since they require visual confirmation from the screen. All the placing, building, planting, and trading tasks should be avoided. Do not propose task starting with these keywords. You should only respond in the format as described below: RESPONSE FORMAT: Reasoning: Based on the information I listed above, do reasoning about what the next task should be. Task: The next task. Here's an example response: Reasoning: The inventory is empty now, chop down a tree to get some wood. Task: Obtain a wood log.
  • 11. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 10 Automatic Curriculum の System Prompt You are a helpful assistant that tells me the next immediate task to do in Minecraft. My ultimate goal is to discover as many diverse things as possible, accomplish as many diverse tasks as possible and become the best Minecraft player in the world. I will give you the following information: Question 1: ... Answer: ... Question 2: ... Answer: ... Question 3: ... Answer: ... ... Biome: ... Time: ... Nearby blocks: ... Other blocks that are recently seen: ... Nearby entities ( nearest to farthest ): ... Health: Higher than 15 means I'm healthy. Hunger: Higher than 15 means I'm not hungry. Position: ... Equipment: If I have better armor in my inventory, you should ask me to equip it. Inventory ( xx /36): ... Chests: You can ask me to deposit or take items from these chests. There also might be some unknown chest, you should ask me to open and check items inside the unknown chest. Completed tasks so far: ... Failed tasks that are too hard: ... You must follow the following criteria: 1) You should act as a mentor and guide me to the next task based on my current learning progress. 2) Please be very specific about what resources I need to collect, what I need to craft, or what mobs I need to kill. 3) The next task should follow a concise format, such as "Mine [quantity] [block]", "Craft [quantity] [item]", "Smelt [quantity] [item]", "Kill [quantity] [mob]", "Cook [quantity] [food]", "Equip [item]" etc. It should be a single phrase. Do not propose multiple tasks at the same time. Do not mention anything else. 4) The next task should not be too hard since I may not have the necessary resources or have learned enough skills to complete it yet. 5) The next task should be novel and interesting. I should look for rare resources, upgrade my equipment and tools using better materials, and discover new things. I should not be doing the same thing over and over again. 6) I may sometimes need to repeat some tasks if I need to collect more resources to complete more difficult tasks. Only repeat tasks if necessary. 7) Do not ask me to build or dig shelter even if it's at night. I want to explore the world and discover new things. I don't want to stay in one place. 8) Tasks that require information beyond the player's status to verify should be avoided. For instance, "Placing 4 torches" and "Dig a 2 x1x2 hole" are not ideal since they require visual confirmation from the screen. All the placing, building, planting, and trading tasks should be avoided. Do not propose task starting with these keywords. You should only respond in the format as described below: RESPONSE FORMAT: Reasoning: Based on the information I listed above, do reasoning about what the next task should be. Task: The next task. Here's an example response: Reasoning: The inventory is empty now, chop down a tree to get some wood. Task: Obtain a wood log. 指示 指示(詳細) 回答フォーマット 回答例 User Promptで入力する情報 (追加コンテキスト、エージェントの状態、成功/失敗したタスク)
  • 12. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 11 Skill Library コード生成時に関連するスキルをSkill Libraryから検索 単純なスキルを組合わせて複雑なスキルを合成可能
  • 13. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 12 Skill Library スキルの登録と検索 Skill Library への登録 各プログラムをその説明文のEmbeddingによってindex化 Skill Library から検索 タスクと環境フィードバックから関連スキルを検索
  • 14. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 13 スキル登録 Description作成のSystem Prompt You are a helpful assistant that writes a description of the given function written in Mineflayer javascript code. 1) Do not mention the function name. 2) Do not mention anything about `bot.chat` or helper functions. 3) There might be some helper functions before the main function, but you only need to describe the main function. 4) Try to summarize the function in no more than 6 sentences. 5) Your response should be a single line of text. For example, if the function is: async function mineCobblestone(bot) { (※省略) } The main function is `mineCobblestone`. Then you would write: The function is about mining 8 cobblestones using a wooden pickaxe. First check if a wooden pickaxe is in the inventory. If not, craft one. If the wooden pickaxe is available, equip the wooden pickaxe in the hand. Next, explore the environment until finding a stone block. Once a stone block is found, mine a total of 8 cobblestone blocks using the wooden pickaxe.
  • 15. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 14 スキル登録 Description作成のSystem Prompt You are a helpful assistant that writes a description of the given function written in Mineflayer javascript code. 1) Do not mention the function name. 2) Do not mention anything about `bot.chat` or helper functions. 3) There might be some helper functions before the main function, but you only need to describe the main function. 4) Try to summarize the function in no more than 6 sentences. 5) Your response should be a single line of text. For example, if the function is: async function mineCobblestone(bot) { (※省略) } The main function is `mineCobblestone`. Then you would write: The function is about mining 8 cobblestones using a wooden pickaxe. First check if a wooden pickaxe is in the inventory. If not, craft one. If the wooden pickaxe is available, equip the wooden pickaxe in the hand. Next, explore the environment until finding a stone block. Once a stone block is found, mine a total of 8 cobblestone blocks using the wooden pickaxe. 指示 指示(詳細) 回答例
  • 16. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 15 前ページで省略したプログラム async function mineCobblestone(bot) { // Check if the wooden pickaxe is in the inventory, if not, craft one let woodenPickaxe = bot.inventory.findInventoryItem(mcData.itemsByName["wooden_pickaxe"].id); if (!woodenPickaxe) { bot.chat("Crafting a wooden pickaxe."); await craftWoodenPickaxe(bot); woodenPickaxe = bot.inventory.findInventoryItem(mcData.itemsByName["wooden_pickaxe"].id); } // Equip the wooden pickaxe if it exists if (woodenPickaxe) { await bot.equip(woodenPickaxe, "hand"); // Explore until we find a stone block await exploreUntil(bot, new Vec3(1, -1, 1), 60, () => { const stone = bot.findBlock({ matching: mcData.blocksByName["stone"].id, maxDistance: 32 }); if (stone) { return true; } }); // Mine 8 cobblestone blocks using the wooden pickaxe bot.chat("Found a stone block. Mining 8 cobblestone blocks."); await mineBlock(bot, "stone", 8); bot.chat("Successfully mined 8 cobblestone blocks."); // Save the event of mining 8 cobblestone bot.save("cobblestone_mined"); } else { bot.chat("Failed to craft a wooden pickaxe. Cannot mine cobblestone."); } }
  • 17. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 16 スキルの検索 簡単なルールでタスクを疑問文に変換 question = ( f"How to {task.replace('_', ' ').replace(' ore', '').replace(' ores', '').replace('.', '').strip().lower()}" f" in Minecraft?" ) You are a helpful assistant that answer my question about Minecraft. I will give you the following information: Question: ... You will answer the question based on the context (only if available and helpful) and your own knowledge of Minecraft. 1) Start your answer with "Answer: ". 2) Answer "Answer: Unknown" if you don't know the answer. https://github.com/MineDojo/Voyager/blob/c063d9deb57fc0e474b08291e3f79e48d48a561d/voyager/agents/curriculum.py #L417-L420 (Access 2023-06-04) GPT-3.5に入力する際のSystem Prompt
  • 18. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 17 Iterative Prompting Mechanism 一発で正確なコードを生成することは難しいため 各種フィードバックからコードを反復的に改良する Self-Verification モジュール(GPT-4)によって成功/失敗を判定 失敗の場合、コードの批評critiqueをLLMで生成
  • 19. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 18 コード生成のSystem Prompt You are a helpful assistant that writes Mineflayer javascript code to complete any Minecraft task specified by me. Here are some useful programs written with Mineflayer APIs. {programs} At each round of conversation, I will give you Code from the last round: ... Execution error: ... Chat log: ... Biome: ... Time: ... Nearby blocks: ... Nearby entities (nearest to farthest): Health: ... Hunger: ... Position: ... Equipment: ... Inventory (xx/36): ... Chests: ... Task: ... Context: ... Critique: ... You should then respond to me with Explain (if applicable): Are there any steps missing in your plan? Why does the code not complete the task? What does the chat log and execution error imply? Plan: How to complete the task step by step. You should pay attention to Inventory since it tells what you have. The task completeness check is also based on your final inventory. Code: 1) Write an async function taking the bot as the only argument. 2) Reuse the above useful programs as much as possible. - Use `mineBlock(bot, name, count)` to collect blocks. Do not use `bot.dig` directly. - Use `craftItem(bot, name, count)` to craft items. Do not use `bot.craft` or `bot.recipesFor` directly. - Use `smeltItem(bot, name count)` to smelt items. Do not use `bot.openFurnace` directly. - Use `placeItem(bot, name, position)` to place blocks. Do not use `bot.placeBlock` directly. - Use `killMob(bot, name, timeout)` to kill mobs. Do not use `bot.attack` directly. 3) Your function will be reused for building more complex functions. Therefore, you should make it generic and reusable. You should not make strong assumption about the inventory (as it may be changed at a later time), and therefore you should always check whether you have the required items before using them. If not, you should first collect the required items and reuse the above useful programs. 4) Functions in the "Code from the last round" section will not be saved or executed. Do not reuse functions listed there. 5) Anything defined outside a function will be ignored, define all your variables inside your functions. 6) Call `bot.chat` to show the intermediate progress. 7) Use `exploreUntil(bot, direction, maxDistance, callback)` when you cannot find something. You should frequently call this before mining blocks or killing mobs. You should select a direction at random every time instead of constantly using (1, 0, 1). 8) `maxDistance` should always be 32 for `bot.findBlocks` and `bot.findBlock`. Do not cheat. 9) Do not write infinite loops or recursive functions. 10) Do not use `bot.on` or `bot.once` to register event listeners. You definitely do not need them. 11) Name your function in a meaningful way (can infer the task from the name). You should only respond in the format as described below: RESPONSE FORMAT: {response_format} https://github.com/MineDojo/Voyager/blob /c063d9deb57fc0e474b08291e3f79e48d48a 561d/voyager/prompts/action_template.txt #LL1C1-L49C18 (Access 2023-06-02)
  • 20. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 19 コード生成のSystem Prompt You are a helpful assistant that writes Mineflayer javascript code to complete any Minecraft task specified by me. Here are some useful programs written with Mineflayer APIs. {programs} At each round of conversation, I will give you Code from the last round: ... Execution error: ... Chat log: ... Biome: ... Time: ... Nearby blocks: ... Nearby entities (nearest to farthest): Health: ... Hunger: ... Position: ... Equipment: ... Inventory (xx/36): ... Chests: ... Task: ... Context: ... Critique: ... You should then respond to me with Explain (if applicable): Are there any steps missing in your plan? Why does the code not complete the task? What does the chat log and execution error imply? Plan: How to complete the task step by step. You should pay attention to Inventory since it tells what you have. The task completeness check is also based on your final inventory. Code: 1) Write an async function taking the bot as the only argument. 2) Reuse the above useful programs as much as possible. - Use `mineBlock(bot, name, count)` to collect blocks. Do not use `bot.dig` directly. - Use `craftItem(bot, name, count)` to craft items. Do not use `bot.craft` or `bot.recipesFor` directly. - Use `smeltItem(bot, name count)` to smelt items. Do not use `bot.openFurnace` directly. - Use `placeItem(bot, name, position)` to place blocks. Do not use `bot.placeBlock` directly. - Use `killMob(bot, name, timeout)` to kill mobs. Do not use `bot.attack` directly. 3) Your function will be reused for building more complex functions. Therefore, you should make it generic and reusable. You should not make strong assumption about the inventory (as it may be changed at a later time), and therefore you should always check whether you have the required items before using them. If not, you should first collect the required items and reuse the above useful programs. 4) Functions in the "Code from the last round" section will not be saved or executed. Do not reuse functions listed there. 5) Anything defined outside a function will be ignored, define all your variables inside your functions. 6) Call `bot.chat` to show the intermediate progress. 7) Use `exploreUntil(bot, direction, maxDistance, callback)` when you cannot find something. You should frequently call this before mining blocks or killing mobs. You should select a direction at random every time instead of constantly using (1, 0, 1). 8) `maxDistance` should always be 32 for `bot.findBlocks` and `bot.findBlock`. Do not cheat. 9) Do not write infinite loops or recursive functions. 10) Do not use `bot.on` or `bot.once` to register event listeners. You definitely do not need them. 11) Name your function in a meaningful way (can infer the task from the name). You should only respond in the format as described below: RESPONSE FORMAT: {response_format} 指示 プログラム (primitive APIとSkill Libraryの関連スキル) User Promptで入力する情報 (生成コード、実行エラー、環境フィードバック、 エージェントの状態、タスク、コンテキスト、批評) コンテキストはAutomatic Curriculumで生成したもの 指示(詳細) 出力形式
  • 21. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 20 Self-verification の System Prompt You are an assistant that assesses my progress of playing Minecraft and provides useful guidance. You are required to evaluate if I have met the task requirements. Exceeding the task requirements is also considered a success while failing to meet them requires you to provide critique to help me improve. I will give you the following information: Biome: The biome after the task execution. Time: The current time. Nearby blocks: The surrounding blocks. These blocks are not collected yet. However, this is useful for some placing or planting tasks. Health: My current health. Hunger: My current hunger level. For eating task, if my hunger level is 20.0, then I successfully ate the food. Position: My current position. Equipment: My final equipment. For crafting tasks, I sometimes equip the crafted item. Inventory (xx/36): My final inventory. For mining and smelting tasks, you only need to check inventory. Chests: If the task requires me to place items in a chest, you can find chest information here. Task: The objective I need to accomplish. Context: The context of the task. You should only respond in JSON format as described below: { "reasoning": "reasoning", "success": boolean, "critique": "critique", } Ensure the response can be parsed by Python `json.loads`, e.g.: no trailing commas, no single quotes, etc. Here are some examples: INPUT: Inventory (2/36): {'oak_log':2, 'spruce_log':2} Task: Mine 3 wood logs RESPONSE: { "reasoning": "You need to mine 3 wood logs. You have 2 oak logs and 2 spruce logs, which add up to 4 wood logs.", "success": true, "critique": "" } https://github.com/MineDojo/Voyager/blob/c063d9 deb57fc0e474b08291e3f79e48d48a561d/voyager/pr ompts/critic.txt#LL1C1-L127C2 (Access 2023-06-02) ※実際は回答例は1例だけではないが省略
  • 22. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 21 Self-verification の System Prompt You are an assistant that assesses my progress of playing Minecraft and provides useful guidance. You are required to evaluate if I have met the task requirements. Exceeding the task requirements is also considered a success while failing to meet them requires you to provide critique to help me improve. I will give you the following information: Biome: The biome after the task execution. Time: The current time. Nearby blocks: The surrounding blocks. These blocks are not collected yet. However, this is useful for some placing or planting tasks. Health: My current health. Hunger: My current hunger level. For eating task, if my hunger level is 20.0, then I successfully ate the food. Position: My current position. Equipment: My final equipment. For crafting tasks, I sometimes equip the crafted item. Inventory (xx/36): My final inventory. For mining and smelting tasks, you only need to check inventory. Chests: If the task requires me to place items in a chest, you can find chest information here. Task: The objective I need to accomplish. Context: The context of the task. You should only respond in JSON format as described below: { "reasoning": "reasoning", "success": boolean, "critique": "critique", } Ensure the response can be parsed by Python `json.loads`, e.g.: no trailing commas, no single quotes, etc. Here are some examples: INPUT: Inventory (2/36): {'oak_log':2, 'spruce_log':2} Task: Mine 3 wood logs RESPONSE: { "reasoning": "You need to mine 3 wood logs. You have 2 oak logs and 2 spruce logs, which add up to 4 wood logs.", "success": true, "critique": "" } … 指示 User Promptで入力する情報 (エージェントの状態、タスク、コンテキスト) 回答フォーマット 回答例
  • 23. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 22 Self-verification の その他回答例 INPUT: Inventory (2/36): {'raw_iron': 5, 'stone_pickaxe': 1} Task: Mine 5 iron_ore RESPONSE: { "reasoning": "Mining iron_ore in Minecraft will get raw_iron. You have 5 raw_iron in your inventory.", "success": true, "critique": "" } INPUT: Biome: plains Nearby blocks: stone, dirt, grass_block, grass, farmland, wheat Inventory (26/36): ... Task: Plant 1 wheat seed. RESPONSE: { "reasoning": "For planting tasks, inventory information is useless. In nearby blocks, there is farmland and wheat, which means you succeed to plant the wheat seed.", "success": true, "critique": "" } INPUT: Inventory (11/36): {... ,'rotten_flesh': 1} Task: Kill 1 zombie Context: ... RESPONSE { "reasoning": "You have rotten flesh in your inventory, which means you successfully killed one zombie.", "success": true, "critique": "" } INPUT: Hunger: 20.0/20.0 Inventory (11/36): ... Task: Eat 1 ... Context: ... RESPONSE { "reasoning": "For all eating task, if the player's hunger is 20.0, then the player successfully ate the food.", "success": true, "critique": "" } INPUT: Nearby blocks: chest Inventory (28/36): {'rail': 1, 'coal': 2, 'oak_planks': 13, 'copper_block': 1, 'diorite': 7, 'cooked_beef': 4, 'granite': 22, 'cobbled_deepslate': 23, 'feather': 4, 'leather': 2, 'cooked_chicken': 3, 'white_wool': 2, 'stick': 3, 'black_wool': 1, 'stone_sword': 2, 'stone_hoe': 1, 'stone_axe': 2, 'stone_shovel': 2, 'cooked_mutton': 4, 'cobblestone_wall': 18, 'crafting_table': 1, 'furnace': 1, 'iron_pickaxe': 1, 'stone_pickaxe': 1, 'raw_copper': 12} Chests: (81, 131, 16): {'andesite': 2, 'dirt': 2, 'cobblestone': 75, 'wooden_pickaxe': 1, 'wooden_sword': 1} Task: Deposit useless items into the chest at (81, 131, 16) Context: ... RESPONSE { "reasoning": "You have 28 items in your inventory after depositing, which is more than 20. You need to deposit more items from your inventory to the chest.", "success": false, "critique": "Deposit more useless items such as copper_block, diorite, granite, cobbled_deepslate, feather, and leather to meet the requirement of having only 20 occupied slots in your inventory." }
  • 24. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 23 VOYAGERのアルゴリズム 疑似コード 1/5 あ def voyager( environment, # environment that uses code as action space curriculum_agent, # curriculum agent for proposing the next task action_agent, # action agent for code generation critic_agent, # critic agent for self - verification skill_manager, # skill manager for adding new skills and skill retrieval ): agent_state = environment.reset() while True: exploration_progress = curriculum_agent.get_exploration_progress( curriculum_agent.get_completed_tasks(), curriculum_agent.get_failed_tasks(), ) task = curriculum_agent.propose_next_task(agent_state, exploration_progress) code = environment_feedback = execution_errors = critique = None success = False # try at most 4 rounds before moving on to the next task for i in range(4): skills = skill_manager.retrieve_skills(task, environment_feedback) code = action_agent.generate_code(task, code, environment_feedback, execution_errors, critique, skills) agent_state, environment_feedback, execution_errors = environment.step(code) success, critique = critic_agent.check_task_success(task, agent_state) if success: break if success: skill_manager.add_skill(code) curriculum_agent.add_completed_task(task) else: curriculum_agent.add_failed_task(task) スライド1ページに収めるために 論文の疑似コードから一部変更
  • 25. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 24 VOYAGERのアルゴリズム 疑似コード 2/5 あ def voyager( environment, # environment that uses code as action space curriculum_agent, # curriculum agent for proposing the next task action_agent, # action agent for code generation critic_agent, # critic agent for self - verification skill_manager, # skill manager for adding new skills and skill retrieval ): agent_state = environment.reset() while True: exploration_progress = curriculum_agent.get_exploration_progress( curriculum_agent.get_completed_tasks(), curriculum_agent.get_failed_tasks(), ) task = curriculum_agent.propose_next_task(agent_state, exploration_progress) code = environment_feedback = execution_errors = critique = None success = False # try at most 4 rounds before moving on to the next task for i in range(4): skills = skill_manager.retrieve_skills(task, environment_feedback) code = action_agent.generate_code(task, code, environment_feedback, execution_errors, critique, skills) agent_state, environment_feedback, execution_errors = environment.step(code) success, critique = critic_agent.check_task_success(task, agent_state) if success: break if success: skill_manager.add_skill(code) curriculum_agent.add_completed_task(task) else: curriculum_agent.add_failed_task(task) スライド1ページに収めるために 論文の疑似コードから一部変更 Automatic Curriculumが エージェントの状態 と 完了・失敗したタスク から次のタスクを決定
  • 26. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 25 VOYAGERのアルゴリズム 疑似コード 3/5 あ def voyager( environment, # environment that uses code as action space curriculum_agent, # curriculum agent for proposing the next task action_agent, # action agent for code generation critic_agent, # critic agent for self - verification skill_manager, # skill manager for adding new skills and skill retrieval ): agent_state = environment.reset() while True: exploration_progress = curriculum_agent.get_exploration_progress( curriculum_agent.get_completed_tasks(), curriculum_agent.get_failed_tasks(), ) task = curriculum_agent.propose_next_task(agent_state, exploration_progress) code = environment_feedback = execution_errors = critique = None success = False # try at most 4 rounds before moving on to the next task for i in range(4): skills = skill_manager.retrieve_skills(task, environment_feedback) code = action_agent.generate_code(task, code, environment_feedback, execution_errors, critique, skills) agent_state, environment_feedback, execution_errors = environment.step(code) success, critique = critic_agent.check_task_success(task, agent_state) if success: break if success: skill_manager.add_skill(code) curriculum_agent.add_completed_task(task) else: curriculum_agent.add_failed_task(task) スライド1ページに収めるために 論文の疑似コードから一部変更 反復的(最大4回)にコードを生成 • タスクと環境フィードバックから関連スキルの検索 • タスク、現在の生成コード、環境フィードバック、実行エラー Self-verificationの批評、関連スキルからコードを生成 • 生成したコードによって環境へ作用 • Self-verificationによって成否判定 & 失敗の場合は批評
  • 27. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 26 VOYAGERのアルゴリズム 疑似コード 4/5 あ def voyager( environment, # environment that uses code as action space curriculum_agent, # curriculum agent for proposing the next task action_agent, # action agent for code generation critic_agent, # critic agent for self - verification skill_manager, # skill manager for adding new skills and skill retrieval ): agent_state = environment.reset() while True: exploration_progress = curriculum_agent.get_exploration_progress( curriculum_agent.get_completed_tasks(), curriculum_agent.get_failed_tasks(), ) task = curriculum_agent.propose_next_task(agent_state, exploration_progress) code = environment_feedback = execution_errors = critique = None success = False # try at most 4 rounds before moving on to the next task for i in range(4): skills = skill_manager.retrieve_skills(task, environment_feedback) code = action_agent.generate_code(task, code, environment_feedback, execution_errors, critique, skills) agent_state, environment_feedback, execution_errors = environment.step(code) success, critique = critic_agent.check_task_success(task, agent_state) if success: break if success: skill_manager.add_skill(code) curriculum_agent.add_completed_task(task) else: curriculum_agent.add_failed_task(task) スライド1ページに収めるために 論文の疑似コードから一部変更 タスク成功と判定した場合 • Skill LibraryにSkillを追加 • 成功したTaskとして記録 タスク失敗と判定した場合 • 失敗したTaskとして記録
  • 28. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 27 VOYAGERのアルゴリズム 疑似コード 5/5 あ def voyager( environment, # environment that uses code as action space curriculum_agent, # curriculum agent for proposing the next task action_agent, # action agent for code generation critic_agent, # critic agent for self - verification skill_manager, # skill manager for adding new skills and skill retrieval ): agent_state = environment.reset() while True: exploration_progress = curriculum_agent.get_exploration_progress( curriculum_agent.get_completed_tasks(), curriculum_agent.get_failed_tasks(), ) task = curriculum_agent.propose_next_task(agent_state, exploration_progress) code = environment_feedback = execution_errors = critique = None success = False # try at most 4 rounds before moving on to the next task for i in range(4): skills = skill_manager.retrieve_skills(task, environment_feedback) code = action_agent.generate_code(task, code, environment_feedback, execution_errors, critique, skills) agent_state, environment_feedback, execution_errors = environment.step(code) success, critique = critic_agent.check_task_success(task, agent_state) if success: break if success: skill_manager.add_skill(code) curriculum_agent.add_completed_task(task) else: curriculum_agent.add_failed_task(task) スライド1ページに収めるために 論文の疑似コードから一部変更 繰り返し
  • 29. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 28 実験設定 Text completion gpt-4-0314 gpt-3.5-turbo-0301 Temperature parameter Automatic Curriculum: temperature = 0.1 それ以外: temperature = 0.0 Text embedding Text-embedding-ada-002 シミュレーション環境はMineDojo [Linxi+ 2022] 運動制御はMineflayer JavaScript API [Fan+ 2022] Linxi Fan, Guanzhi Wang, Yunfan Jiang, Ajay Mandlekar, Yuncong Yang, Haoyi Zhu, Andrew Tang, De-An Huang, Yuke Zhu, and Anima Anandkumar. Minedojo: Building open-ended embodied agents with internet-scale knowledge. arXiv preprint arXiv: Arxiv-2206.08853, 2022. [Mineflayer] PrismarineJS. Prismarinejs/mineflayer: Create minecraft bots with a powerful, stable, and high level javascript api., 2013.
  • 30. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 29 実験設定 Minecraftでそのまま使用可能なLLM-based agentは存在しない NLPタスク(without embodiment)向けの代表的Baselineを選択 ReAct [Shunyu+ 2022] Reflexion [Noah+ 2023] AutoGPT(著者再実装) AutoGPT = VOYAGER – “Skill Library” – “Self-Verification” – “Automatic Curriculum” Task = “explore the world and get as many items as possible” [Yao+ 2022] Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao. React: Synergizing reasoning and acting in language models. arXiv preprint arXiv: Arxiv-2210.03629, 2022. [Shinn+ 2023] Noah Shinn, Beck Labash, and Ashwin Gopinath. Reflexion: an autonomous agent with dynamic memory and self-reflection. arXiv preprint arXiv: Arxiv-2303.11366, 2023. [AutoGPT] Significant-gravitas/auto-gpt: An experimental open-source attempt to make gpt-4 fully autonomous., 2023.
  • 31. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 30 評価結果 探索性能 VOYAGER 160回のプロンプト反復で63種のアイテムを発見 AutoGPTの3.3倍以上のアイテムを発見 Number of prompting iterations
  • 32. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 31 評価結果 探索性能 ReAct と Reflexion 探索目標が抽象的で適切なカリキュラムがなく探索性能が低い Number of prompting iterations
  • 33. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 32 評価結果 技術ツリーの習得 VOYAGER Wooden Toolを15.3倍 Stone Toolを8.5倍 Iorn Tool を6.4倍 Diamond Tool はVOYAGERのみが習得 Automatic Curriculum の有効性 エージェントの進歩を促進するために適切な複雑さの目標を提示 習得に要したプロンプト反復回数(3回の平均) 最大反復回数=160
  • 34. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 33 評価結果 マップの探索 VOYAGERはBaselineと比較して2.3倍長い距離を移動
  • 35. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 34 評価結果 Zero-shot generalization 設定 エージェントのインベントリを初期化 新しくインスタンス化された世界に初期化 未知のタスクでテスト Diamond Pickaxe Golden Sword Lave Bucket Compass
  • 36. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 35 評価結果 Zero-shot generalization VOYAGERは全てのタスクを達成可能 Skill Library は AutoGPT にも有効なモジュール Pickaxe:ツルハシ
  • 37. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 36 Ablation Studies Automatic Curriculum は重要 Manual Curriculum ダイヤモンドを発掘するための手動カリキュラム Random Curriculum VOYAGERで取得した101のアイテムをランダムに選択 (Manual Curriculum) Mine 3 wood leg Craft 1 crafting table Craft 1 wooden pickaxe Mine 11 cobblestone Craft 1 stone pickaxe Craft 1 furnace Mine 3 iron ore Smelt 3 iron ore Craft 1 iron pickaxe Mine 1 diamond
  • 38. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 37 Ablation Studies Skill Library は重要 w/o Skill Library は後半になると伸び悩む Skill Library は古いスキルに基づいて複雑なスキルを作成可能
  • 39. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 38 Ablation Studies GPT-4 vs GPT-3.5 GPT-3.5:コード生成にGPT-3.5を使用 GPT-4はコーディング性能がGPT-3.5から大幅に向上している 過去の研究と同様の結果
  • 40. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 39 Ablation Studies Self-Verification はフィードバックの中で最も重要 w/o Self-Verificationが最も性能悪化 Self-Verification は新しいタスクに移るタイミングや 以前に失敗したタスクを再挑戦するタイミングを決めるのに重要
  • 41. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 40 Multimodal Feedback from Humans GPT-4は論文執筆時点ではテキストのみ対応 2つの方法 Human as a critic Self-verificationを人間が行う 人間が視覚的な批評を与える Human as a curriculum Automatic curriculumを人間が行う VOYAGERが段階的に完成できるように誘導
  • 42. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 41 Limitation Cost GPT-4のAPIはGPT-3.5の15倍の高コスト ただし、VOYAGERではGPT-4によるコード生成品質が必要 GPT-4の約160反復で50ドル程度 https://github.com/MineDojo/Voyager/blob/main/FAQ.md#whats- the-estimated-cost-of-running-voyager (Access 2023-06-04) Inaccuracies エージェントが正しいスキルを生成できないケースがある Automatic Curriculumはことタスクを後で再試行する柔軟性をもつ Self-Verificationも失敗することがある 例:蜘蛛を倒すという成功信号として蜘蛛の糸を認識しない Hallucinations Automatic Curriculum が達成不可能な課題を提案する ゲーム内に存在しないアイテム コード生成におけるHallucination 存在しない関数の呼び出し
  • 43. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 42 関連研究 Decision-making Agents in Minecraft Low-level controller MineDojo[Fan+ 2022], VPT[Baker+ 2022]:Youtube動画で事前学習 DreamerV3[Hafner+ 2023]:世界モデルでダイアモンド採掘を達成 High-level planner Codexによって実行可能なポリシーを生成 [Volum+ 2022] 本研究 先行研究と同じ点 Low-level controller: Volumらに従いMineflayerを利用 High-level planner: GPT-4 先行研究と異なる点 Automatic Curriculumによるオープンエンドな探索 [Fan+ 2022] Linxi Fan, et.al. Minedojo: Building open-ended embodied agents with internet-scale knowledge. arXiv preprint arXiv: Arxiv-2206.08853, 2022. [Baker+ 2022] Bowen Baker, et.al. Video pretraining (vpt): Learning to act by watching unlabeled online videos. arXiv preprint arXiv: Arxiv-2206.11795, 2022. [Hafner+ 2023] Danijar Hafner, et.al. Mastering diverse domains through world models. arXiv preprint arXiv: Arxiv-2301.04104, 2023. [Volum+ 2022] Ryan Volum, et.al. Craft an iron sword: Dynamically generating interactive game characters by prompting large language models tuned on code. In Proceedings of the 3rd Wordplay: When Language Meets Games Workshop (Wordplay 2022), pages 25–43, Seattle, United States, 2022. Association for Computational Linguistics.
  • 44. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. Copyright © 2020 調和系工学研究室 - 北海道大学 大学院情報科学研究院 情報理工学部門 複合情報工学分野 – All rights reserved. 43 まとめ GPT-4によってMinecraftをプレイするVOYAGERを提案 LLM-powered embodied lifelong learning agent