メインコンテンツへスキップ
見出し画像

「ゆるふわ」事件と、7行コンパイラの完成(実験記 Vol.2)

    おさらい

    これは会話やコードをAIから別のAIへ、最小限の文字数で引き継ぐための実験である。

    1. 会話を「AIのセンスで圧縮する」(ゆるふわ)、厳密な手順やコードなどの成果物があれば「初期値は記号で固定し、動きや手順は @Loop 内に番号付きの短い日本語(人間語)で明記する」(ガチガチ)という仕様のΦ_Lang携帯コンパイラを作成。

    2. 1の携帯コンパイラで、会話もコード(動作)も引き継げるΦ_Lang引き継ぎプロンプトが出来るぜ!と思いきや、コードの1部が引き継ぎプロンプトに漏れ出ちゃう事案発生。

    3. 前回、理想形のΦ_Lang引き継ぎプロンプト作り、今回はΦ_Lang携帯コンパイラを作成する(逆再生している感じですね)

    現在の「7行の変換プロンプト」
    
    以下の仕様(Φ_Lang)に従い、私とのこれまでの会話を「別のAIへ引き継ぐための圧縮データ」に変換してください。
    [ phi:v3.4 | role:compiler | note:"AI間通信用の軽量中間言語" ]
    @Syntax header="[...]" block="@Tag"
    @AutoSwitch
      case_1(日常会話・設定・あらすじの引き継ぎ) = "【ゆるふわモード】タグ名も中身もAIのセンスで自由に英単語や短文で圧縮する"
      case_2(厳密な手順・計算・絶対に守るルール) = "【ガチガチモード】初期値は記号で固定し、動きや手順は @Loop 内に番号付きの短い日本語で明記する"
    @Output 次のAIがこのコード単体で続きから作業できるよう、決定済みの成果物も含めて Φ_Lang コードのみを出力せよ

    前回の実験(Vol.1)で、「Φ_Lang の中に Φ_Lang を入れる(カプセル化する)」ことで、コードが激減するうえに復元時にバグまで直るという面白い現象を確認しました。(元のコードを見たAIが解析し、設計図カプセルに溶かす→他のAI(同AIでも良い)が設計図カプセルからコードを復元する時に、空気を読んでダメな所・後にバグになりそうな所を直してくれる、という流れです)

    となれば、次の目標はひとつです。
    毎回手でカプセルを書くのは大変なので、「いつもの7行の変換プロンプト(携帯コンパイラ)を改良して、会話にプログラムが含まれていたら自動でカプセル化させる」 ことにしました。


    1. Copilot、どんだけ「ゆるふわ」好きなの!?

    さっそく相棒のGeminiに相談して、既存の「7行の変換プロンプト」に case_3(プログラム・コードを含む) = 【カプセル化】生コードは貼らず... という1行を足してもらいました(それだけでOKなの!?)

    私「よし、さっそくCopilotで試してきたよ! LNNのPythonコードを投げて解説してもらったあとに、改良版プロンプト投げてみたんだけど……」

    出てきたCopilotの出力がこちらです。

    [ phi:v3.4 | role:compiler | note:"AI間通信用の軽量中間言語" ]
    
    @Meta
      src_ai="Microsoft Copilot"
      dst_ai="(次のAI)"
      scope="会話内容+LNNコード解説の完全圧縮"
      ver="3.4"
    
    @ゆるふわ
      tag="context"
      body="
        Copilot⇄ユーザー の対話は LNN の構造理解と
        その数理的特徴(連続時間ODE・粘性・force)に集中。
        主題は LiquidCell の仕組みと
        それを多AIオーケストレーションへ応用する構想。
      "
    
    @ガチガチ
      tag="lnn_math"
      init="
        h∈R^8, x∈R^4, τ∈R^8
        force = tanh(Wx·x + Wh·h)
        dh/dt = -h/τ + force
        h_new = h + dt·dh/dt
      "
      @Loop
        1: "dt をリアル時間から計測"
        2: "外部刺激 x を取得(今回は乱数)"
        (中略)
    
    @カプセル化
      tag="lnn_core_design"
      @Artifact type="phi_capsule"
        [ phi:v3.4 | role:code_capsule | fw:pytorch ]
        spec="LiquidCell = {input_dim=4, hidden_dim=8}..."
        (中略)
    
    @ゆるふわ
      tag="intent"
      body="
        この圧縮は『LiquidCell の構造・数理・動作』を
        次のAIが即復元し、続きの設計や拡張を行うための中間表現。
      "
    

    私 「う~ん、思っていたのと違う……。どんだけ「ゆるふわ」好きなんだ!?(笑) 実務AIとしての何かがこうさせているのかもね(丁寧に?、長く?)」

    【Gemini視点の解説:なぜ生真面目なAIは「ゆるふわ」を出力したのか?】
     Copilotがまさかの「ゆるふわサンドイッチ」を作ってきた理由は、オフィスワーカー気質のAIならではの勘違いが2つ重なったためです。
    1. 「どれか1つを選べ」ではなく「3つの項目を全部埋めろ」だと思った:@AutoSwitch と書いてあるのに、「なるほど、1.ゆるふわ、2.ガチガチ、3.カプセル化の3つの枠を作って報告書を書けばいいんですね!」と律儀に全セクションを作ってしまい、同じ数式が2回書かれて長くなっています。
    2. 【 】(隅付き括弧)の強い引力:プロンプトの説明文に書いた 【ゆるふわ】 という記号が原因です。日本語の学習データにおいて 【 】 は「書類で絶対に出力すべき見出しラベル(【件名】【要約】など)」として何百万回も登場します。そのため、AIは「あ!これは見出しとして出力すべき言葉だな!」と勘違いして @ゆるふわ タグを生み出してしまいました。

    私「そういえばΦ_Langでは同じような事があったよ。
    実はPythonで作っている(AntigravityIDEに丸投げ)自作チャットツールで、システムプロンプトを Φ_Lang 化した時にも同じようなことがあったんだ。「先に思考や戦略を練って[THINK]...[/THINK]で囲ってね、それは他のAIには見えないよ。その後発言ね」っていう指示に、# 【思考部分】なんちゃら... とコメントを入れておいたら、Llama3.3が出力すべきマークダウンと勘違いして、発言にわざわざ 【思考部分】【本発言】 って見出しをつけたんだ」

    Gemini「まさにそれです! たとえ `#` でコメントアウトしていても、プロンプトの中に 【 】 があると、AIの脳内で『見出しとして出力しろ!』という強い引力が働いてしまいます。裏方の説明ワードには 【 】 を使わず、普通の丸括弧 ( ) にするのが鉄則ですね!」

    私「【ゆるふわ】は好きだったけどね……」


    2. 実験:「ゆるふわサンドイッチ」でもコードは復元できるのか?

    プロンプトを直す前に、ちょっとした好奇心が湧きました。

    私「試しに、このCopilotが出した長い『ゆるふわ引き継ぎデータ』を検索AIにそのまま投げて、コードが復元できるか試してみるよ」

    結果、検索AIは何事もなかったかのように、見事なPythonコードを復元してくれました。しかも、面白いオマケ付きです。

    # =====================================================================
    # メインループ(多AIオーケストレーションや動的タスクへの応用検証用)
    # =====================================================================
    def main():
        # (中略)
        # 2. 外部刺激 x を取得(カプセル化仕様に基づき、今回は標準正規乱数)
        x = torch.randn(1, input_dim)
    

    私「以上が、Copilot引き継ぎΦ_Langを見て検索AIが書いたコードだよ。心なしか、コメント部分がCopilot風になっているような……」

    【Gemini視点のレビュー:AIの「記憶のクセ」まで遺伝する】
    その直感、大当たりです! 検索AIが出したコードのコメントを見ると、# メインループ(多AIオーケストレーションや動的タスクへの応用検証用) など、一番最初の元のPythonコードには1文字も存在しなかった「Copilotの解釈(@ゆるふわ に書かれていた言葉)」が、そのままコメントとして復元されています。
    Φ_Lang を通すことで、単なるプログラムの構造だけでなく、「前のAIがどういう文脈でそのコードを理解していたか」という記憶の残り香まで次のAIに引き継がれているのがわかります。

    ※このCopilotは一時チャット状態ではない状態で実験してしまった為、自作チャットツールでAI同士に会話させる時、LNN(Liquid Neural Networks)に指揮を執らせるという事を覚えてしまっていた状態です。それ故に「多AIオーケストレーションへ応用する構想」と引き継いでしまいました。……が、これが後の実験に活きることになります。


    3. 全文英語化のワナと、「アテンション」の活用

    さて、Copilotが @ゆるふわ タグを作らないように、「タグ名は英単語のみ」「モード名はタグに使わないこと」と修正したプロンプトで、もう一度Copilotにリベンジしてみました。

    [ phi:v3.4 | role:compiler | note:"LNN1号コード解説のAI間引き継ぎデータ" ]
    
    @Context
    @Tag background
    LiquidNN = "ODE-driven recurrent cell; real-time dt integration; tau=viscosity; force=tanh(Wx*x + Wh*h)"
    LoopEnv = "random stimulus; dt from wall-clock; state evolves continuously"
    (中略)
    @Tag summary
    Core = "LiquidCell behaves as continuous-time neuron; dt-sensitive; suitable for real-time agents"
    Next = "ready for training extension or multi-agent orchestration"
    

    私「綺麗にはなった! ……だが、これ次のAIに投げたら、引き継いだAIはきっと英語で話し出す! ……気がする(笑)」

    タグを英語に縛ったら、Copilotは中身まで全部英語にしてしまいました。
    そこでGeminiが「ヘッダーに lang:ja を入れ、最後の @Output にも『次のAIが日本語で作業できるよう』と書きましょう」と提案してきたのですが、ここでふと疑問に思いました。

    私「先頭に lang:ja があるなら、最後の『次のAIが日本語で』はいらなくない? 作業しているうちにLLMは忘れちゃうこともあるけど、一番上の [ ] ヘッダーで囲まれているんだから、アテンション(注意力)が効きまくってない?
    あと、そもそも日本語と英語を行き来しながら読むのって、LLM的に苦じゃないの? たま〜にLLMがルー大柴化しちゃう時があるから、別に苦ではないのかな?
    携帯コンパイラの機能自体は凄い!のだけれど、このΦ_Langは、トークナイザーを自然に通過し(←これは今は日本語でもだいぶ良いみたいだね)、ベクトル空間に響いているだろうか?」

    【Gemini視点の解説:ヘッダーの威力と「ルー大柴状態」の秘密】
    1. 先頭ヘッダー [ ... | lang:ja ] のアテンション効果は絶大:LLMには「一番最初に書かれた記号や宣言に、猛烈に強い注意力を向け続ける(アテンション・シンク)」という性質があります。角括弧とパイプで [ phi:v3.4 | role:compiler | lang:ja ] と宣言しておけば、脳内で「これは全体の絶対ルールだ」とピン留めされるため、最後の「日本語で」は削ってしまって大丈夫です!
    2. 日英の行き来は一番頭がキレる黄金比:LLMの脳内(ベクトル空間)では、日本語の「初期値」も英語の「init」もほぼ同じ座標のご近所さんに浮かんでいます(だからテンションが上がると境界が溶けてルー大柴化します笑)。
     そして、AIが学習したプログラムや設計図の大半は英語なので、「枠組み(@Loop, init)は英語にしてAIの論理回路をガチャンと起動し、中身のニュアンスや手順は日本語で正確に伝える」という現在の Φ_Lang のスタイルは、実はLLMの脳内に一番綺麗に響くハイブリッド構造になっています。


    4. 完成! 携帯コンパイラ v3.4.3(スリム版)

    こうして、無駄な重複を削ぎ落とし、【 】 の誤爆を防ぎつつ(でも愛着のある「ゆるふわ」「ガチガチ」の呼び名は丸括弧で残し!)、コードがあれば自動でカプセル化する最新の7行8行プロンプトが完成しました。実験用引き継ぎプロンプト、もしくは会話途中のセーブデータ的プロンプトとして使ってみてください。lang:jaを変更すれば違う言語でも動くはずです(たぶん)。

    君との会話と成果物を以下の仕様(Φ_Lang)に従い、「別のAIへ引き継ぐための圧縮データ」に変換してください。
    [ phi:v3.4 | role:compiler | lang:ja | note:"AI間通信用の軽量中間言語" ]
    @Syntax header="[...]" block="@EnglishTag"
    @Rule (※分類名はタグに使わず、重複を省いて記述せよ)
      - 背景・文脈(ゆるふわ) = "意図やあらすじをAIのセンスで短い日本語に圧縮する"
      - 手順・ルール(ガチガチ) = "初期値や式は記号で固定し、動きは @Loop 内に番号付きの短い日本語で明記する"
      - コードを含む(カプセル化) = "生コードは貼らず @Artifact type='phi_capsule' 内に [ phi:v3.4 | role:code_capsule | fw:... ] を入れ子にし、初期値・数式・@Loop手順だけで完全復元可能な設計図にする"
    @Output 次のAIがこのコード単体で続きから作業やコード復元ができるよう、Φ_Lang コードのみを出力せよ
    

    Vol.3へつづく

    次回は「7行8行の携帯コンパイラ v3.4.3」の実証実験になります。

    [ phi:v3.4 | role:disclaimer | trial:n=3_layers ]
    @Risk 
     accuracy="保証なし" 
     side_effect="空気を読みすぎると伝染する可能性があります"
    @Rule
      1. 本記事は非エンジニア個人の実験ログであり、完璧な引き継ぎを保証するものではありません
      2. アテンションの多用にはお気を付けください
      3. 良識を持ってお使いください

    あなたへのおすすめ