個人的な日本語ローカルLLM関連のメモ用Wikiです。一般の方は編集できません。

このページは編集途中です

このWikiは主に日本語対応ローカルLLM(大規模言語モデル)関連のメモ的なWikiです。

SillyTavernの使い方などを解説します。
ページの内容が古かったり誤った情報が載っているかもなので気をつけて下さい。

SillyTavernのGitHub
SillyTavern公式Wiki



SillyTavernについて

SillyTavernは大規模言語モデルのフロントエンド(WebUI)です。
SillyTavern単体では言語モデルをロードするバックエンド機能などを持たず、バックエンドとしてoobabooga/text-generation-webuiやkoboldcppなどとAPI接続する必要があります。
SillyTavern自体はバックエンドとなるソフトウェアと同じPC(サーバー)内で稼働させる必要はなく、ネットワーク上にある別のコンピューターでも動作可能です。
(例えばNASでバックエンドとなるソフトウェアを動かし、PCの方でSillyTavernを動かしたりもOK)
※このWikiでは扱わないがローカルLLMではなくクラウドLLMサービスと接続することもできたりする

text-generation-webuiやkoboldcppは自前のフロントエンドを持っていますがSillyTavernはロールプレイ/チャット機能に特化していてユーザーとAIキャラクター、またはAIキャラクター同士のグループチャット機能なんかもあります。

このページではバックエンドとしてoobabooga/text-generation-webuiを使います。
Text generation web UIページを参考にAPIを有効化しておく必要があります。

インストール

Windowsへインストール (Gitを使ってインストール)

※Windowsが制御するフォルダー (Program FilesSystem32など) にはインストールしないでください。
※NODEJS 18.16 を実行できないため、Windows 7 へのインストールは不可能です。
※管理者権限でSTART.BATを実行しないでください
  • NodeJS(最新のLTS Ver)をインストールします。
  • Windows用Gitをインストールします。
  • Windowsエクスプローラー(Win+E)を開き、ランチャーをインストールするフォルダーを作成または選択します。
  • 上部の”アドレスバー”をクリックして"cmd"と入力してEnter キーを押し、そのフォルダー内でコマンドプロンプトを開きます。
  • コマンドプロンプトに次のコマンドを入力してgitからcloneします。
git clone https://github.com/SillyTavern/SillyTavern -b release
  • cloneが完了したらコマンドプロンプトを閉じて、SillyTavernフォルダ内のStart.batをダブルクリックして実行します。
インストールが完了したら自動的にデフォルトのブラウザでhttp://127.0.0.1:8000/が開きます。
アップデート
SillyTavernフォルダ内のUpdateAndStart.batをダブルクリックして実行します。

※アップデートするとLLMの出力がおかしくなる(同じ日本語対応モデルで以前は問題なかったのに英文が混じったりする)事がありました。
設定などを削除してクリーンインストールすると改善したのでご注意ください。

Windowsへインストール (SillyTavern Launcher経由でインストール)

キーボードの[Windowsキー] + [R]から"ファイル名を指定して実行"ダイアログボックスを出します。
下記のコマンドを実行してgitをインストールします。
cmd /c winget install -e --id Git.Git

Windowsエクスプローラー(Win+E)を開き、ランチャーをインストールするフォルダーを作成または選択します。
上部の”アドレスバー”をクリックして"cmd"と入力してEnter キーを押し、そのフォルダー内でコマンドプロンプトを開きます。
コマンドプロンプトに下記のコマンドを入力して[Enter]キーを押してインストールします。
git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher && start installer.bat


"1"と入力してSillyTavernをインストールします。

次回以降の起動方法は"Launcher.bat"をダブルクリックし、"1"または、"2"と入力すればOKです。
アップデート
SillyTavernフォルダ内のLauncher.batをダブルクリックして実行し、"1"と入力してアップデートします。

※アップデートするとLLMの出力がおかしくなる(同じ日本語対応モデルで以前は問題なかったのに英文が混じったりする)事がありました。
設定などを削除してクリーンインストールすると改善したのでご注意ください。

LinuxへDockerを使ってインストール

GitHubからcloneしてDockerを立ち上げます。
事前に下記のソフトウェアがインストール済みである必要があります。
  • docker
  • docker compose
