UnityからローカルLLMを呼び出してAIと会話できる環境を構築してみたので手順をまとめます。
今回は
- Ollama
- EasyLocalLLM
を使って、UnityからローカルLLMを呼び出してみます。
ローカルLLMなので
- APIキー不要
- 利用料金なし
- オフライン環境でも利用可能
というメリットがあります。
参考にした記事はこちらです。
参考
https://beginne28949926.com/unity/ollama-easy-local-llm-tutorial/
この記事をベースに実際に試してみたところ、少しハマったポイントもあったのでその点も含めてまとめます。
環境
| 項目 | 内容 |
|---|---|
| OS | Windows11 |
| Unity | Unity6 |
| LLM | Ollama |
| Unityライブラリ | EasyLocalLLM |
EasyLocalLLMとは
EasyLocalLLMは、UnityからローカルLLMを簡単に呼び出すためのライブラリです。
GitHub
https://github.com/kamekichi128/EasyLocalLLM
OllamaなどのローカルLLMをUnityから利用できるようにするラッパーになっています。
1 Ollamaをインストール
まずローカルLLMを動かすためにOllamaをインストールします。
インストール後、PowerShellで確認します。
ollama -v
2 モデルのダウンロード
Ollamaでは、使用するモデルを指定して実行すると
ローカルにモデルが存在しない場合は自動的にダウンロードが開始されます。
今回は mistral モデルを使用しました。
ollama run mistral
このコマンドを実行すると
- ローカルにモデルがあるか確認
- 無ければダウンロード開始
- ダウンロード完了後に対話モード開始
という流れになります。
実際には何でもいいので質問を入力するとAIが回答を返します。
例
>>> こんにちは
ダウンロードされたモデルは以下で確認できます。
ollama list
例
NAME
mistral
アプリでモデル選択してプロンプトを送信してもDLします。
3 Unityプロジェクト作成
Unity Hubから新規プロジェクトを作成します。
今回は Unity6 を使用しました。
4 EasyLocalLLMを導入
GitHubからEasyLocalLLMをダウンロードします。
https://github.com/kamekichi128/EasyLocalLLM
Unityプロジェクトの
Assets
配下に以下のフォルダをコピーします。
Runtime
Tools
5 Newtonsoft.Jsonを追加
Unity Package Managerから以下を追加します。
com.unity.nuget.newtonsoft-json
6 テストスクリプト作成
以下のC#スクリプトを作成します。
EasyLocalLLMTest.cs
using UnityEngine;
using EasyLocalLLM.LLM.Factory;
using EasyLocalLLM.LLM.Core;
public class EasyLocalLLMTest : MonoBehaviour
{
[SerializeField, TextArea(3, 5)]
private string messageToSend = "こんにちは";
void Start()
{
var client = LLMClientFactory.CreateOllamaClient();
Debug.Log($"AIに『{messageToSend}』と送信します...");
StartCoroutine(client.SendMessageAsync(
messageToSend,
response =>
{
Debug.Log($"[AI Response]\n{response.Content}");
},
error =>
{
Debug.LogError($"[Client Error] {error.Message}");
},
new ChatRequestOptions { ModelName = "mistral" }
));
}
}
7 Unityで実行
GameObjectを作成します。
LLMTest
作成したスクリプトをアタッチしてPlayすると
AIの返答がログに表示されます。
注意点
UnityからOllamaを使用する場合、Ollamaのサーバーが起動している必要があります。
そのため、Unityで実行する前に以下のコマンドでOllamaを起動しておきます。
ollama serve
Ollamaはデフォルトで
http://localhost:11434
でAPIサーバーとして動作します。
EasyLocalLLMはこのOllamaのローカルAPIにアクセスして
LLMへリクエストを送る仕組みになっています。
そのため Ollamaが起動していない状態でUnityを実行するとエラーになります。
Unityを実行する前にOllamaを起動しておく点に注意してください。
ハマったポイント
以下のエラーが出ることがありました。
Model 'mistral' not found (HTTP 404)
原因は Ollamaにモデルがインストールされていないことです。
以下を実行すると解決します。
ollama pull mistral
または
ollama run mistral
Unity × ローカルLLMで出来そうなこと
UnityとローカルLLMを組み合わせることで、例えば以下のような用途が考えられます。
- NPCとの会話システム
- AIキャラクター
- ストーリー生成
- ゲーム内AIアシスタント
ローカルLLMなので、インターネット接続がない環境でもAI機能を利用できるのが大きな特徴です。
参考
Ollamaでダウンロードしたモデルは
C:\Users\<ユーザー名>\.ollama\modelsに保存されます。
まとめ
今回試してみたところ、小規模なモデルでも思った以上に自然な返答が返ってくることに驚きました。
ローカルLLMの大きなメリットは、インターネットに接続されていない環境でも利用できることです。
これにより、オフライン環境のアプリケーションや閉じたネットワーク環境でもAIを活用できる可能性があります。
また、ローカルで動作するため APIキーが不要で、利用料金も発生しないという点も大きなメリットです。
そのため、気軽にさまざまな用途で試すことができそうです。
Unityと組み合わせることで、ゲームやインタラクティブアプリケーションなど、いろいろな応用が考えられます。
今回はUnityからローカルLLMを呼び出すところまで試しましたが、次はNPC会話などゲーム用途への応用も試してみたいと思います。
参考
EasyLocalLLM
https://github.com/kamekichi128/EasyLocalLLM
参考記事
https://beginne28949926.com/unity/ollama-easy-local-llm-tutorial/

