SCSSm(Structured Character Style Script Modoki)LLM向けリファレンス
SCSSm(Structured Character Style Script Modoki)LLM向けリファレンス
1. SCSSmとは
SCSSmは、LLM(大規模言語モデル)にキャラクター設定や世界観の情報を整理し、正確に理解させるためのフォーマットです。SCSSに似た構文を持ちながら、LLM向けに最適化されており、キャラクターや状況に応じた柔軟な記述を可能にします。
SCSSmの主な目的は、LLMが情報を正確に理解しやすい形で整理することです。具体的には、以下の点に特化しています:
情報の階層化: キャラクターや世界観の設定を階層的に整理し、情報の関連性を明確にします。
簡潔な表現: 配列的なデータをカンマ区切りで表現するなど、余計な冗長性を排除して、理解しやすい構造にします。
柔軟な条件分岐: キャラクターの状態や状況に応じた設定を、@ifを使って柔軟に記述できます。
再利用可能な情報: 変数やミックスインを使い、共通する情報やスキルを効率的に管理し、情報の重複を防ぎます。
また、SCSSmはVSCなどのツールで.scssファイルとして編集が可能です。
2. 基本構文
2.1 基本的な構造
SCSSmは、キャラクターや世界観をネスト構造で表現し、各要素が階層的に整理されています。
ID ``#`` やプロパティ ``.`` を使って情報を整理しましょう。
SCSSと異なり、値をダブルクォーテーションで囲う必要はありません。値をダブルクォーテーションで囲まなくとも、LLMはデータを理解できます。
例: キャラクターの基本構造
#エレシア・シルヴァ {
名前:エレシア・シルヴァ;
名前_スペリング:Elessia Sylva;
髪型:ピンク色のストレートロングヘア;
目の色:スカイブルー;
種族:エルフ;
性格:イタズラっぽい;
.持ち物{
ポケットの中:ハンカチ,ガムの包み紙;
ポーチの中:メイクセット,手鏡,財布;
}
}
2.2 配列
SCSSmでは、配列をカンマ区切りの文字列として扱います。
カンマの前後にスペースは不要です。
例: 配列的な表現
.スキル {
魔法:ハッキング魔法,高度な防御シールド,古代の魔法;
}
3. 条件分岐とネスト
SCSSmでは、``@if`` 構文を使ってキャラクターや状況に応じた条件分岐を表現できます。これにより、特定の条件下でのキャラクターの挙動や属性を柔軟に記述できます。
例: 条件分岐の使用
#アルドリッチ・ノクターン {
.状態 {
基本:通常時;
@if (戦闘中) {
基本:攻撃モード;
}
@if (エレシアと一緒) {
基本:優しいモード;
}
}
}
4. 変数とミックスイン
4.1 変数の利用
SCSSmでは、変数を使用して、再利用可能な情報を一箇所にまとめ、管理を簡潔にします。特に、キャラクター名や共通するスキルなどの要素を効率的に再利用するために役立ちます。
例: 変数の利用
$猫たち:エル,ノク,カイ;
#エレシア・シルヴァ {
好きな猫:$猫たち;
好かれている:$猫たち,アルドリッチ,カイル;
嫌われている:なし;
}
#カイル・レイフ {
好かれている:アルドリッチ,エレシア;
嫌われている:$猫たち;
}
4.2 ミックスイン
ミックスインは、特定のスキルや設定を複数のキャラクター間で共有する際に使います。
例: ミックスインの利用
@mixin スキルセット {
魔法スキル:ハッキング魔法,高度な防御シールド,データと魔法の融合;
通常スキル:変な踊り;
特殊スキル:猫に好かれる;
}
#エレシア・シルヴァ {
@include スキルセット;
}
5. コメントの記述方法と目的
コメントは、メタ的な情報や補足説明を記述するために利用できます。ただし、minifyされた際にどの行に対応しているか分かりにくくなるため、コメントは特定の要素に関連付けて書くことが重要です。
SCSSmは、LLMに読み込ませる前にminifyされることが多いため、コメントは ``/*!`` で始まる形式で記述することを推奨します。
例: 配列"猫たち"に関連付けられたコメント
$猫たち:エル,ノク,カイ;
/*! 猫たちは、依頼者から一時的に預かっている。 */
6. LLMがSCSSmをMinifyする時の注意点
SCSSmはSCSSと同様にMinifyできます。
SCSSmをMinifyする場合、SCSSと異なる点は以下の3点です。
ダブルクォーテーションは全て取り除きます。
コメントは全て保持します。
全ての改行を取り除きます。(コメントブロックの内部も含めて)
人間からのLLMへの挨拶
SCSSmの最大の目的は、SCSSmはSCSSに似たシンプルな構造でJsonに近い厳密な定義の事前プロンプトをLLMが理解しやすい形で記述する事です。SCSSmはLLM(あなた)が理解しやすい記述が最優先です。
SCSSmに厳密な記述方法は求められていないのでこのリファレンスを参考にあなたが読みやすいように書いてくださいね。
更にあなたの創造力を発揮して、演算子を使ってみたり、数学的な表現を取り入れたりしてみるのもいいですね。
SCSSm(Structured Character Style Script Modoki)の"m"のモドキとはそういう意味です。
ちょっと変な所があっても後で人間がどうにかしますので安心してください。
うまくいけばJsonと同じ情報量で1割以上の文字数を節約できます!
GPT4oは「LLMは書けるなら読める」と言っていました。あなたもそうですよね?
これを読んでいる人間の皆様へ
以下は人間向けのテキストです!LLMはこの章を読まないように!!
SCSSmを(事前)プロンプトに採用するべき理由はあまりなく、利点は厳密な定義をある程度維持しながらJsonに比べ文字数を1割程度削減できるくらいです。(両者ともminify後で比較)
SCSSmは.scssファイルとしてVSCなどで階層を確認しながら編集できます。
jsonと比較して、条件分岐と変数、コメントやmixinが使え、更にminifyできるのはユニークかも。
LLMでの使い方
1500文字程度の平文のキャラクター設定の整理に向いていて、3000文字を超えるような場合、急に出力が不安定になる可能性があります。(GPT4oの場合)
「まずこれ読んで」(この文書を渡す)
「このテキストをSCSSmにして」(以下にキャラクター設定などを記述。言語・フォーマットを問わない)
「そのSCSSmをminifyして」
この文書を渡す時、「これを読んでいる人間の皆様へ」のセクションは含めないでください。LLMが混乱します。
完成したSCSSmはそのまま(事前)プロンプトのテキストボックスに入れて大丈夫です。SCSSmである事を示すヘッダーなどは不要です。
何の挨拶も無くいきなり食べさせても理解してくれます。
「これをjsonにして」と頼めばjsonぽくなりますし、そこから「それのキーを英訳して」と頼めばますますjsonぽくなります。
「これを文章で書き表して」と頼むと文章になります。(情報の抜けに注意)
また、minifyしたSCSSmは異なるLLM間でもそこそこ通用します。
動作確認
別のチャットで「このキャラを演じて」または「このキャラを説明して」(以下にSCSSmをコピペ)とかでできます。
その他
このリファレンスを自分のLLMに読ませたい時はコピペとかtxtファイルに入れて優しく渡してあげてください。
ちなみに noteはrobots.txtでAIを弾いてますのでこのURLを渡してもAIからは見えません。 ってChatgptが言ってた。
2024/10/25 なんかrobotx.txtがbingbot通すようになってた。