チャットガイド
マクロ(CBS)
あらゆるプロンプトテキストで使える波括弧スクリプト。
構文
マクロは二重波括弧のトークンで、リクエスト時に展開されます。キャラクターフィールド、ロアブックエントリー、プリセット、挨拶、通常のチャットテキストで機能し、入れ子にもできます。
text
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}引数は二重コロンで区切ります。未知のマクロはエラーにならず空に展開されるので、打ち間違いでリクエストが壊れることはありません。
基本マクロ
| マクロ | 展開結果 |
|---|---|
{{char}} | 現在のキャラクター名(グループチャットでは現在の話者)。 |
{{user}} | あなたのペルソナ名。 |
{{persona}} | あなたのペルソナの説明。 |
{{description}} | 現在のキャラクターの説明フィールド。 |
{{lastmessage}} | 直近メッセージの本文。 |
{{time}} / {{date}} | あなたのロケールとタイムゾーンでの現在時刻・日付。 |
乱数
random は展開のたびに選び直し、pick は会話を通じて固定の選択をし、roll はd表記でダイスを振ります。
text
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}ロールと乱数はターンごとにシードされます。再生成は同じ値を再利用するので、スワイプでダイスが振り直されることはありません。
変数
チャット変数は会話の分岐ごとに、グローバル変数は全チャット横断で保持されます。マクロが使えるテキストやトリガースクリプトから設定できます。
text
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}分岐スコープ保存のおかげで、別の分岐へスワイプするとその分岐の変数状態が戻ります。兄弟分岐同士で値が漏れることはありません。
ブロック形式
ブロックは内容を包みます。if は条件が真のときだけ本文を描画、each は配列をスロット置換で巡回、when は行単位のelse分岐を加えます。
text
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}
{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}pure と escape は生の波括弧を展開から守ります。閉じタグはどれも、最も内側で開いているブロックを閉じます。
コメントとリテラル
コメントマクロはモデルが見る前に消えるので、カードフィールド内のメモに最適です。マクロ構文をそのまま見せたいときは pure ブロックを使いましょう。
text
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}