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

追加された行はこの色です。
削除された行はこの色です。

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

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

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

[[SillyTavernのGitHub>>https://github.com/SillyTavern/SillyTavern]]
[[SillyTavern公式Wiki>>https://docs.sillytavern.app/]]
----
#contents

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

text-generation-webuiやkoboldcppはそれぞれ自前のフロントエンドを持っていますがSillyTavernはロールプレイ/チャット機能に特化しているのが特徴で、ユーザーと(二人以上の)AIエージェント(BOT)とのグループチャット機能なんかもあります。
//二人以上のキャラクター(BOT)とユーザーによるグループチャット機能なんかもあります。
//SillyTavernは複数のキャラクターとやり取りできるチャットルーム機能が搭載されており、ユーザーとAIエージェントとの会話や、他の参加者たちとのグループチャットなど、多彩なコミュニケーションシーンを提供できます。

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

*インストール
**Windowsへインストール
※Windowsが制御するフォルダー (''Program Files''、''System32''など) にはインストールしないでください。
※NODEJS 18.16 を実行できないため、Windows 7 へのインストールは不可能です。
※管理者権限で''START.BAT''を実行しないでください

-[[NodeJS(最新のLTS Ver)>>https://nodejs.org/en]]をインストールします。
-[[Windows用Git>>https://gitforwindows.org/]]をインストールします。
-Windowsエクスプローラー(Win+E)を開き、ランチャーをインストールするフォルダーを作成または選択します。
-上部の”アドレスバー”をクリックして"cmd"と入力してEnter キーを押し、そのフォルダー内でコマンド プロンプトを開きます。
-コマンドプロンプトに次のコマンドを入力してgitからcloneします。
git clone &#104ttps://github.com/SillyTavern/SillyTavern -b release~~
-cloneが完了したらコマンドプロンプトを閉じて、SillyTavernフォルダ内の''Start.bat''をダブルクリックして実行します。
インストールが完了したら自動的にデフォルトのブラウザでhttp://127.0.0.1:8000/が開きます。

***アップデート
SillyTavernフォルダ内の''UpdateAndStart.bat''をダブルクリックして実行します。
**LinuxへDockerを使ってインストール
GitHubからcloneしてDockerを立ち上げます。
事前に下記のソフトウェアがインストール済みである必要があります。
-docker
-docker compose
必要に応じてdocker-compose.ymlを編集してください(ポートの変更など)
git clone &#104ttps://github.com/SillyTavern/SillyTavern -b release~~
cd docker && docker-compose up -d~~

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

***アップデート
gitからcloneしたディレクトリに移動して
docker-compose pull

**LinuxへSillyTavern Launcherを使ってインストール
SillyTavern Launcherのダウンロード

git clone &#104ttps://github.com/SillyTavern/SillyTavern-Launcher && cd SillyTavern-Launcher~~

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

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

*簡単な使い方
[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/FqLzeL4ppI-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/FqLzeL4ppI.jpg]]
初回起動時に上の画面が出ててきます。
Enable simple UI mode (シンプルUIモードを有効にする)
最初はこのオプションを有効にした状態で慣れたほうが良いかもしれません。
今回はシンプルUIモードを有効にした状態で進めます。※後から無効にして詳細なオプションを表示させることもできます。

”Enable simple UI mode”にチェックを入れたら''Save''で設定を保存します。

**text-generation-webui(バックエンド)のAPIに接続する
oobabooga/text-generation-webuiのAPI機能を[[Text generation web UI>https://local-llm.memo.wiki/d/Text%20generation%20web%20UI]]のページを参考に有効化したものとして進めます。
※SillyTavern自体は言語モデルをロードする機能を持たないのでtext-generation-webuiなどの他のソフトウェアをバックエンドとしてセットアップする必要があります。

oobabooga/text-generation-webuiのAPI機能を有効化してtext-generation-webuiを起動したら言語モデルを[[ロード>https://local-llm.memo.wiki/d/Text%20generation%20web%20UI#content_3_4]]します。
//今回は例として[[TFMC/Japanese-Starling-ChatV-7B-GGUF>>https://huggingface.co/TFMC/Japanese-Starling-ChatV-7B-GGUF]]をロードしました。
//
今回は例として[[TheBloke/Swallow-13B-Instruct-AWQ>>https://huggingface.co/TheBloke/Swallow-13B-Instruct-AWQ]]をロードしました。
言語モデルのダウンロード、ロード方法については[[こちら>https://local-llm.memo.wiki/d/Text%20generation%20web%20UI#content_3]]のページをご覧下さい。

http://<text-generation-webuiを実行しているPCのアドレス>:5000/docs
にブラウザでアクセスしてoobabooga/text-generation-webuiのAPI機能が有効なのを確認します。

[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/S2a__TuaRS-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/S2a__TuaRS.jpg]]
SillyTavernページ上部のコンセントアイコンをクリックしてAPI設定を開きます。
''API''を''Text Completion''に、''APIタイプ''を''デフォルト (Oobabooga)''に変更します。
''サーバーURL''に''http://<text-generation-webuiを実行しているPCのアドレス>:5000'' (同一PCで実行しているなら、http://127.0.0.1:5000など...)を入力します。
あとは''接続''をクリックすれば接続されます。
ついでに''前回のサーバーに自動接続''オプションも有効にしておくと良いかもしれません。

**ユーザーの設定
[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/LF8c82Xs0D-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/LF8c82Xs0D.jpg]]
チャットする際のユーザー側の設定(名前やキャラクター設定など)を変更します。
ページ上部の顔のアイコンをクリックします。
ここでは名前を"ご主人"として、名前の入力欄右のチャックボタンをクリックして名前を変更します。

**BOTの作成
[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/XFFmCw1J2f-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/XFFmCw1J2f.jpg]][[&ref(https://image01.seesaawiki.jp/l/o/local-llm-memo/zhcCAvmQuC-s.jpg)>https://image01.seesaawiki.jp/l/o/local-llm-memo/zhcCAvmQuC.jpg]]
BOTの作成を行います。
ページ上部の一番右の''キャラクター管理''をクリックします。
''新しいキャラクターを作成''からキャラクター名、キャラクターの説明、最初のメッセージを入力して''キャラクターを作成''をクリックします。

[+]例として下記のように入力しました。
キャラクター名:~~
ニャンコ

キャラクターの説明:~~
<{{char}}について>あなたは人間の言葉を理解し、話す猫で、{{user}}の飼い猫(ペット)です。</{{char}}について>~~
~~
<好き={{user}},チュール,ご飯,イタズラ>~~
<嫌い=濡れること,お風呂>~~
~~
<会話について>~~
** 内に発言内容以外の{{char}}の行動や仕草、表情や感情などを具体的に表現してください。また、語尾に「~にゃ」をつけてください。~~
例として下記のように会話します。~~
<例>~~
{{user}}: おはよう~~
{{char}}: *あくびをしながら眠そうな顔で* おはようにゃ~~
~~
{{user}}: なんだか眠いよ....~~
{{char}}: *心配そうに{{user}}の顔を覗きながら* 昨日はちゃんと寝たかにゃ?~~
~~
{{user}}: ご褒美のチュールをあげるね~~
{{char}}: *嬉しそうに体を{{user}}へ擦りながら笑顔で* チュールにゃ!嬉しいにゃ!~~
</例>~~
~~
</会話について>~~

最初のメッセージ~~
*喉を鳴らしながら嬉しそうに* ご主人! どうしたにゃ?

[END]

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

**チャットする
[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/LYAtWUJQde-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/LYAtWUJQde.jpg]]
”''Type a message, or/? for help''”欄にメッセージを入力して右隣のメッセージを送信ボタンをクリックするか[Enter]キーを押して送信します。
※ちなみに[Shift]+[Enter]でメッセージ欄内で改行できます。

*詳細など
[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/qTCIq0y7EK-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/qTCIq0y7EK.jpg]]
UI上部左から解説していきます。
ユーザー設定からUIのモードを''シンプル''から''高度''に変更しないと一部の設定項目が表示されません。ご注意ください。
*Common Settings(AI応答の共通設定)
[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/UtZT9P0jPl-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/UtZT9P0jPl.jpg]]
言語モデルを使用してテキストを生成するときのサンプリングプロセスを制御します。
これらの設定は、サポートされているすべてのバックエンドに共通です。
※Text generation web UIのParameters → [[Generation>https://local-llm.memo.wiki/d/Text%20generation%20web%20UI#content_4_10_10]]のように言語モデルのパラメーターの(プリセットへ)設定、変更などが行えます。

**コンテキスト設定
***応答の長さ(トークン数)
APIが応答(レスポンス)するために生成するトークンの最大数

-応答(レスポンス)の長さが長いほど、応答の生成にかかる時間が長くなります。
-APIでサポートされている場合は、”ストリーミング”オプションを有効化することで生成中の応答を少しずつ表示することができます。オフの場合、応答が完了した時点で一括表示されます。

***コンテキストのサイズ(トークン数)
SillyTavernがプロンプトとしてAPIに送信するトークンの最大数から応答の長さを引いたもの

-コンテキストは文字情報、システム プロンプト、チャット履歴などで構成されます。
-メッセージ間の点線は、チャットのコンテキスト範囲を示します。その線を超えるメッセージはAIに送信されません。

-''ロックを解除''
モデルが4096トークンを超えるコンテキストをサポートしている場合にのみ有効化します。

**サンプラーパラメータ
※一部重複している設定は省略しています。省略された設定項目のもう少し詳しい解説は[[Text generation web UI]]ページの[[Generation>https://local-llm.memo.wiki/d/Text%20generation%20web%20UI#content_4_10_10]]をご覧下さい。

***温度(temperature)
生成されるテキストのランダム性を制御します。
値が大きいほどランダム性が高くなります。
※値を上げると創造的になり、小説の執筆などに向く。逆に下げるとQ&Aなどの回答の質が上がる?

***繰り返しペナルティ(反復ペナルティ)
コンテキスト内でのトークンの出現頻度に基づいてトークンにペナルティを課すことで、繰り返しを抑制しようとします。
-場合によっては、キャラクターが何かに固執している場合、または同じフレーズを繰り返す場合、このパラメータを増やすと役立つことがあります。
※無効にするには、値を %%%1%%% に設定します。

***繰り返しペナルティの範囲(反復ペナルティ範囲)
最後に生成されたトークンからのトークンの数が反復ペナルティの対象となります。 「the、a、and」などの一般的な単語が最もペナルティを受けるため、設定が高すぎると応答が中断される可能性があります。
※無効にするには、値を %%%0%%% に設定します。

***動的温度(Dynamic Temperature)
最上位トークンの可能性に基づいて温度(temperature)を動的に調整します。一貫性を犠牲にすることなく、より創造的な出力を生み出すことを目指しています。
最低temperatureから最高temperatureまでのtemperature範囲を受け入れます。

*API接続
[[&ref(https://image01.seesaawiki.jp/l/o/local-llm-memo/awibgTo118-s.jpg)>https://image01.seesaawiki.jp/l/o/local-llm-memo/awibgTo118.jpg]]
バックエンドへのAPI接続設定です。

**APIタイプ
バックエンドとするソフトウェアを選択します。

**APIキー(オプション)
クラウドLLMサービスへのAPI接続に必要となります。

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

**その他
-''接続'' サーバーへ接続します。
-''前回のサーバーに自動接続'' 前回接続したサーバーに自動接続します。

*高度なフォーマット
[[&ref(https://image02.seesaawiki.jp/l/o/local-llm-memo/8tUvbWkiyp-s.jpg)>https://image02.seesaawiki.jp/l/o/local-llm-memo/8tUvbWkiyp.jpg]]


**コンテキストテンプレート
通常、AIモデルでは、何らかの特定の方法でキャラクターデータをAIモデルに提供する必要があります。 SillyTavernには、さまざまなモデル用の事前に作成された変換ルールのリストが含まれていますが、それらを自由にカスタマイズできます。

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

次のパラメータを Handlebars エバリュエーターに提供します (二重中括弧{{}}で囲みます)。
-''description'' キャラクターの説明
-''scenario'' キャラクターのシナリオ
-''personality'' キャラクターの性格
-''system'' [命令モード] システムプロンプトまたはキャラクターのメイン プロンプト オーバーライド(存在し、ユーザー設定で「文字プロンプトを優先」が有効になっている場合)
-''persona'' 選択したペルソナの説明
-''char'' キャラクターの名前
-''user'' 選択したペルソナ名

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