手元の PC で動作するAIアシスタント — Ollama・Super Agent Party によるマルチモーダル/RAG/AI エージェント環境の構築(CPU/GPU 対応・Windows)
Ollama と Super Agent Party で、データを外部送信しないローカル LLM 環境を Windows 上に構築できる。軽量モデルで動作確認した後、gemma4 系モデルで画像入力に対応する。Super Agent Party を使い、音声対話・ロールプレイ・物語生成・Discord ボット・RAG をローカル実行で試すことができる。
【サイト内の関連ページ】
目次
- 第1章 はじめに
- 第2章 前提知識(用語の整理)
- 第3章 使用するモデル
- 第4章 埋め込みモデル
- 第5章 Python 3.12 のインストール
- 第6章 Build Tools・CUDA Toolkit・PyTorch のインストール
- 第7章 Ollama・モデル・Open WebUI のインストール
- 第8章 演習 1.基本動作確認(CUI)
- 第9章 Super Agent Party(SAP)の前準備と用途例
- 第10章 演習 2.VRM 学習コンパニオン(2D/3D デスクトップキャラクター)
- 第11章 演習 3.ロールプレイ型対話学習(複数キャラクターによる同時対話)
- 第12章 演習 4.AI 物語生成アシスタント(インタラクティブストーリー)
- 第13章 演習 5.研究室・サークル用 Discord ボット
- 第14章 演習 6.個人用学習秘書(PDF ナレッジベース付き)
第1章 はじめに
本手順は、Windows 上でローカル LLM 環境を構築し、図(画像)や音声を理解させるマルチモーダル利用も行う。推論エンジンは Ollama、フロントエンド(操作・表示を担うソフトウェア)は Super Agent Party(以下 SAP)である。
Ollama には、コンテキスト長 262144 トークンおよび KV キャッシュ q8_0 を設定する。これらの設定は最初のインストール時に一度だけ行う。
本手順では、動作確認用の軽量テキストモデル LFM2.5-1.2B-Instruct、画像入力に対応する gemma4:e2b-it-qat および gemma4:12b-it-qat の 3 種類の LLM を使用する。このうち LFM2.5-1.2B-Instruct と gemma4:e2b-it-qat は、CPU のみの PC や少 VRAM の GPU でも動作する。gemma4:12b-it-qat は、より高いメモリ要件を必要とする(詳細は「使用するモデル」の章を参照)。
なお、画像入力(マルチモーダル)機能の動作確認は演習 1 の最後の手順で行う。
第2章 前提知識(用語の整理)
LLM(大規模言語モデル)とは
LLM(Large Language Model)は、大量のテキストを学習したニューラルネットワークであり、対話・要約・翻訳などを行う。入力テキストをトークン(語や記号の単位)に分割し、続く次のトークンを確率的に予測することで文章を生成する。モデルの規模はパラメータ数(例:1.2B=12 億)で表される。出力は確率に基づく予測であり、ハルシネーション(もっともらしいが事実でない出力)を含む可能性がある。
マルチモーダル(画像入力)とは
マルチモーダルとは、テキストだけでなく画像など複数種類の入力を扱える性質をいう。画像入力に対応したモデル(ビジョンモデル)は、図・グラフ・表の画像や、数式・化学式を撮影した画像を読み取り、その内容を説明したり質問に答えたりできる。本手順では gemma4 系モデルがこれに対応する。
量子化
量子化は、モデル内部の重みパラメータを低ビット精度(例:32 ビット浮動小数点を 4 ビット整数)に圧縮し、ファイルサイズと必要メモリを削減する技術である。精度はある程度低下するが、CPU や少 VRAM の GPU でも実行可能になる。Q4_K_M は 4 ビットを基本としつつ重要な層のみ精度を保つ方式で、サイズと精度のバランスが取れている。QAT(Quantization-Aware Training)は、学習の段階から量子化を織り込むことで、4 ビットへ量子化してもメモリ使用量を削減しつつ精度低下を抑える手法である。
GPU の利用(CUDA 等)について
推論エンジン Ollama は、GPU があれば自動的に検出して利用する(NVIDIA GPU では CUDA、AMD GPU では ROCm、対応 GPU がない場合は CPU で実行)。利用者が CUDA 等を明示的に設定する必要はない。
ローカル運用とは
ローカル運用とは、外部のサーバへデータを送信せず、手元のマシン内で推論を完結させる運用形態である。入力した文書やプロンプトが外部に送信されないため、機密文書を外部の生成 AI サービスに送れない場面でも安全に扱える。ただし、Discord などの外部プラットフォームを介して利用する場合は、メッセージ自体がそのプラットフォームの外部サーバを経由する点に注意が必要である(詳細は演習 5 を参照)。
本手順で用いる 2 つの基盤ソフトウェア
- Ollama:LLM の推論を実行するバックエンド(推論エンジン)である。モデルのダウンロード、メモリへのロード、推論の実行を担う。ローカル API サーバ機能を持ち、HTTP 経由でモデルに問い合わせる仕組みを提供し、既定でポート 11434 で待ち受ける。
- Super Agent Party(SAP):ユーザの操作を受け取り、結果を表示するフロントエンドである。HTTP 経由で Ollama に問い合わせる構造であり、フロントエンド(操作・表示側)とバックエンド(推論側)が分離されている。音声対話・ロールプレイ・メッセージングプラットフォーム連携・RAG などの機能を一つのアプリで扱える。
Ollama の推論エンジンについて
Ollama は、量子化された GGUF 形式(モデルの重みを圧縮して保存するファイル形式)のモデルを CPU・GPU の両方で実行できる推論エンジンを内蔵する。GPU の利用方法は前述の「GPU の利用(CUDA 等)について」のとおりであり、利用者が推論エンジンを直接操作する必要はない。
RAG とは
RAG(Retrieval-Augmented Generation、検索拡張生成)は、ユーザの質問に応じて、事前に登録した資料から関連箇所を検索し、その検索結果を文脈として LLM に渡したうえで応答を生成する仕組みである。LLM が学習していない固有情報や最新情報を要する質問への対応力が向上する。
コンテキスト長について
コンテキスト長とは、LLM が一度に処理できる入力+出力のトークン数の上限である。本手順では、gemma4:12b-it-qat のコンテキスト長上限である 262144 トークンを基準に Ollama を設定する。設定値がモデル側の上限を超える場合、多くの環境では Ollama がモデル側の上限に合わせて動作するため、上限が 131072 トークンの gemma4:e2b-it-qat でも、上限が 32768 トークンの LFM2.5-1.2B-Instruct でも、同じ設定のまま使い回せる。ただし、コンテキスト長を大きく設定するほど推論時のメモリ使用量は増え、またこの調整の挙動は Ollama のバージョンや実行環境によって異なるため、メモリに余裕のない PC では応答が遅くなる、または応答が返らなくなることがある。不調があれば、各モデルの実際の上限値(LFM2.5-1.2B-Instruct は 32768、gemma4:e2b-it-qat は 131072)まで num_ctx を下げて再試行する。現在の設定値は ollama show <モデル名> で確認できる。
KV キャッシュについて
KV キャッシュは、モデルが過去のトークンの中間表現を保持する領域である。q8_0 はこの領域を 8 ビット整数に量子化し、FP16(16 ビット浮動小数点)と比較してメモリ使用量を抑える設定である。
第3章 使用するモデル
LFM2.5-1.2B-Instruct(動作確認・テキスト専用)
Liquid AI 社の軽量モデルである。パラメータ数約 1.2B(正確には 1.17B)と軽量で動作が速く、英語・アラビア語・中国語・フランス語・ドイツ語・日本語・韓国語・スペイン語の 8 言語に対応する。コンテキスト長は 32768 トークン。VRAM 目安は Q4_K_M 量子化時で約 1〜2GB(モデルファイル約 731MB)であり、GPU 実行時はこの程度の VRAM、CPU のみで実行する場合は同程度のシステムメモリがあれば動作する。テキスト専用のため画像入力には対応しない。開発元は本モデルを RAG・データ抽出・エージェント用途に推奨しており、本手順では動作確認用として位置づける。公式情報:https://www.liquid.ai/blog/introducing-lfm2-5-the-next-generation-of-on-device-ai
gemma4:e2b-it-qat(画像入力対応・軽量)
Google DeepMind のオープンモデル Gemma 4 シリーズのエッジデバイス向け E2B モデル(E は実効(Effective)パラメータの意。Per-Layer Embeddings という技術により、保存上のパラメータ数より少ない実効パラメータ数で推論できる仕組みを指し、エッジ機器向けに設計されている)の QAT 版(QAT については前述の「量子化」を参照)である。ダウンロード容量約 4.3GB、コンテキスト長 128K(131072 トークン)。VRAM/メモリ目安は QAT 量子化時でモデル本体が 3〜4GB 程度とされるが、これに加えて、設定するコンテキスト長に応じた KV キャッシュ分も必要になる。正確な使用量は実行環境に依存するため、ollama show gemma4:e2b-it-qat 等で確認することを推奨する。テキストに加えて画像入力に対応する。思考モード(応答前に内部で推論過程を生成する機能)を備える。Gemma 4 の思考モードは、システムプロンプトの先頭に <|think|> トークンを含めることで有効化され、このトークンを外すことで無効化される(多くの実行環境ではチャットテンプレートが自動処理する)。応答に時間がかかる場合はこの方法で思考を無効化できるが、E2B はモデルや環境によって挙動が異なる。ライセンスは Apache 2.0。
gemma4:12b-it-qat(画像入力対応・上位)
同シリーズの 12B モデルの QAT 版である。ダウンロード容量約 7.2GB、コンテキスト長 256K(262144 トークン)。e2b より規模が大きく、より高い推論能力を要する用途に適する。テキストに加えて画像入力に対応し、思考モード(前述の gemma4:e2b-it-qat と同様に、システムプロンプト先頭の <|think|> トークンで制御する)を備える。ライセンスは Apache 2.0。QAT による軽量化により、モデル本体の重みは VRAM/メモリで 7〜8GB 程度(ダウンロード容量とほぼ同等)を占める。これに加えて、設定するコンテキスト長(num_ctx)に応じた KV キャッシュ分の VRAM/メモリも必要になり、本手順のように 262144 トークン近くまで使う場合はその分が上乗せされる。目安として、VRAM/メモリ 16GB クラスの環境であれば、OS やアプリの分も含めて動作させやすい。正確な使用量は環境によって異なるため、実際の使用量を観測しながら調整することを推奨する。
第4章 埋め込みモデル
本手順で使用する埋め込みモデルは次のとおり。
- bge-m3:BAAI(北京智源人工知能研究院)が公開した多言語の埋め込みモデル(テキストを、意味を表す数値ベクトルに変換するモデル)である。パラメータ数 567M、ダウンロード容量約 1.2GB。日本語・英語を含む 100 以上の言語と最大 8192 トークンの入力に対応する。出力する Dense ベクトルは 1024 次元。本手順では SAP のナレッジベース(RAG)の埋め込みに用いる(Ollama 経由で実行)。
第5章 Python 3.12 のインストール
Pythonのインストールを行い、Pythonのプログラムを実行する環境を整える。扱う環境は、Windows搭載パソコンである。金子研究室では、Python 3.12.10を推奨する。
[Windows での Python 3.12 のインストール手順を見るには、ここをクリック]
Windows での Python 3.12 のインストール
以下のいずれかの方法でPython 3.12をインストールする。Pythonがインストール済みの場合、この手順は不要である。
方法 1:winget によるインストール
【インストールコマンドの実行方法】
管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。
REM Python 3.12 をシステム領域にインストール
winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\""
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Python 3.12 のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
REM Python と Scripts を PATH 先頭に追加
powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; if(Test-Path $p){$k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); $c=$k.GetValue('Path','',[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames); $t=$k.GetValueKind('Path'); $new=$c; if((';'+$new+';') -notlike \"*;$p;*\"){$new=$p+';'+$new}; if((';'+$new+';') -notlike \"*;$s;*\"){$new=$s+';'+$new}; if($new -ne $c){$k.SetValue('Path',$new,$t)}; $k.Close()}"
REM 現在のセッションにも反映(システムPATHを再取得して連結)
for /f "usebackq tokens=2,*" %A in (`reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path`) do set "PATH=%B"
REM pip / wheel の更新
python -m pip install --no-user -U pip wheel
if not "%ERRORLEVEL%"=="0" ( color 0c & echo pip / wheel の更新に失敗しました & ping 127.0.0.1 -n 6 >nul & color )
方法 2:インストーラーによるインストール
- Python公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンからWindows用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部に表示される「Add python.exe to PATH」にチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから
pythonコマンドを実行できない。 - 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。
インストールの確認
コマンドプロンプトで以下を実行する。
python --version
バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。
第6章 Build Tools・CUDA Toolkit・PyTorch のインストール
本章では、C++ ビルドツール、NVIDIA CUDA Toolkit、PyTorch のインストールを行い、GPU を活用した機械学習プログラムを実行する環境を整える。扱う環境は、Windows 搭載パソコンである。
[Build Tools・CUDA Toolkit・PyTorch のインストール手順を見るには、ここをクリック]
Windows での Build Tools for Visual Studio 2026 のインストール
Build Tools for Visual Studio 2026 は、C++ ソースコードを Windows 用バイナリにコンパイルするための開発ツール群である。unsloth 等の一部 Python パッケージは、インストール時に C++ コードのビルドを必要とするため、これらのツールが必須となる。
以下のコマンドは、Build Tools が未インストールの場合は winget で新規インストールし、インストール済みの場合は setup.exe modify でコンポーネントを追加する(バージョンは変更しない)。
【インストールコマンドの実行方法】
管理者権限でコマンドプロンプトを起動する(手順:Windows キーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。
REM ============================================================
REM Visual C++ 再頒布可能パッケージ (VCRedist 2015-)
REM ============================================================
winget install --scope machine --id Microsoft.VCRedist.2015+.x64 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet /norestart"
if not "%ERRORLEVEL%"=="0" ( color 0c & echo VCRedist のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
REM ============================================================
REM Visual Studio Build Tools + Desktop development with C++
REM (VCTools、MSBuildTools、CMake連携、Clang、Windows 11 SDK)
REM ============================================================
REM 進行中のインストーラーを停止(ロック競合回避。対象プロセスが存在しない場合は
REM taskkillがエラーを返すが、これは想定内であるため出力のみ抑制する)
taskkill /F /IM vs_setup.exe /T >nul 2>&1
taskkill /F /IM vs_installer.exe /T >nul 2>&1
taskkill /F /IM vs_installerservice.exe /T >nul 2>&1
taskkill /F /IM msiexec.exe /T >nul 2>&1
REM Build Tools + Desktop development with C++(VCTools)+ 追加コンポーネント(一括)
REM 未インストール時: winget で新規インストール
REM インストール済み時: setup.exe modify でコンポーネント追加(バージョンは変更しない)
winget list --id Microsoft.VisualStudio.BuildTools 2>nul | findstr /i "BuildTools" >nul 2>&1
if %ERRORLEVEL% EQU 0 (
for /f "usebackq delims=" %P in (`"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools -property installationPath`) do start /wait "" "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "%P" --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --add Microsoft.VisualStudio.Component.VC.v143.x86.x64 --includeRecommended --quiet --norestart --nocache
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Build Tools のコンポーネント追加に失敗しました & ping 127.0.0.1 -n 6 >nul & color )
) else (
winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --add Microsoft.VisualStudio.Component.VC.v143.x86.x64"
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Build Tools のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
)
REM BuildTools のインストールパスを vswhere.exe で取得(メジャーバージョンに依存しない)
set "VSWHERE=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
set "BT_PATH="
for /f "usebackq delims=" %P in (`"%VSWHERE%" -products Microsoft.VisualStudio.Product.BuildTools -property installationPath`) do set "BT_PATH=%P"
if not defined BT_PATH ( color 0c & echo Build Tools のインストールパスを取得できませんでした & ping 127.0.0.1 -n 6 >nul & color )
REM 破損時の修復(任意、動作がおかしくなった場合)
REM if defined BT_PATH "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" repair --installPath "%BT_PATH%" --quiet --norestart
REM 導入確認(インストールパスが表示されれば正常)
"%VSWHERE%" -products * -requires Microsoft.VisualStudio.Workload.VCTools -property installationPath
上記のコマンドでは、Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし、続いて以下のコンポーネントを追加している。
- VCTools:C++ デスクトップ開発ワークロード(
--includeRecommendedにより、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる) - MSBuildTools:MSBuild によるビルドツールのワークロード
- VC.CMake.Project:Windows 向け C++ CMake ツール
- VC.Llvm.Clang:Windows 向け C++ Clang コンパイラ
- VC.Llvm.ClangToolset:MSBuild から Clang を使用するための clang-cl ツールセット
- Windows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)
追加のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。
Windows での NVIDIA CUDA Toolkit のインストール
NVIDIA CUDA Toolkit は、NVIDIA GPU 上で計算を行うためのコンパイラ・ライブラリ群である。PyTorch や vLLM 等が GPU を利用するために必要となる。GPU を使用しない場合、この手順は不要である。
前提条件:NVIDIA GPU、NVIDIA ドライバ、Build Tools for Visual Studio もしくは Visual Studio が必要である。
インストール中の注意:他のウインドウは閉じておくこと。
【インストールコマンドの実行方法】
管理者権限でコマンドプロンプトを起動する(手順:Windows キーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。
REM ============================================================
REM CUDA 12.8
REM ============================================================
winget install --scope machine --id Nvidia.CUDA --version 12.8 -e --silent --disable-interactivity --force --uninstall-previous --accept-source-agreements --accept-package-agreements --override "-s -n"
if not "%ERRORLEVEL%"=="0" ( color 0c & echo CUDA のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
REM 統合用ファイルのコピー
if exist "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\" (
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\extras\visual_studio_integration\MSBuildExtensions\*.*" "c:\Program Files\Microsoft Visual Studio\18\Community\MSBuild\Microsoft\VC\v180\BuildCustomizations\" /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\extras\visual_studio_integration\MSBuildExtensions\*.*" "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\MSBuild\Microsoft\VC\v180\BuildCustomizations\" /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\extras\visual_studio_integration\MSBuildExtensions\*.*" "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\MSBuild\Microsoft\VC\v170\BuildCustomizations\" /Y /I
) else (
echo CUDA v12.8 のディレクトリが存在しません。
ping 127.0.0.1 -n 6 >nul
)
REM 環境変数TEMP, TMPの設定(一時ファイルの保存先を短いパスに変更)
set "TEMP=C:\TEMP"
set "TMP=C:\TEMP"
powershell -NoProfile -Command "$k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); foreach($n in @('TEMP','TMP')){ $t=[Microsoft.Win32.RegistryValueKind]::ExpandString; if($k.GetValueNames() -contains $n){ $t=$k.GetValueKind($n) }; $k.SetValue($n,'C:\TEMP',$t) }; $k.Close()"
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TEMP
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TMP
環境変数 TEMP および TMP を C:\TEMP に変更しているのは、後続のインストール処理で長いパス名や空白を含むパス名がエラーの原因となる場合があるためである。
Windows での PyTorch のインストール
https://pytorch.org のインストールガイドに従い、自環境の CUDA バージョンに対応したコマンドを取得して実行する。CUDA バージョンは以下で確認できる。
nvcc --version
管理者権限でコマンドプロンプトを起動し、以下を実行する。cu128 は CUDA 12.8 用のタグである。CUDA バージョンが異なる場合は、上記公式サイトで該当するタグを確認し、URL 末尾の cu128 を置き換えること。
REM numpy と PyTorch(CUDA 12.8 対応 wheel)、pip キャッシュを全削除
set "CUDA_TAG=cu128"
pip install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%
if not "%ERRORLEVEL%"=="0" ( color 0c & echo numpy / PyTorch のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
第7章 Ollama・モデル・Open WebUI のインストール
[Windows でのインストール・設定手順を見るには、ここをクリック]
Ollama、3 つのモデル(LFM2.5-1.2B-Instruct、gemma4:e2b-it-qat、gemma4:12b-it-qat)、埋め込みモデル bge-m3、Python 3.11、Open WebUI、Git のインストール手順を示す。
設定としては、Ollama の動作パラメータを Machine スコープの環境変数として設定する。内容は、Flash Attention の有効化(OLLAMA_FLASH_ATTENTION=1)、KV キャッシュの 8bit 量子化(OLLAMA_KV_CACHE_TYPE=q8_0)、コンテキスト長の拡張(OLLAMA_CONTEXT_LENGTH=262144)、モデル保存先の C:\Ollama\models への変更(OLLAMA_MODELS)、同時ロードモデル数の 1 への制限(OLLAMA_MAX_LOADED_MODELS=1)、同時処理数の 1 への制限(OLLAMA_NUM_PARALLEL=1)である。
Flash Attention は KV キャッシュ量子化を使用するために必要な機能である。また、同時ロードモデル数を 1 に制限することで、モデル切替時に複数モデルが同時にメモリ上へ残らない設定にしている。
この手順では、スタートメニューに次のショートカットも作成する。
- Ollama LFM2.5 1.2B
- Ollama Gemma4 e2b
- Ollama Gemma4 12b
- Open WebUI (Ollama)
ショートカットは直接複雑なコマンドを保持せず、C:\Ollama に作成される起動用 .cmd ファイルを呼び出す。これにより、引用符や & の解釈による起動失敗を避ける。また、起動用 .cmd 内でも Ollama 用環境変数を明示的に設定するため、Machine スコープ環境変数の反映を待たずに動作する。
ハードウェアの前提
- インターネット接続が必要である。
- ディスク空き容量は 30GB 以上を推奨する。モデル 3 種、埋め込みモデル、Python、Open WebUI、pip キャッシュ等で 20GB を超える場合がある。
- メモリ搭載量は 16GB 以上を目安とする。ただし、
gemma4:12b-it-qatを長いコンテキストで使用する場合は、より多くのメモリが必要になる。32GB 以上、余裕を見れば 64GB 以上が必要である。 - VRAM 搭載量が少ない GPU や CPU のみの PC でも軽量モデルは動作する場合があるが、
gemma4:12b-it-qatは動作に時間がかかる場合がある。
ハードウェア要件の事前確定は難しい。新規に PC を準備する前に、現有の機器で本手順を試行し、性能面の問題の有無を確認したうえで、本格運用のハードウェアを決定する。
インストールコマンドの実行方法
手順:Windows キーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」
Machine スコープの環境変数設定、C:\Ollama の作成、Python/Git の Machine スコープインストール、共通スタートメニューへのショートカット作成には管理者権限が必要である。実行時は、次のコマンド全体をコマンドプロンプトにコピー&ペーストする。
REM ============================================================
REM 管理者権限チェック
fltmc >nul 2>&1
if not "%ERRORLEVEL%"=="0" ( color 0c & echo 管理者権限で実行してください & ping 127.0.0.1 -n 6 >nul & color )
REM winget パッケージ一覧のローカルキャッシュを更新
winget source update
REM === 1. Ollama 環境変数を Machine スコープで事前設定 ===
REM インストール前に設定することで、Ollama 起動時から正しい設定が読み込まれる
powershell -NoProfile -Command "[Environment]::SetEnvironmentVariable('OLLAMA_FLASH_ATTENTION','1','Machine'); [Environment]::SetEnvironmentVariable('OLLAMA_KV_CACHE_TYPE','q8_0','Machine'); [Environment]::SetEnvironmentVariable('OLLAMA_CONTEXT_LENGTH','262144','Machine'); [Environment]::SetEnvironmentVariable('OLLAMA_MODELS','C:\Ollama\models','Machine'); [Environment]::SetEnvironmentVariable('OLLAMA_MAX_LOADED_MODELS','1','Machine'); [Environment]::SetEnvironmentVariable('OLLAMA_NUM_PARALLEL','1','Machine')"
REM 現在のコマンドプロンプトにも同じ設定を反映
set "OLLAMA_FLASH_ATTENTION=1"
set "OLLAMA_KV_CACHE_TYPE=q8_0"
set "OLLAMA_CONTEXT_LENGTH=262144"
set "OLLAMA_MODELS=C:\Ollama\models"
set "OLLAMA_MAX_LOADED_MODELS=1"
set "OLLAMA_NUM_PARALLEL=1"
REM === 2. 使用するモデル名 ===
set "MODEL_LFM=LiquidAI/lfm2.5-1.2b-instruct"
set "MODEL_GEMMA_LIGHT=gemma4:e2b-it-qat"
set "MODEL_GEMMA_12B=gemma4:12b-it-qat"
set "MODEL_EMBED=bge-m3"
REM === 3. 既存の Ollama プロセスを停止(ファイルロック解除のため) ===
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1
REM === 4. 既存の Ollama をアンインストール ===
REM インストール先を C:\Ollama に揃えるため、既存インストールをいったん削除する
winget uninstall --id Ollama.Ollama -e --silent --disable-interactivity --accept-source-agreements
REM uninstall 後にプロセスが残ることがあるため再度停止
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1
REM === 5. モデルフォルダの作成と権限設定 ===
if not exist "C:\Ollama" ( mkdir "C:\Ollama" )
if not exist "C:\Ollama\models" ( mkdir "C:\Ollama\models" )
icacls "C:\Ollama\models" /grant *S-1-5-32-545:(OI)(CI)(M) /T /C
REM === 6. 既存モデルの移動(実行ユーザーのプロファイルに残っている場合) ===
REM Ollama 停止状態で実行するためファイルロックが起きない
if exist "%USERPROFILE%\.ollama\models" ( robocopy "%USERPROFILE%\.ollama\models" "C:\Ollama\models" /E /MOVE )
REM === 7. Python 3.11 のインストール ===
REM Open WebUI は Python でインストールするため、先に Python 3.11 を Machine スコープで導入する
winget install --scope machine --id Python.Python.3.11 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Python 3.11 のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
set "PATH=C:\Program Files\Python311;C:\Program Files\Python311\Scripts;%PATH%"
REM === 8. Ollama のインストール(C:\Ollama) ===
winget install --id Ollama.Ollama -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/DIR=C:\Ollama"
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Ollama のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
REM インストーラが自動起動した Ollama プロセスを停止し、以後は明示した環境変数で起動する
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1
REM === 9. Git のインストール ===
winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=icons,ext\reg\shellhere,assoc,assoc_sh /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled"
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Git のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
set "PATH=C:\Program Files\Git\cmd;%PATH%"
REM === 10. PATH の Machine スコープ設定 ===
REM [Environment]::SetEnvironmentVariable を使用すると、レジストリ値の型が
REM REG_EXPAND_SZ から REG_SZ に変化し、既存の %var% 形式の変数参照が
REM 展開されてしまう副作用があるため、レジストリを直接操作して型を維持する
powershell -NoProfile -Command "$p='C:\Ollama'; $k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); $c=$k.GetValue('Path','',[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames); $t=$k.GetValueKind('Path'); if(($c -split ';') -notcontains $p){$k.SetValue('Path',($c.TrimEnd(';')+';'+$p),$t)}; $k.Close()"
powershell -NoProfile -Command "$p='C:\Program Files\Python311'; $k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); $c=$k.GetValue('Path','',[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames); $t=$k.GetValueKind('Path'); if(($c -split ';') -notcontains $p){$k.SetValue('Path',($c.TrimEnd(';')+';'+$p),$t)}; $k.Close()"
powershell -NoProfile -Command "$p='C:\Program Files\Python311\Scripts'; $k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); $c=$k.GetValue('Path','',[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames); $t=$k.GetValueKind('Path'); if(($c -split ';') -notcontains $p){$k.SetValue('Path',($c.TrimEnd(';')+';'+$p),$t)}; $k.Close()"
powershell -NoProfile -Command "$p='C:\Program Files\Git\cmd'; $k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); $c=$k.GetValue('Path','',[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames); $t=$k.GetValueKind('Path'); if(($c -split ';') -notcontains $p){$k.SetValue('Path',($c.TrimEnd(';')+';'+$p),$t)}; $k.Close()"
REM 現在のコマンドプロンプトにも PATH を反映
set "PATH=C:\Ollama;C:\Program Files\Python311;C:\Program Files\Python311\Scripts;C:\Program Files\Git\cmd;%PATH%"
REM === 11. Ollama サーバープロセスの起動(モデルダウンロードの前に必要) ===
REM where や tasklist の判定に依存せず、フルパスで明示的に起動する
start "Ollama Server" /min "C:\Ollama\ollama.exe" serve
timeout /t 15 /nobreak >nul
REM === 12. モデルのダウンロード ===
REM 動作確認用(テキスト専用、約 731MB)
echo %MODEL_LFM% モデルをダウンロード中...
"C:\Ollama\ollama.exe" pull "%MODEL_LFM%"
REM 画像入力対応(軽量、約 4.3GB)
echo %MODEL_GEMMA_LIGHT% モデルをダウンロード中...
"C:\Ollama\ollama.exe" pull "%MODEL_GEMMA_LIGHT%"
REM 画像入力対応(上位、約 7.2GB)
echo %MODEL_GEMMA_12B% モデルをダウンロード中...
"C:\Ollama\ollama.exe" pull "%MODEL_GEMMA_12B%"
echo モデルダウンロード完了
REM === 13. 埋め込みモデルのダウンロード(RAG 演習で使用) ===
echo %MODEL_EMBED% 埋め込みモデルをダウンロード中...
"C:\Ollama\ollama.exe" pull "%MODEL_EMBED%"
echo 埋め込みモデルダウンロード完了
REM === 14. Open WebUI のインストール ===
REM open-webui パッケージにより、依存パッケージ(FastAPI、ChromaDB、
REM sentence-transformers 等)が一括インストールされる
REM 管理者実行中でも Administrator ユーザー専用にならないよう、Python 3.11 へ system-wide に入れる
"C:\Program Files\Python311\python.exe" -m pip install --no-user --upgrade pip
"C:\Program Files\Python311\python.exe" -m pip install --no-user --upgrade open-webui
REM === 15. 起動用コマンドファイルの作成 ===
REM ショートカットに複雑なコマンド列を直接埋め込まず、.cmd ファイル経由で起動する
REM Ollama 共通環境変数
> "C:\Ollama\ollama-env.cmd" echo @echo off
>> "C:\Ollama\ollama-env.cmd" echo set "OLLAMA_FLASH_ATTENTION=1"
>> "C:\Ollama\ollama-env.cmd" echo set "OLLAMA_KV_CACHE_TYPE=q8_0"
>> "C:\Ollama\ollama-env.cmd" echo set "OLLAMA_CONTEXT_LENGTH=262144"
>> "C:\Ollama\ollama-env.cmd" echo set "OLLAMA_MODELS=C:\Ollama\models"
>> "C:\Ollama\ollama-env.cmd" echo set "OLLAMA_MAX_LOADED_MODELS=1"
>> "C:\Ollama\ollama-env.cmd" echo set "OLLAMA_NUM_PARALLEL=1"
REM LFM2.5-1.2B-Instruct 起動用
> "C:\Ollama\run-lfm25-1.2b.cmd" echo @echo off
>> "C:\Ollama\run-lfm25-1.2b.cmd" echo call "C:\Ollama\ollama-env.cmd"
>> "C:\Ollama\run-lfm25-1.2b.cmd" echo start "Ollama Server" /min "C:\Ollama\ollama.exe" serve
>> "C:\Ollama\run-lfm25-1.2b.cmd" echo timeout /t 15 /nobreak ^>nul
>> "C:\Ollama\run-lfm25-1.2b.cmd" echo "C:\Ollama\ollama.exe" run %MODEL_LFM%
REM gemma4:e2b-it-qat 起動用
> "C:\Ollama\run-gemma4-e2b.cmd" echo @echo off
>> "C:\Ollama\run-gemma4-e2b.cmd" echo call "C:\Ollama\ollama-env.cmd"
>> "C:\Ollama\run-gemma4-e2b.cmd" echo start "Ollama Server" /min "C:\Ollama\ollama.exe" serve
>> "C:\Ollama\run-gemma4-e2b.cmd" echo timeout /t 15 /nobreak ^>nul
>> "C:\Ollama\run-gemma4-e2b.cmd" echo "C:\Ollama\ollama.exe" run %MODEL_GEMMA_LIGHT%
REM gemma4:12b-it-qat 起動用
> "C:\Ollama\run-gemma4-12b.cmd" echo @echo off
>> "C:\Ollama\run-gemma4-12b.cmd" echo call "C:\Ollama\ollama-env.cmd"
>> "C:\Ollama\run-gemma4-12b.cmd" echo start "Ollama Server" /min "C:\Ollama\ollama.exe" serve
>> "C:\Ollama\run-gemma4-12b.cmd" echo timeout /t 15 /nobreak ^>nul
>> "C:\Ollama\run-gemma4-12b.cmd" echo "C:\Ollama\ollama.exe" run %MODEL_GEMMA_12B%
REM Open WebUI 起動用
> "C:\Ollama\run-open-webui.cmd" echo @echo off
>> "C:\Ollama\run-open-webui.cmd" echo call "C:\Ollama\ollama-env.cmd"
>> "C:\Ollama\run-open-webui.cmd" echo start "Ollama Server" /min "C:\Ollama\ollama.exe" serve
>> "C:\Ollama\run-open-webui.cmd" echo timeout /t 15 /nobreak ^>nul
>> "C:\Ollama\run-open-webui.cmd" echo "C:\Program Files\Python311\Scripts\open-webui.exe" serve
REM === 16. スタートメニュー ショートカット作成 ===
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $p=[Environment]::GetFolderPath('CommonPrograms'); $l=$s.CreateShortcut($p+'\Ollama LFM2.5 1.2B.lnk'); $l.TargetPath='C:\Ollama\run-lfm25-1.2b.cmd'; $l.WorkingDirectory='C:\Ollama'; $l.Save()"
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $p=[Environment]::GetFolderPath('CommonPrograms'); $l=$s.CreateShortcut($p+'\Ollama Gemma4 e2b.lnk'); $l.TargetPath='C:\Ollama\run-gemma4-e2b.cmd'; $l.WorkingDirectory='C:\Ollama'; $l.Save()"
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $p=[Environment]::GetFolderPath('CommonPrograms'); $l=$s.CreateShortcut($p+'\Ollama Gemma4 12b.lnk'); $l.TargetPath='C:\Ollama\run-gemma4-12b.cmd'; $l.WorkingDirectory='C:\Ollama'; $l.Save()"
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $p=[Environment]::GetFolderPath('CommonPrograms'); $l=$s.CreateShortcut($p+'\Open WebUI (Ollama).lnk'); $l.TargetPath='C:\Ollama\run-open-webui.cmd'; $l.WorkingDirectory='C:\Ollama'; $l.Save()"
REM === 17. インストール時に起動した Ollama サーバープロセスを停止 ===
REM 実際の利用時は、各ショートカットから現在のユーザー権限で起動する
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1
echo インストール完了
echo Open WebUI はスタートメニューの「Open WebUI (Ollama)」から起動し、ブラウザで http://localhost:8080 を開いてください。
Open WebUI の起動
スタートメニューから Open WebUI (Ollama) を起動する。起動後、ブラウザで次の URL を開く。
http://localhost:8080
初回起動時はアカウント作成画面が表示される。最初に作成したアカウントが Open WebUI の管理者アカウントになる。
RAG 演習で bge-m3 を使用する場合
bge-m3 は Ollama 側にダウンロード済みである。Open WebUI の RAG 機能で使用する場合は、Open WebUI の管理画面で埋め込みモデルとして Ollama の bge-m3 を選択する。
補足
通常のコマンドプロンプトで ollama や git を直接実行する場合、Machine スコープ PATH の反映には新しいコマンドプロンプトの起動、またはサインアウト・再サインインが必要になる場合がある。スタートメニューに作成されたショートカットはフルパスと起動用 .cmd を使用するため、この影響を受けない。
第8章 演習 1.基本動作確認(CUI)
Ollama 自体が動作することを確認する。本演習のみコマンドプロンプト(CUI)で行い、LLM のローカル実行を体験する。以降の演習はすべて Super Agent Party(SAP)で行う。
手順
- Ollama でモデル LFM2.5-1.2B-Instruct を実行する
- コマンドプロンプトを開き、Ollama を起動する(
ollama serve)。次のメッセージが出た場合は、すでに Ollama が起動中なので、問題ない。続行する。
- 別のコマンドプロンプトで、モデル LFM2.5-1.2B-Instruct を実行する(
ollama run LiquidAI/lfm2.5-1.2b-instruct)。
- コマンドプロンプトを開き、Ollama を起動する(
- プロンプト記号
>>>が表示されたら、質問を入力する(例:「日本の首都はどこですか?」)。
- 応答が返ることを確認する。
/byeを入力して終了する。
- 画像入力に対応したモデル gemma4:e2b-it-qat の動作確認。
- 画像を準備する。
- 別のコマンドプロンプトで
ollama run gemma4:e2b-it-qatを実行する。 - 起動後のプロンプトに「この画像に写っているものを説明してください 画像ファイル名は…です」のように、指示を入力する。
画像ファイル名のところは「C:\users\Desktop\1.png」のように画像ファイル名の絶対パスを書く。
- 画像の内容に基づいた応答が返れば、画像入力(マルチモーダル)機能が動作していることを確認できる。
- 確認後は同様に
/byeを入力して終了する。
うまく行かない場合でも続行する。
ヒント
- 初回起動時は、モデルのメモリへのロードに時間を要する(LFM2.5-1.2B-Instruct は軽量のため比較的短時間で完了する)。
- 応答の生成中に中断する場合は Ctrl+C を押す。
ollama serve用ウィンドウは閉じずに残しておく。サーバに接続できない場合は、別のコマンドプロンプトでollama serveを実行してサーバを起動してから再度モデルを実行する。- 登録済みモデルの一覧は別のコマンドプロンプトで
ollama listで確認できる。 - 画像入力の確認には、手元にある任意の画像ファイル(JPEG・PNG 等)を使用できる。
考察ポイント
- モデルが質問に対して応答を返すか(本演習の目的は応答経路の動作確認であり、応答内容の正確性は問わない)。
ollama listで登録されているモデルが確認できるか。- gemma4:e2b-it-qat への画像入力時、応答の説明内容が画像の実際の内容と一致しているか(誤認識の有無)。
第9章 Super Agent Party(SAP)の前準備と用途例
本稿は 2026 年 5 月時点の Super Agent Party v0.4.1 を対象とし、Windows のデスクトップ版またはポータブル版での利用を前提とする。対話用 LLM と埋め込みモデルはいずれもローカル推論エンジン Ollama 上で実行する。
前準備
- Windows 10/11、または Windows Server 2025 以降に Super Agent Party のデスクトップ版またはポータブル版をインストールする。
- 上記リンクからリリースページを開き、最新版(一覧の最上部にある
Latest表示のもの)のAssetsを展開する。
- デスクトップ版を推奨する。ファイル名が
Super-Agent-Party-Setup-バージョン番号.exeのインストーラをダウンロードする。-
- デスクトップ版:ダウンロードした
.exeを実行し、画面の指示に従ってインストールする。次の警告が出た場合は、詳細情報、実行の順に進む。
インストール先の選択画面では「現在のユーザーのみにインストール(Install for current user only)」を選ぶ。これを選ばない場合、起動のたびに管理者権限が必要になる。
-
- インストールが完了したら SAP を起動する。デスクトップ版はデスクトップまたはスタートメニューのアイコンから起動する。
- 上記リンクからリリースページを開き、最新版(一覧の最上部にある
用途例の概要
- VRM 学習コンパニオン(2D/3D デスクトップキャラクター):VRM モデル・モーション・3D シーン(背景)を差し替えできるデスクトップキャラクターを表示し、ASR・TTS・表情同期と組み合わせた音声対話を行う(詳細は演習 2)。
- ロールプレイ型対話学習(複数キャラクターによる同時対話):タバーンキャラクターカードを用いた複数 AI キャラクターの同時対話を行う(詳細は演習 3)。
- AI 物語生成アシスタント(インタラクティブストーリー):世界観定義ファイルをもとに AI が物語本文と分岐選択肢を逐次生成する(詳細は演習 4)。
- 研究室・サークル用 Discord ボット:SAP から Discord サーバにボットを常駐させ、FAQ 応答や議事録要約を自動化する(詳細は演習 5)。
- 個人用学習秘書(PDF ナレッジベース付き):PDF を登録し、bge-m3 による埋め込みと RAG を用いて資料に基づく回答を行う(詳細は演習 6)。
第10章 演習 2.VRM 学習コンパニオン(2D/3D デスクトップキャラクター)
SAP の VRM(3D アバターの標準的なファイル形式)デスクトップコンパニオン機能により、VRM モデル・モーション・3D シーン(背景)を差し替えできるデスクトップキャラクターを起動する。これに ASR(音声認識。Automatic Speech Recognition の略)と TTS(音声合成。Text-to-Speech の略)を組み合わせると、画面内のキャラクターと音声で対話でき、AI の発話途中で割り込める(発話開始ボタンを再度押すと、その時点で AI の発話が打ち切られ、新しい発話入力が優先される)。Live2D(イラストを用いた 2D キャラクターアニメーション技術)拡張機能(sap-live2d)も併用でき、2D・3D いずれの方式でも利用できる。
手順
- 演習 1 と同じように、コマンドプロンプトを開き、Ollama を起動する(
ollama serve)。次のメッセージが出た場合は、すでに Ollama が起動中なので、問題ない。続行する。
- SAP を起動し、左サイドバーの【Model】をクリック、【Model Service】をクリックし、Ollama プロバイダを対話用 LLM として選択する。API Address の部分は既定値のままでよい(変更する必要はない)。以降の演習では、この登録を共通の前提として参照する。
- 【Get Model List】をクリックする。これは、使用するモデルのリストを得るための操作で、毎回行う必要はない(新しいモデルを増やしたときに行う)。
- 使用するモデルのモデル ID(Model ID)を選択する。
メニューの中から、使いたいモデルを選ぶ。
- メインエージェントのシステムプロンプトに学習用の役割(例:「英語家庭教師」)を記述する。
- ASR のモデルを選び、ダウンロードする。
- TTS のモデルと言語を選ぶ(必要に応じてダウンロードする)。ここでは Edge TTS を選び、EdgeTTS Language として日本語の「ja-JP」を選択している。
- VRM モデルを用意する。
参考リンク:
- VRoid Hub:https://hub.vroid.com/
- 模之矢屋:https://www.aplaybox.com/search?value=VRM
- Bot のページで VRM モデルを追加する。
- 使用する VRM モデルをメニューで選択する。VRM モデルを追加していない場合は、デフォルトのモデルから選択する。
- 必要に応じて
Select VRMA Motions(カスタムモーション)と 3D シーン(写真などから 3D 空間を再構成する Gaussian Splatting 技術によるシーン等の背景)をアップロードして適用し、Enable Expression Controlを有効化して TTS と表情を同期させる(既定の VRMA アニメーションが用意されているため、カスタムモーションを用意しない場合でもジェスチャは付与される)。 - VRM コンパニオンウィンドウを開いてデスクトップ脇に常駐させる。OBS(ライブ配信や画面録画に使われる無料ソフトウェア)への配信も可能である。
- VRM コンパニオンウィンドウの発話開始ボタンを押し、マイクに向かって話しかける。AI の応答中に発話開始ボタンを再度押すと、その時点で応答が打ち切られ、新しい発話が受け付けられる。
ヒント
- マイクが認識されない場合、Windows のサウンド設定で入力デバイスを確認する。
- VRM ウィンドウが他のウィンドウに隠れる場合、ウィンドウの設定で「常に最前面に表示」を有効化する。
考察ポイント
Enable Expression Controlの有無で、発話時の印象がどう変わるか。- システムプロンプトを「英語家庭教師」から別の役割(例:「数学チューター」)に変えたとき、応答の語彙・口調・例題の選び方がどう変化するか。
- 発話途中で割り込んだとき、応答の継続・リセットの挙動がどうなるか。
第11章 演習 3.ロールプレイ型対話学習(複数キャラクターによる同時対話)
SAP は SillyTavern 互換のタバーンキャラクターカード(PNG 形式)の取り込み・編集・書き出しに対応し、長期記憶(memorySettings)機能を備える。マルチロールグループチャット機能により、複数の AI キャラクターが互いに対話する様子を観察でき、英会話練習や歴史上の人物との対話などに応用する。各カードに個別の音声・アバター・表情画像を割り当てられる。
タバーンキャラクターカードは、PNG 画像の tEXt チャンク(PNG ファイル内のテキスト埋め込み領域)に JSON を埋め込む形式である。カード内 JSON の最小構成を次に示す(SAP のカード編集画面では同等の項目を GUI 上で編集できる)。
{
"name": "Alice",
"description": "英国出身の英語家庭教師。礼儀正しく、学習者の発音を丁寧に訂正する。",
"personality": "丁寧、忍耐強い、励まし上手",
"first_mes": "Hello! Shall we start today's lesson?",
"mes_example": "<START>\n{{user}}: Good morning.\n{{char}}: Good morning! How are you today?"
}
手順
- SillyTavern コミュニティ等から
.png形式のカードを入手する(または SAP のカード編集機能で自作する。SAP にはカードのワンクリック生成機能もある)。 - 左サイドバーのロール(Roll)でカードをアップロードし、各カードに TTS 音色・アバター画像・ナレーター音色を割り当てる。
- カードを 2 体以上追加し、発話順序や応答頻度を設定する。
- 会話に途中参加するか、観察モードで AI 同士の対話を聴講する(英会話練習なら英語話者カードを 2 体、歴史対話なら史実人物カードを設定する)。
ヒント
{{user}}と{{char}}は、カード内 JSON で利用できる置換変数である(実行時に話者名へ置換される)。- カード生成機能で作成した PNG は、そのまま手順 2 でアップロードできる。
考察ポイント
- 2 体のキャラクターに対立する
personalityを設定したとき、対話の進み方がどう変化するか。
第12章 演習 4.AI 物語生成アシスタント(インタラクティブストーリー)
公式拡張機能 sap-story-adventure(Story Adventure)を導入すると、AI が物語本文と分岐選択肢を逐次生成するインタラクティブストーリーが動作する。世界観定義ファイル(worlds.json)を差し替えることで、舞台・時代・登場人物が異なる物語を生成でき、創作演習の教材として利用する。
手順
- 左サイドバーで【Developer】をクリックし、上部のサブメニューで【Extension】をクリックする。
- 【Add New Extension】をクリックし、表示された入力欄にリポジトリ URL
https://github.com/heshengtao/sap-story-adventureを入力して【Add】をクリックする。
- インストール完了後、左サイドバーに Story Adventure の項目が追加される。これをクリックして開く(独立ウィンドウまたはサイドバー内のいずれかで表示される)。
- 拡張機能に同梱の既定の
worlds.jsonを参考に、世界観設定(時代・場所・主要キャラクタ・ジャンル)を自作の世界観に編集する。 - 物語開始ボタンを押すと、AI が導入文と複数の選択肢を生成する。選択肢を選ぶごとに分岐が進行し、生成結果はチャット履歴として保存される。
既定では中国語のため、デフォルトのものを日本語訳して実行した結果が次のとおりである。
- 選択肢が表示されるので選択できる。選択に応じてストーリーが進む。
ヒント
worlds.jsonの編集前に元ファイルを別名で保存しておくと、初期状態に戻せる。- 生成された物語は、チャット履歴のエクスポート機能でテキストとして取り出せる。
考察ポイント
- 同じ
worlds.jsonで物語を複数回生成したとき、導入文と分岐選択肢にどの程度の多様性があるか。 - 世界観設定の項目(時代・場所・ジャンル)を一つだけ変更したとき、物語全体に与える影響の範囲。
- 分岐の深さ(選択を何回繰り返したか)と、物語の一貫性の関係。
第13章 演習 5.研究室・サークル用 Discord ボット
SAP はメッセージングプラットフォーム(QQ・WeChat・Feishu・DingTalk・Telegram・Discord・Slack)への連携に対応している。自作 AI を Discord サーバーに常駐させると、他者にも利用してもらえるほか、FAQ 応答や議事録要約にも活用できる。システムプロンプトとナレッジベースを切り替えることで、用途別のボットを複数立ち上げられる。本構成では対話用 LLM の推論処理は Ollama 上でローカルに完結するため、入力内容が外部の AI クラウドサービスへ送信されることはない。ただし、Discord 連携を利用する場合、ユーザの発話内容は Discord 社が運営する外部サーバを経由して SAP に届くため、研究室内部の議事録や学内限定の機密情報を扱う場合は、ボットの利用範囲を限定するか、SAP のチャット画面を直接利用する構成と使い分けることを推奨する。
議事録要約ボットのシステムプロンプト例を次に示す。
あなたは研究室の議事録要約ボットである。入力された会議記録テキストから次の 3 項目を抽出し、
それぞれ箇条書きで出力せよ。
1. 決定事項
2. 宿題(担当者名を併記)
3. 期日(日付形式で明示)
根拠が不明な項目は「記載なし」と明記する。推測による補完はしない。
手順
- Discord Developer Portal を開き、「New Application」をクリックしてアプリケーション名を入力し作成する。
- 左メニューの「Bot」を開く。
- 「Reset Token」をクリックして Bot トークンを生成し、表示されたトークンをコピーして安全な場所に保存する(トークンは一度しか表示されない)。
- 「Privileged Gateway Intents」の「Message Content Intent」を有効化して保存する。これを有効にしないと、ボットがメッセージ本文を読めない。
- 左メニューの「OAuth2」→「URL Generator」を開く。
- 「Scopes」で「bot」にチェックを入れる。
- 「Bot Permissions」で「Send Messages」「Read Message History」「View Channels」にチェックを入れる。
- ページ下部に生成された URL をコピーしてブラウザで開き、招待先の Discord サーバーを選択して「認証」をクリックする。
- SAP の設定画面を開く。左サイドバーの【Platform】(またはメッセージングプラットフォーム連携に相当する項目)から「Discord」を選択し、手順 2 でコピーした Bot トークンを入力して保存する。
- システムプロンプトに用途に応じた指示(例:上記の議事録要約プロンプト)を記述し、必要に応じてナレッジベースを割り当てる。
- ウェイクワード(ボットが応答を開始するきっかけとなる語)を設定する(例:「@ボット名」のみに反応させる場合は空欄にし、Discord のメンション機能で呼び出す)。
- Discord サーバーのチャンネルでボットをメンションし、メッセージを送信して応答を確認する。
ヒント
- Bot トークンは厳重に管理する。漏洩した場合は Discord Developer Portal で「Reset Token」を実行して無効化する。
- テスト用に専用の Discord サーバーを別途作成し、本番運用前に動作確認する。
考察ポイント
- 「記載なし」と回答すべき項目について、推測補完の有無をプロンプトでどの程度制御できるか。
- ウェイクワードの有無が、サーバー内での発話頻度や応答負荷に与える影響。
- 機密性の高い内容を扱う場合に、Discord のような外部プラットフォームを利用することの妥当性をどう判断するか。
第14章 演習 6.個人用学習秘書(PDF ナレッジベース付き)
SAP の【ナレッジベース】機能は、埋め込みモデルとベクトル検索(埋め込みベクトル同士の近さを比較して関連箇所を探す処理)による RAG を内蔵する。資料 PDF や講義 PDF を登録すると、資料に基づいて回答する専用 AI が構成され、取得件数(top_n)・リランキング(is_rerank:取得結果の並べ替え)・呼び出しタイミング(when:思考前/思考後)といった RAG の動作を観測できる。埋め込み処理は Ollama 上でローカルに実行する。
事前準備として、コマンドプロンプトで次を実行し、埋め込みモデルを取得する(セットアップ時に取得済みの場合は不要)。
ollama pull bge-m3
手順
- 左サイドバーの【Model】→【Model Service】で、埋め込みモデルとして Ollama の
bge-m3を追加する(登録手順は前準備の手順 3 と同じ)。 - 左サイドバーの【Toolkit】→【Knowledge Base】を開く。
- ナレッジベース機能を有効にするためにダウンロードする。
- 「Add Knowledge Base」をクリックし、講義 PDF・教科書 PDF・参考論文 PDF などをドラッグ&ドロップでアップロードする(ファイルサイズと枚数によっては数分かかる)。
- システムプロンプトに「ナレッジベースの内容を根拠に回答し、根拠がない質問には『資料に記載なし』と答える」のように記述する。
- チャット欄から質問すると、AI は資料に基づいて回答する。
質問例を次に示す(講義 PDF を登録した場合を想定)。
1. 資料に明示的に書かれている事実の質問
「第 3 章で定義されている〇〇とは何か」
2. 資料中の複数箇所を横断する必要のある質問
「本講義で扱った手法のうち、計算量が最小のものはどれか」
3. 資料に記載が無い質問(ハルシネーション検出用)
「著者の出身大学はどこか」
4. 類義語でも検索できるかを確認する質問
「精度向上の工夫について記載箇所を示せ」
ヒント
- PDF の文字がスキャン画像になっている場合、テキスト抽出が行われないため、OCR 済み PDF を用意する。
bge-m3以外の埋め込みモデルも同手順で登録できる。- ベクトル化中にエラーが出る場合、Ollama サービスが起動しているか、また埋め込みモデルが
ollama pullで取得済みかを確認する。
考察ポイント
- ハルシネーション検出用の質問(質問例 3)に対し、システムプロンプトの指示が「資料に記載なし」と答えさせるのにどの程度有効か。
when(呼び出しタイミング)をbefore_thinkingとafter_thinkingで切り替えたとき、応答内容と応答時間にどのような差が出るか。