セットアップ: ローカルLLM
TomoriBotは、テキスト生成や埋め込みに任意のOpenAI互換ローカルLLMサーバーを使用できます。 このガイドでは、最も簡単に始められるOllamaを例としてプロセスを説明します。
慣れてきたら、KoboldCPPのようなより柔軟なサーバーを検討し、Hugging Faceから直接オープンソースモデルを使用してみてください。コミュニティで作成されたさまざまなモデルを選んで試すことは、自分自身のAIを実行する楽しみの半分を占めています。
1. モデルサーバーを実行する
Section titled “1. モデルサーバーを実行する”Ollamaをインストールします。以下の例ではGoogleのGemma 4を使用していますが、Ollamaのライブラリにあるものであれば何でも機能します。
どのサイズをプルすべきか?
Section titled “どのサイズをプルすべきか?”ローカルモデルは、GPUのVRAM(システムRAMとは別の、グラフィックカードに組み込まれたメモリ)で実行されます。経験則として、モデルは少なくともダウンロードサイズ分の空きVRAMと、会話コンテキスト用に約1〜2 GBのヘッドルームを必要とします。カードに収まる最大のGemma 4を選択してください。
| あなたのGPU VRAM | 最適なサイズ | ダウンロード (約) |
|---|---|---|
| 約 8 GB | gemma4:e2b |
7.2 GB |
| 約 12 GB | gemma4:12b |
7.6 GB |
| 約 16 GB | gemma4:12b (完全に収まる)、または gemma4:26b |
7.6 / 18 GB |
| 24 GB 以上 | gemma4:26b または gemma4:31b |
18 / 20 GB |
ダウンロードサイズはOllamaのデフォルトの量子化サイズです。正確な数値についてはモデルページを参照してください。VRAMがどれくらいあるかわからない場合は、Windowsの場合:タスクマネージャー → パフォーマンス → GPUで「専用GPUメモリ」を確認してください。
選択したサイズをプルし、サーバーを起動します。
ollama pull gemma4:12b # swap for the tag that fits your VRAMollama serve # listens on http://127.0.0.1:11434TomoriBotが実行されているマシンから到達可能であることを確認してください。
curl http://127.0.0.1:11434/v1/models登録するModel Nameとなるため、インストールされている正確なタグをメモしておきます。
ollama list# NAME ID SIZE# gemma4:12b a1b2c3d4... 7.6 GB2. Discordに登録する
Section titled “2. Discordに登録する”/provider custom-endpoint add(サーバー全体)または**/personal custom-endpoint add**(自分のみ)を以下のように実行します。
| フィールド | Ollama用の値 |
|---|---|
endpoint_label |
選択した名前(例: home-ollama) |
capability |
text |
api_style |
OpenAI-Compatible(推奨)または Ollama Native |
endpoint_url |
OpenAI-Compatibleの場合は http://127.0.0.1:11434/v1 · Ollama Nativeの場合は http://127.0.0.1:11434 |
auth_token |
(空白のままにします) |
送信するとモーダルが開きます。以下を入力します。
- Model Name (exact API ID):
gemma4:12b、ollama listで確認した正確なタグ。 - Display Name: オプション。空白にするとモデル名が再利用されます。
- Context Window Override: オプション、Ollama / KoboldCPPのみ。これ(例:
8192、16384)を設定してOllamaのデフォルトのnum_ctxを上げます。設定しないと、TomoriBotの長いコンテキストが切り捨てられるほど小さくなります。サーバーのデフォルトを使用する場合は空白のままにします。 - Toggles: モデルが関数呼び出しをサポートしている場合はToolsを有効にします。ビジョンモデルの場合のみImage Understandingを有効にし、モデルがJSONスキーマを適切に処理する場合はStructured Outputを有効にします。この例のGemma 4はこれらすべてをサポートしているため、すべてにチェックを入れます。
TomoriBotは送信時に接続を検証します。エンドポイントに到達できないと報告された場合、通常の原因はlocalhost/Dockerの不一致、または欠落/余分な/v1です(注意事項と落とし穴を参照)。
登録すると自動的にアクティブなtextモデルになります。チャットを始めて試してみてください。何らかの理由でアクティブにならない場合は、/model textを実行し、新しく登録したモデルを選択します。
3. (オプション) RAG用のローカル埋め込み
Section titled “3. (オプション) RAG用のローカル埋め込み”capability: embeddingと埋め込みモデル(例: ollama pull nomic-embed-text、Model Name nomic-embed-text:latest)を使用してステップ2を繰り返します。RAG機能にはPostgresにpgvectorがインストールされている必要もあります。ここで手動セットアップガイドを確認できます。
その他のサーバー
Section titled “その他のサーバー”これらはすべて同じフローを使用し、URLといくつかの注意事項のみが異なります。
KoboldCPP
Section titled “KoboldCPP”- OpenAI互換を有効にして(組み込み)起動します。デフォルト:
http://127.0.0.1:5001/v1。 api_style:OpenAI-Compatible。endpoint_url:http://127.0.0.1:5001/v1。- OllamaのようにContext Window Overrideを尊重します。
- GGUFモデルを読み込みます。Model Nameは、読み込まれたモデルが報告するもの(多くの場合ファイル名)です。KoboldCPPの
/v1/modelsレスポンスを確認してください。
llama.cpp (llama-server)
Section titled “llama.cpp (llama-server)”- llama.cppをビルドまたはインストールし、バンドルされているOpenAI互換サーバーでGGUFを提供します。
Terminal window llama-server -m model.gguf -c 16384 --host 0.0.0.0 --port 8080 api_style:OpenAI-Compatible。endpoint_url:http://127.0.0.1:8080/v1。-cを使用して起動時にコンテキストウィンドウを設定します。モーダルのContext Window OverrideはOllama/KoboldCPP専用であり、ここでは効果がありません。- Model Nameは
/v1/modelsが報告するものです。--alias my-modelできれいな名前を付けてください。 --api-keyで起動した場合は、そのキーをauth_tokenに入力します。
LM Studio
Section titled “LM Studio”- LM Studioで、Local Server(Developerタブ)を起動します。デフォルト:
http://127.0.0.1:1234/v1。 api_style:OpenAI-Compatible。endpoint_url:http://127.0.0.1:1234/v1。- Model Nameは、読み込まれたモデルに対してLM Studioが表示する識別子です。
- OpenAI互換サーバーで提供します:
vllm serve <model>→http://127.0.0.1:8000/v1。 api_style:OpenAI-Compatible。endpoint_url:http://127.0.0.1:8000/v1。--api-keyでvLLMを起動した場合は、そのキーをauth_tokenに入力します。- Model Nameは、提供されるモデルのパス/名前です(
/v1/modelsと一致します)。
LiteLLM (複数のバックエンドに対するプロキシ)
Section titled “LiteLLM (複数のバックエンドに対するプロキシ)”- LiteLLMプロキシを実行します。デフォルト:
http://127.0.0.1:4000/v1。 api_style:OpenAI-Compatible。endpoint_url:http://127.0.0.1:4000/v1。- Model Nameは、LiteLLMの設定で定義したモデルエイリアスです。
- プロキシがマスターキーを強制する場合は、それを
auth_tokenに設定します。
ChatMock (ChatGPTアカウント / Codex CLI)
Section titled “ChatMock (ChatGPTアカウント / Codex CLI)”システムプロンプトの回避策があるため、独自の専用ガイドがあります: セットアップ: ChatMock。
Hugging Faceからのモデルの選択
Section titled “Hugging Faceからのモデルの選択”Ollamaの厳選されたライブラリに加えて、Hugging Faceは数千のコミュニティモデルをホストしています。KoboldCPP、llama.cpp、LM StudioはすべてGGUFフォーマットを読み込むことができます。これは、ダウンロードしてサーバーに向ける単一ファイルのパッケージです。
- GGUFを見つける。 Hugging Faceで目的のモデルと「GGUF」を検索します。bartowskiのようなコミュニティクオンタイザーは、リリース後すぐに最も人気のあるモデルのGGUFビルドを公開します。instruct/chatバリアント(
-Instructまたは-Chatで終わる名前)を優先してください。ベースモデルでは会話が成り立ちません。 - VRAMに収まる量子化を選択する。 リポジトリには同じモデルの多くの量子化レベルがリストされており、ファイルサイズ ≈ 必要なVRAM(プラス、コンテキスト用の約1〜2 GB。上記のサイズ表のルールと同じ)です。選択した単一の
.ggufをダウンロードします。 - 読み込む。 そのファイルでKoboldCPPまたは
llama-serverを起動し(その他のサーバーを参照)、通常通りDiscordでエンドポイントを登録します。
注意事項と落とし穴
Section titled “注意事項と落とし穴”- ラベルごとに1つの接続。 1つのサーバーを共有する複数のモデルを登録するには、同じ
endpoint_label+capabilityを再利用します。URLとAPIスタイルは継承され、新しいModel Nameを設定するだけです。真に異なるサーバーには異なるラベルを使用してください。 - Display NameとModel Name。 Display Nameは装飾的なものです(
/modelで表示されるもの)。Model Nameはサーバーに送信される正確な文字列です。Model Nameを間違えることは、「接続できたがレスポンスに失敗する」最も一般的な原因です。 - TomoriBotをDockerで実行している場合: コンテナ内の
localhostはホストではありません。http://host.docker.internal:<port>(Windows/macOS)またはホストのLAN IPを使用し、モデルサーバーを0.0.0.0にバインドしてください。