Karaage0703さんがAIマリオ第二弾?としてLLMで遊ぶスーパーマリオを公開されていたので、早速遊んでみます。
プロンプト弄っても、なかなかここから進みません。
基本的にはプロンプト芸でどうにかならないかなと弄ってみました*1。OpenAIのAPIを呼び出しているので放置トライは危険です。少し慎重に弄ってみています。
プロンプト以外での変更点について。プロンプト弄るとJsonエラーが起きたのでresponse_formatを変更。多少は改善した感じ。
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "mario_action",
"description": "Mario's action",
"schema": {
"type": "object",
"properties": {
"explanation": {
"type": "string",
"description": "画面の説明"
},
"reason": {
"type": "string",
"description": "ボタン操作の理由"
},
"action": {
"description": "ボタン操作の種類",
"enum": [0, 1, 2, 3, 4, 5, 6],
"type": "integer"
}
},
"required": ["explanation", "reason", "action"],
}
GPT-4oの特有の問題かはわかりませんけれども、難しいなと考えたのでは以下の点です。
1.位置関係、特に距離を上手く入れ込むの大変。
2.過去と未来の時系列の変化の情報の受け渡し。
1も2もテキストプロンプトレベルで試しましたが、気持ち改善したかもというレベルでゲームのプレイは劇的には改善しません。
実際プレイする場合には、このタイミングでダッシュジャンプすると、到達位置がどのあたりだと学習し、うまくそれを組み合わせることでゲームをクリアします。LLMの場合は大まかな状況判断ができますが、その場学習は簡単ではない。お茶と濁すとすると、自律的な自己プロンプト改善やエージェント的な動作になるのだろうか。
使ったColabノート
*1:使ったColabノートを参照