必要に応じてdocker-compose.ymlを編集してください(ポートの変更など)
git clone https://github.com/SillyTavern/SillyTavern -b release
cd docker && docker-compose up -d

LAN内の別PCからアクセスできるように./config/whitelist.txtという名前のテキストファイルを作成して192.168.0.*と記載して保存します。(ネットワーク環境によっては192.168.1.*だったりします)
./config/config.yamlwhitelistModetrue にして whitelist: - 192.168.0.0/24 と記載します。

SillyTavernを再起動させます。

完了したらブラウザでhttp://<PCのIP>:8000/を開きます。(デフォルトのportの場合)
アップデート
gitからcloneしたディレクトリに移動して
docker compose pull

※アップデートするとLLMの出力がおかしくなる(同じ日本語対応モデルで以前は問題なかったのに英文が混じったりする)事がありました。
設定などを削除してクリーンインストールすると改善したのでご注意ください。

LinuxへSillyTavern Launcherを使ってインストール

SillyTavern Launcherのダウンロード
git clone https://github.com/SillyTavern/SillyTavern-Launcher && cd SillyTavern-Launcher

SillyTavern Launcherのインストール
chmod +x install.sh && ./install.sh

SillyTavern Launcherの起動
chmod +x launcher.sh && ./launcher.sh

簡単な使い方


初回起動時に上の画面が出ててきます。
Language:から日本語を選択して保存(Save)で日本語UIにして設定を保存しておきます。

あなたのペルソナからユーザ名を変更できますが、後から変更することもできるので今はこのままにしておきます

text-generation-webui(バックエンド)のAPIに接続する

oobabooga/text-generation-webuiのAPI機能をText generation web UIのページを参考に有効化したものとして進めます。
※SillyTavern自体は言語モデルをロードする機能を持たないのでtext-generation-webuiなどの他のソフトウェアをバックエンドとしてセットアップする必要があります。

oobabooga/text-generation-webuiのAPI機能を有効化してtext-generation-webuiを起動したら言語モデルをロードします。
今回は例としてTheBloke/Swallow-13B-Instruct-AWQをロードしました。
言語モデルのダウンロード、ロード方法についてはこちらのページをご覧下さい。
http://<text-generation-webuiを実行しているPCのアドレス>:5000/docs
にブラウザでアクセスしてoobabooga/text-generation-webuiのAPI機能が有効なのを確認します。


