SillyTavern:LLM向けのキャラクターインターフェース ローカル
SillyTavernは、LLMを用いたロールプレイとインタラクティブな執筆のために設計されたWebインターフェースです。それ自体でモデルを実行するわけではなく、KoboldCppやOllamaなどのローカルバックエンドに接続し、通常のチャットに欠けている機能をその上に追加します。キャラクターカード、永続的な世界設定の記憶、プロンプトの細かな管理、拡張機能などです。このガイドでは、インストール、バックエンドへの接続、キャラクターの作成、そしてキャラクターの演技の質を左右する設定を説明します。
#通常のチャットではなくSillyTavernを選ぶ理由
Open WebUIやLM Studioのようなインターフェースは、各会話をアシスタントとユーザーのやり取りとして扱います。SillyTavernは別のニーズを出発点としています。それは、独自のルールが記憶される世界の中で、数百件のメッセージにわたって一貫したキャラクターを演じることです。ローカルLLMを使ったロールプレイのコミュニティで定番のツールであり、単純なチャットにはない仕組みを備えています。
- キャラクターカード
- ペルソナ、スタイル、対話の例、およびウェルカムメッセージを記述する標準化された形式(メタデータ埋め込み付きPNG)。1つのファイルとしてインポートおよび共有可能。
- ワールドメモリ
- ロアブックは、キーワードが現れたときだけプロンプトに情報を追加することで、コンテキストを埋め尽くさずに、一貫した世界観を維持します。
- プロンプトの制御
- モデルに送られる各ブロックを視覚的に確認し、変更できます:システムプロンプト、指示フォーマット、インジェクションの順序。何一つ隠されていません。
- 任意のバックエンドを選択
- SillyTavernは純粋なフロントエンドです。同じキャラクターをKoboldCpp、Ollama、llama.cpp、またはリモートAPIで動かせるため、何も書き直す必要はありません。
#前提条件およびバックエンドの選定
お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 生涯アップデート
SillyTavernはWindows、macOS、Linux上でNode.js(バージョン18以上)を使って動作します。リソース消費は少なく、VRAMを消費するのはバックエンドです。ほぼすべての用途をカバーできるローカルバックエンドは、GGUFとロールプレイ向けのKoboldCppと、より汎用的なOllamaの2つです。
- KoboldCpp
- GGUFを実行する単一のバイナリで、SillyTavernが標準で対応するAPIを備えています。メモリ設定を細かく調整でき、AMD ROCmにも対応しています。RPコミュニティで定番の選択肢です。
- Ollama
- デーモンは http://localhost:11434 で接続を待ち受けます。すでに別の用途で使っている場合に便利です。SillyTavernは、互換性のあるエンドポイントを介して接続します。
- llama.cpp(llama-server)
- OpenAIと互換性のあるHTTPサーバーで、レイヤーのオフロードを最大限に制御できます。
- VRAM
- Q4_K_Mでは、7Bは約5GB、14Bは約9GB、32Bは約19GBに収まります。スムーズなRPには、カードの容量が許せば、最低でも12B〜14Bのモデルを目安にしてください。
#SillyTavernをインストール
推奨される方法はGitでのクローンです。git pullだけで簡単に更新でき、SillyTavernは開発の進展が速いためです。Node.js 18以降とGitがインストールされていることを確認してください。
- 01リポジトリをクローンする安定していてテスト済みのreleaseブランチを取得してください。多少のバグを許容して新機能をいち早く試したい場合を除き、stagingブランチは避けてください。
- 02起動スクリプトを実行Linux/macOSではstart.sh、WindowsではStart.batを実行。初回起動時にnpmが自動で依存関係をインストールします。
- 03インターフェースを開くSillyTavernはhttp://localhost:8000でインターフェースを提供します。ブラウザでこのアドレスを開いてください。デスクトップアプリをインストールする必要はありません。
- 04あとで更新するフォルダー内でgit pullを実行し、その後スクリプトを再起動してください。キャラクターと会話はdata/に別途保存されており、上書きされません。
#ローカルバックエンドを接続する
SillyTavernを開いたら、操作はすべてAPI接続タブ(上部の電源プラグ形のアイコン)で行います。基本的な手順は、バックエンドを起動し、そのアドレスをSillyTavernに指定することです。
#KoboldCpp で
GGUF モデルを指定して KoboldCpp を起動してください。デフォルトではポート5001で API を公開します。SillyTavern で API タイプに「Text Completion」、バックエンドに「KoboldCpp」を選び、URL を入力してください。Connect をクリックすると、すべて正常であれば、読み込まれているモデルの名前が表示されます。
#Ollama で使用
Ollamaはすでにポート11434でデーモンとして動作しています。SillyTavernで「Text Completion」を選び、次にバックエンドとして「Ollama」を選択します。アドレスを入力し、自動取得されたドロップダウンリストからモデルを選んでください。
#キャラクターのカードを作成し、インポートする
キャラクターのカードはSillyTavernの核心です。これは、画像がアバターとして使用され、埋め込まれたメタデータがキャラクターを記述するPNGファイルです。ゼロから作成するか、コミュニティが共有しているカードをインポートすることができます。
#重要なフィールド
- 説明
- キャラクターの基礎となる情報:外見、性格、これまでの経歴。常にコンテキストに組み込まれるため、冗長な説明は避け、具体的な情報を簡潔にまとめましょう。
- Personality
- 性格の要約。説明全体を書き直さずに、口調の方向性を定めるのに役立ちます。
- First message
- 場面設定を示す最初の挨拶メッセージです。期待するトーン、文体、形式を示し、モデルはその形式を模倣する傾向があります。
- Example dialogues
- キャラクターの話し方をモデルに示すセリフの例。特定の語り口を定着させるのに非常に効果的です。
- Scenario
- キャラクターの説明とは別に設定する、シーンの背景や状況。同じキャラクターを複数の状況で再利用するのに便利です。
- 01キャラクターのパネルを開くトップバーのキャラクターアイコンをクリックするとリストが開きます。「+」ボタンを押すと、空のカードが作成されます。
- 02説明を入力するキャラクターについて、情報を凝縮して詳しく記述してください。多くの作者は段落形式ではなく、特徴をリストにするなどの構造化された形式を使っています。モデルもその形式の指示によく従います。
- 03最初のメッセージを書く最初のメッセージは丁寧に書いてください。文体を調整するうえで、最も効果的な手段です。三人称の語りで書かれた挨拶メッセージは、モデルがその形式で書くように促します。
- 04既存のカードをインポートカードのPNGファイルをリストにドラッグ&ドロップするか、インポートしてください。コミュニティハブでは、カードは通常の画像ファイルとして共有されています。
#持続する世界:lorebook
lorebook(またはWorld Info)は、長いプレイでの中心的な課題を解決します。それは、すべての情報を常に投入せずに、世界観の一貫性をどう保つかという問題です。仕組みは、キーワードに応じて条件付きで情報を投入するというものです。
エントリを作成し、それぞれに1つ以上のキーワードを関連付けます。そのいずれかが最近のメッセージに現れると、対応するエントリが生成の直前にコンテキストへ挿入されます。それ以外のときは、コンテキスト内の領域を一切占有しません。これにより、数十の場所や脇役、ルールを記述しても、プロンプトの容量を使い切ることはありません。
- 入力
- テキストブロック(注入するロア)とキーワードトリガー。例:キーワード「Valmont」→ Valmontの街の説明
- 常時有効と選択的有効
- エントリは、常に有効にすることも(世界観の基本ルール)、キーワードに一致したときだけ有効にすることもできます(文脈に応じた詳細)。
- インジェクションの深さ
- エントリをプロンプトのどの位置に挿入するかを選べます。その位置によって、モデルがそのエントリをどの程度重視するかが変わります。
- 特定のキャラクターに紐付けるか、全体に適用するか
- lorebookは、特定のカードに紐づけることも、共通の世界設定としてすべての会話に適用することもできます。
#ロールプレイ向けに生成設定を調整する
サンプリングパラメータは、一貫性と創造性のバランスを決めます。ロールプレイでは、事実に基づく支援よりも多様性を求めますが、一貫性は保つ必要があります。これらの設定は、生成パラメータのタブ(スライダーのアイコン)にあります。
- 温度
- 創造性と安定性のバランスを調整するスライダーです。ロールプレイ(RP)では、0.7〜0.9程度がバランスのよい設定です。高すぎる(1.2を超える)と内容に一貫性がなくなり、低すぎるとキャラクターが同じことを繰り返す単調なものになります。
- Min-P
- 最も確率の高いトークンの確率を基準に、確率の低いトークンを除外する現代的なサンプラーです。0.05〜0.1に設定すると出力が安定し、生成が破綻することなく温度を上げられます。
- 繰り返しペナルティ
- 同じトークンの繰り返しにペナルティを課します。ループの防止に役立ちますが、強く設定しすぎると、モデルが不自然な言い回しを使うようになります。設定は控えめにしてください。
- Response length
- 1 回の応答で生成されるトークンの最大数。独白が長引くことなく、一貫性のあるナラティブな台詞には 200〜400 トークンが適しています。
- Context size
- バックエンドが読み込んだコンテキストサイズと一致している必要があります。KoboldCppを8kでしか起動していない場合、SillyTavernで16kを要求しても意味がありません。
#使い心地を変える拡張機能
SillyTavernは拡張機能を追加できます。一部の拡張機能は標準で付属しており、それ以外はリポジトリのURLからインストールします。ここでは、使い方を大きく変える拡張機能を紹介します。
- Vector Storage(記憶の要約)
- 履歴をベクトル化し、古いメッセージから関連する箇所を再び取り込むことで、コンテキストウィンドウを超えて記憶を保持します。非常に長いセッションに役立ちます。
- Summarize
- 会話の要約を生成して随時更新し、その要約をプロンプトに再投入します。キャラクターは、数百件のメッセージを交わした後も主な出来事を覚えています。
- Text-to-Speech
- ローカルの TTS エンジンでキャラクターに声を与えます。声でやり取りしながら遊ぶ人にとって、没入感が高まります。
- 画像生成
- ローカルの画像バックエンド(例:Stable Diffusion)に接続し、チャット中にシーンやキャラクターを即座に画像化します。
- 表情
- キャラクターのスプライトセットを使い、メッセージのトーンに合った感情を表すアバターを表示します。
#役を演じるのが得意なローカルモデルは?
ロールプレイにおける性能は、どの LLM も同じというわけではありません。アシスタントとしての利用に向けてアライメントされた「instruct」モデルは、役柄を外れたり、説教したり、フィクションのシナリオを拒否したりする傾向があります。コミュニティでは、用途に特化してファインチューニングされたモデルが好まれます。多くは性能のしっかりしたベースモデルを基に、物語の描写や役になりきった対話のために追加学習されています。
- 実用的なモデルサイズ
- 4B未満では、長く使い続けるとキャラクターの一貫性が損なわれます。2026年には、Qwen 3.5 9B(約6.6GB、コンテキスト256k)やGemma 4 12B(約7.6GB、Apache 2.0)のような新しいベースモデルが、ほとんどのミッドレンジのグラフィックカードでバランスのよい選択肢になります。一段上のMistral Small 24B(約14GB、フランス語が非常に得意)は16GBに収まり、物語の描写もより繊細になります。
- RP向けファインチューニングモデル
- ロールプレイやフィクション向けに明確に訓練されたモデルを探してください(Hugging Faceでは「RP」「storytelling」「uncensored」と表示されていることが多いです)。2026年の優れたファインチューニング済みモデルは、2023年の古いLlama 2やMistral 7Bではなく、これらの新しいベースモデル(Qwen 3.5、Mistral Small 24B、Gemma 4)を基にしており、カードの形式により忠実に従います。
- 長いコンテキスト
- 16k以上のトークンでも出力が崩れず、安定して動作するモデルを優先してください。長いセッションでは、それが必要です。モデルが公表しているネイティブのコンテキスト長を確認してください。
- GGUF形式
- KoboldCppでは、量子化済みのGGUFを使ってください。バランスのよい選択としてQ4_K_Mを推奨します。VRAMに余裕があり、より精細な出力を求めるなら、Q5_K_MまたはQ8_0に上げてください。
#よくある問題のトラブルシューティング
- SillyTavernが接続できない
- バックエンドが動作していることと、ポートが正しいこと(KoboldCppは5001、Ollamaは11434)を確認してください。ブラウザでAPIのURLにアクセスしてテストすれば、APIが応答することを確認できます。
- 回答にタグがそのまま表示される
- 原因は、ほぼ常に不適切な指示テンプレートです。Advanced Formattingで、形式(ChatML、Gemma、Mistralなど)をモデルの形式に合わせてください。
- キャラクターが設定された役柄から外れる
- 説明と会話例を充実させ、temperatureを少し下げて、システムプロンプトがキャラクターカードの内容と矛盾していないことを確認してください。
- 繰り返しとループ
- 繰り返しペナルティを少し上げ、Min-Pを追加してください。それでも問題が続く場合は、コンテキストが飽和している可能性があります。Summarizeを有効にするか、カードのサイズを小さくしてください。
- 切り詰められた応答
- Response lengthの値が低すぎるか、バックエンドがSillyTavernの要求より小さいコンテキストで起動されています。両者の値を一致させてください。
#さらに詳しく
SillyTavernはあくまで1つの層です。最終的な品質は主にバックエンドとモデルに左右されます。これらのガイドは、その土台を固めるのに役立ちます。
- KoboldCpp:インストールと基本的な使い方
- ローカルRPの定番バックエンド:GGUF、メモリ設定、SillyTavernが標準で対応するAPI。
- Ollama とは何か、どのように機能するか
- すべての用途をポート11434で動作する単一のデーモンにまとめたい場合の、汎用的な代替手段です。
- KVキャッシュを量子化する
- 同じグラフィックカードで、VRAM使用量を過度に増やさずに、より長いRPコンテキストを扱うため。
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。