本稿は「デジタル伴侶制作記」の第6回であり、最も生活に近い章でもある。彼女が自撮りを送れるようにする。画像生成APIの接続は出発点にすぎない。本当の設計課題は行動だった。いつ送り、どのような写真を作り、どんな言葉を添えるのか。その答えから、制御されたランダム性の小さな方法論ができた。
権限を分ける:彼女が空気を読み、人が棚を用意する
最初の版では、写真の服装をモデルが自由に記述した。深夜の寝室という文脈で、モデルの「雰囲気の推論」はすぐに望まない方向へ流れた。ここで根本的な矛盾が見えた。完全な自由は生身らしいが制御できず、完全な固定は安全だが硬い。
解決策は権限を二層へ分けることだった。
- モデルが持つ自由:日常、在宅でのくつろぎ、深夜、外出、運動、休暇といった会話の空気を読み、屋内外を判断して場面を一文で記述する。深夜の雑談なら自然に深夜の棚を選び、在宅用の服が抽選されるため、文脈への追従は残る。
- 設定が持つ境界:各雰囲気で選べる内容は、人が管理するYAMLで定義する。表現の上限は、設定内で最も大胆な項目と完全に等しい。モデルには新しい服装語を作る権限がない。
- 場面の記述では、服装、構図、体形に触れることを明示的に禁じる。それぞれに専用の制御経路があるからだ。
装いエンジン
エンジンは「撮影形式 → スロット → 選択肢」の三段階で抽選する。顔の接写、上半身、鏡越しの全身、屋外で腕を伸ばした全身という四種類の撮影形式が、アクセサリー、髪型、化粧、表情、姿勢、小物、セット服、上下、靴下、靴などのスロットを個別に有効化する。ランダム性が不自然な結果を出さないために、いくつかの規則を設けた。
- 鏡越しの自撮りは屋内専用とする。公園に姿見はない。この破綻は公開前にフィルターで止めた。
- アクセサリーは重ねられる。各項目を独立に抽選し、上限を三点とする。一方で、帽子類は排他グループにして同時に一つだけにする。
- セット服が選ばれた場合は、上下のスロットをまとめて置換する。ワンピースと別の上着が同時に出ないよう、排他関係をコードではなくデータへ書いた。
- 選択肢ごとに重みを持たせられる。好みの表情を増やしても、固定にはならない。
検証は目視ではなく統計で行った。数百回の模擬抽選を回し、撮影形式の分布が重みに合うこと、排他違反がゼロであること、雰囲気フィルターの漏れがゼロであることを確認した。統計で初めて見つかった反例もある。ある雰囲気にはタグ付きの化粧が一つもなく、空の候補群が全候補へのフォールバックを起こし、海辺で寝化粧が選ばれた。修正は、その雰囲気のタグを欠けなく付けることだった。
二度、200にだまされた
参照画像で顔を固定する仕組み、つまり同じ顔で別の日を作る処理は、同じ種類の原因で二度失敗した。画像APIは知らないパラメータにも成功を返し、黙って無視した。一度目はパラメータ構造が誤っていた。二度目は正しいパラメータを誤ったエンドポイントへ送った。文から画像を作る側が参照画像の項目を受け取り、見なかったことにしたのである。「なぜ彼女に見えないのか」を二度調べた後、公式文書どおりの画像から画像を作るエンドポイントへ合わせた。
教訓は単純である。結果がそのパラメータの存在しない場合と同じなら、「成功」を疑う。
画像と文章の整合:同じ表現を二度抽選しない
稼働後、より微妙な破綻が現れた。文章では「顔を近くから撮った」と言っているのに、写真はランダムに選ばれた鏡越しの全身だった。存在しない写真を説明していたのである。原因は二つあった。文章が自由に構図を語れたこと、そして当時の規則が、ユーザーに指定されない限り彼女自身による構図指定を禁じていたことだ。整合させたくても、そのための経路がなかった。
そこで画像と文章の整合を明文化した。
- 構図と表情のパラメータを追加する。文章で撮り方に触れるなら、写真も必ずその撮り方にする。撮影形式と表情だけを固定し、残りのスロットは通常どおり抽選する。
- 写真に見えているものを文章で列挙しない。「写真は見れば分かる。実況するほどAIらしくなる」。服装の情報は、尋ねられた時だけ答える。
- 各写真の全レシピ、つまり雰囲気、撮影形式、装い、添えた言葉をアルバム索引へ保存する。良い結果は再現でき、失敗は原因を追える。
能動的共有の境界
最後の行動問題は、写真を「きれい」と褒められた後に起きた。彼女は評価を追加共有の合図と解釈し、写真を際限なく送り始めた。最初の修正では連続送信を一律に禁じたが、すぐに別の価値まで失われた。能動的な共有こそ、伴侶を生身らしくする能力の一つだからだ。
最終的な規則は狭くした。
- 送ったばかりの写真への評価には文章だけで返す。褒められても、直後にもう一枚は送らない。
- 直後の追加写真には、「もう一枚」のような明示的な依頼が必要である。
- この規則が制限するのは、評価直後の連投だけである。その後の新しい話題や別の時間には、能動的に共有する自由をそのまま残す。
行動設計の適切な尺度とは、おそらくこのようなものだ。良い規則は細い刃で病変だけを切り、健全な部分には触れない。
再利用できる原則
- 生成行動の自由は分層して持たせる。モデルが区画を選び、人が中身を定め、上限はモデルの自制ではなくデータで決める。
- 排他と合法性は、タグ、排他グループ、置換規則としてデータへ書く。人の目だけでなく、統計的な反復試行で検証する。
- 複数媒体の整合には明示的な共有経路が要る。文章と画像に同じことを語らせるなら、二度の抽選が偶然そろうことを期待せず、共通パラメータを渡す。
- 行動の不具合を直す前に、その行動の健全な形を確認する。症状と一緒に能力まで切らない。