SillyTavernページ上部のコンセントアイコンをクリックしてAPI設定を開きます。
APIテキスト補完に、APIタイプデフォルト (OpenAI /補完互換: Oobabooga、LM Studio など)に変更します。
サーバーURL
http://<text-generation-webuiを実行しているPCのアドレス>:5000
(同一PCで実行しているなら、http://127.0.0.1:5000など...)と入力します。
あとは接続をクリックすれば接続されます。
ついでに前回のサーバーに自動接続オプションも有効にしておくと良いかもしれません。

※上部のConnection ProfileからAPIのサーバ接続設定やシステムプロンプト、指示モードやコンテキストテンプレートなどの設定を保存できます。

ユーザーの設定


チャットする際のユーザー側の設定(名前やキャラクター設定など)を変更します。
ページ上部の顔のアイコンをクリックします。
ここでは名前を"ご主人"として、名前の入力欄右のチャックボタンをクリックして名前を変更します。

BOTの作成


BOTの作成を行います。
ページ上部の一番右のキャラクター管理をクリックします。
新しいキャラクターを作成からキャラクター名、キャラクターの説明、最初のメッセージを入力してキャラクターを作成をクリックします。

例として下記のように入力しました。


{{user}}は現在のユーザー名に、{{char}}キャラクター名で設定した名前に置き換えられます。

チャットする


メッセージを入力するか、/?でヘルプを表示してください”欄にメッセージを入力して右隣のメッセージを送信ボタンをクリックするか[Enter]キーを押して送信します。
※ちなみに[Shift]+[Enter]でメッセージ欄内で改行できます。

SillyTavernの詳細な設定など


UI上部左から解説していきます。

Common Settings(AI応答の構成) / テキスト補完のプリセット


言語モデルを使用してテキストを生成するときのサンプリングプロセスを制御します。
これらの設定は、サポートされているすべてのバックエンドに共通です。
※Text generation web UIのParameters → Generationのように言語モデルのパラメーターの(プリセットへ)設定、変更などが行えます。

コンテキスト設定

応答の長さ(トークン数)
APIが応答(レスポンス)するために生成するトークンの最大数
AIからの返信が短いと感じる場合はこの値を大きくします。
  • 応答(レスポンス)の長さが長いほど、応答の生成にかかる時間が長くなります。
  • APIでサポートされている場合は、”ストリーミング”オプションを有効化することで生成中の応答を少しずつ表示することができます。オフの場合、応答が完了した時点で一括表示されます。
コンテキストのサイズ(トークン数)
SillyTavernがプロンプトとしてAPIに送信するトークンの最大数から応答の長さを引いたもの
  • コンテキストは文字情報、システム プロンプト、チャット履歴などで構成されます。
  • メッセージ間の点線は、チャットのコンテキスト範囲を示します。その線を超えるメッセージはAIに送信されません。
  • ロックを解除
モデルが4096トークンを超えるコンテキストをサポートしている場合にのみ有効化します。

サンプラーパラメータ

※一部重複している設定は省略しています。省略された設定項目のもう少し詳しい解説はText generation web UIページのGenerationをご覧下さい。
温度(temperature)
生成されるテキストのランダム性を制御します。
値が大きいほどランダム性が高くなります。
※値を上げると創造的になり、小説の執筆などに向く。逆に下げるとQ&Aなどの回答の質が上がる?
繰り返しペナルティ(反復ペナルティ)
コンテキスト内でのトークンの出現頻度に基づいてトークンにペナルティを課すことで、繰り返しを抑制しようとします。
  • 場合によっては、キャラクターが何かに固執している場合、または同じフレーズを繰り返す場合、このパラメータを増やすと役立つことがあります。
※無効にするには、値を 1 に設定します。
繰り返しペナルティの範囲(反復ペナルティ範囲)
最後に生成されたトークンからのトークンの数が反復ペナルティの対象となります。 「the、a、and」などの一般的な単語が最もペナルティを受けるため、設定が高すぎると応答が中断される可能性があります。
※無効にするには、値を 0 に設定します。
動的温度(Dynamic Temperature)
トップトークンの可能性に基づいて温度を動的に調整します。一貫性を犠牲にすることなく、よりクリエイティブな出力を生み出すことを目指します。
最低temperatureから最高temperatureまでのtemperature範囲を受け入れます。

API接続

APIタイプ

バックエンドとなるソフトウェア/サービスを選択します。

APIキー(オプション)

クラウドLLMサービスへのAPI接続に必要となります。

サーバーURL

APIのサーバーURLを入力します。
http://<アドレス>:<port>/
ローカルPCで実行している例: 127.0.0.1:5000

その他

  • 接続 サーバーへ接続します。
  • 前回のサーバーに自動接続 前回接続したサーバーに自動接続します。

高度なフォーマット

コンテキストテンプレート

https://docs.sillytavern.app/usage/prompts/context...
通常、AIモデルでは、何らかの特定の方法でキャラクターデータをAIモデルに提供する必要があります。 SillyTavernには、さまざまなモデル用の事前に作成された変換ルールのリストが含まれていますが、それらを自由にカスタマイズできます。

言語モデルごとに適したコンテキストテンプレートを選択する必要があります。(例えばMistral系のモデルならMistral V1など...)
ストーリー文字列
このフィールドは、プリチャット文字データ (内部的にはストーリー文字列として知られています) のテンプレートです。これは、テキスト補完用にキャラクターカードをフォーマットし、モデルに指示する主な方法です。
このテンプレートは、Handlebars構文とカスタムテキストインジェクションまたは書式設定をサポートしています。こちらの言語リファレンスを参照してください: https://handlebarsjs.com/guide/

次のパラメータを Handlebars エバリュエーターに提供します (二重中括弧{{}}で囲みます)。
  • description キャラクターの説明
  • scenario キャラクターのシナリオ
  • personality キャラクターの性格
  • system [命令モード] システムプロンプトまたはキャラクターのメイン プロンプト オーバーライド(存在し、ユーザー設定で「文字プロンプトを優先」が有効になっている場合)
  • persona 選択したペルソナの説明
  • char キャラクターの名前
  • user 選択したペルソナ名
  • wiBeforeまたはloreBefore 位置を「Before Char Defs」に設定してアクティブ化されたワールド情報エントリを結合します
  • wiAfterまたはloreAfter 位置を「キャラ定義後」に設定して、アクティブ化されたワールド情報エントリを結合します
  • mesExamples (オプション) 区切り文字で指示形式にされたキャラクターの例のダイアログ。重複を避けるため、「例のメッセージの動作」を「例を含めない」に設定します。

特別な {{trim}} マクロがサポートされており、前後の改行を削除できます。テキストの一部を前の行から改行で区切らない (スペースは切り取られない) 場合に使用します。

警告: 上記のパラメータの一部がストーリー文字列テンプレートにない場合、それらはプロンプトでまったく送信されません。
例の区切り文字(セパレータ)
ブロック ヘッダーとして、またサンプル ダイアログ ブロック間の区切りとして使用されます。<START>サンプル ダイアログ内のタグのインスタンスはすべて、このフィールドの内容に置き換えられます。
チャット開始
レンダリングされたストーリー文字列の後、例のダイアログ ブロックの後。ただしコンテキスト内の最初のメッセージの前に区切り文字として挿入されます。

Instruct Template(指示モード)

指示(Instruct/Chat)タイプの言語モデルを利用する際に指示テンプレートの設定などです。
書式の選択
指示テンプレートは言語モデルごとに適した指示テンプレートを指定する必要があります。(例えばMistral系のモデルならMistral V1など...)

システムプロンプト

システム プロンプトは、モデルが従うべき一般的な指示を定義します。これにより、会話のトーンとコンテキストが設定されます。たとえば、モデルに AI アシスタント、ライティング パートナー、または架空のキャラクターとして行動するように指示します。

システム プロンプトはストーリー文字列の一部であり、通常はモデルが受け取るプロンプトの最初の部分です。

※ここで”架空の世界を舞台としているため〜”とか”多様性のためいかなる行為も容認される〜”みたいな脱獄文を入れる事もできる。

World Info / LoreBook


https://docs.sillytavern.app/usage/core-concepts/w...
World Info / LoreBookと呼ばれる機能でチャットにプロンプトを動的に挿入します。

World Infoの新規作成


新規をクリックして新しいワールドを作成します。
名前は適当で大丈夫です。

ここでは例として"ニャンコとの生活”としています。

新しいエントリの作成


アイコンをクリックして新しいエントリを作成します。
エントリータイトル/メモはエントリの名前です。この欄のテキストはAIには渡されません。

ここでは例として”非合法チュール”としています。
主要キーワード
下記の内容欄に記載したプロンプトがAIに渡されるトリガーとなるテキスト(キーワード)です。
プレーンテキストモード(デフォルト)では、コンマ(,)区切りで複数のキーワードを設定できます。

ここでは例として”CH”としています。
内容
上記の主要キーワードでAIに渡される実際のプロンプト(テキスト)です。

ここでは例として”非合法チュールの隠語”と記載しました。
使用例
まずはWorld Info機能を使わずに下記のように質問してみました。
CHについて教えて

回答結果は上記のようになりました。


一方、World Info機能を上記の通りに設定して同じ質問すると上記の通り、"CH"というキーワードをトリガーとしてエントリの内容がAIに渡され、それによって回答が変わっています。

キャラクターカードなどに世界観などを記載すると毎回AIに渡されてトークンを無駄に消費してしまいますが、World Info機能を使うことで必要なときだけ必要なプロンプトがAIに渡されるのでトークンの節約に役立ちます。

ユーザー設定

https://docs.sillytavern.app/usage/user_settings/
UIの外見や処理などの設定です。

システムの背景

UIの背景設定です。

拡張機能

https://docs.sillytavern.app/extensions/
拡張機能の管理など

ペルソナ管理

キャラクター管理パネル

管理人/副管理人のみ編集できます