ドキュメントを検索...

入力してドキュメントを検索

チャットガイド

マクロ(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}}
UnoRouter のCBSマクロ