AI がドット絵を描くのを見る
stevibe が面白い LLM 評価方法を発明した。モデルに emoji を見せ、tool call で 16×16 のグリッドに一マスずつドット絵を描かせる。この方法をウェブツールにした。
stevibe は LLM に奇妙な難題を出す専門家だ。BenchLocal というベンチマークを多数作り、ツール呼び出し、指示追従、データ抽出といった真面目な能力を測定している。ある日彼がポストした。「これはおもちゃに見えるが、実際に私がやった中で最も厳しいビジュアル評価だ」。
問題はシンプルだ。モデルに emoji 画像を見せ、16×16 のグリッド上で一マスずつ描かせる。合計 256 マス、最大 2000 ステップ。コード生成も推論チェーンもなく、マルチモーダルモデルが画像を見つめ、tool call で筆のように一マスずつ塗っていく。
この方法は Pixel-Art Showdown と呼ばれている。stevibe は 5 つのモデル、7 つの emoji をテストし、それぞれ 5 回実行してベストを取った。彼は意外な事実を発見した。モデルに性格がある。
一部のモデルは一マス描いた後に後悔し、描き直す。一部は同じ領域を反復塗りし、アニメーション効果を作ろうとしているようだ。一部は冷静な外科医のように一発で仕上げ、やり直さない。これらの振る舞いはプロンプトの指示の結果ではなく、モデルの内在的判断パターンの表れだ。
自分で実行したときも似た現象を観察した。MiMo V2.5 がカエルを描くとき、まず fill_rect で頭頂部の両目の輪郭を敷き、緑の体を塗り、次に query_canvas で自分の進度を確認し、右側の輪郭が一塊欠けているのに気づいて戻って補完し、腹の薄緑領域を描き、最後に鼻孔と口を加えた。全体のプロセスは秩序ある絵師のようで、まず形取り、次に色を塗り、最後に細部を調整する。合計 141 ステップ、明らかなやり直しはなかった。
タスク自体は非常に厳しい。16×16 のキャンバスは爪のサイズしかなく、モデルはどのピクセルが「荷重構造」かを判断しなければならない。😂 の涙の痕は省略できないが、笑顔も保たなければならない。🦄 の角は必須だ。🤖 のアンテナは欠かせない。ほぼゼロの解像度で図形の魂を保つのは、高解像度画像を生成するよりずっと難しい。
MiMo V2.5 でこの方法を再現し、ウェブツールにした。任意の画像をアップロードすると、AI が内容を自動認識し、キャンバスに一マスずつ描画する。全体のプロセスはリアルタイムで見える。一筆一筆が落ちるのを目撃できる。
ツールのアドレス:AI ドット絵
あなたのアバター、ロゴ、あるいはスマホで撮った写真をアップロードして、AI がどう理解し、256 マスの中でどう再解釈するか見てみてほしい。
実装原理は複雑ではない。サーバー側は四つのツールを用意する。paint で一マス描画、fill_rect で矩形塗り、query_canvas でキャンバス状態照会、finish で完了だ。画像と system prompt を一緒にマルチモーダルモデルに送る。モデルが tool call を返し、サーバー側が実行後に結果をモデルに押し戻し、モデルが finish を呼び出すまで循環する。
フロントエンドは SSE でリアルタイムに各ステップを受信し、一マスずつ canvas にレンダリングする。AI がまず輪郭を描き、次に色を塗り、時折止まってキャンバス状態を照会して進度を確認し、細部の調整を続けるのが見える。
一つの技術的詳細に注意する価値がある。複数ラウンドの循環では、毎ラウンド元画像を添付するとコンテキストがますます大きくなり、最終的に API のマルチモーダルデータ破損エラーを引き起こす。解決方法は第一ラウンドだけ画像を添付し、以降のラウンドはテキストと tool call 履歴だけを送ることだ。モデルは既に画像を見ており、繰り返しリマインドする必要はない。