2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnityからローカルLLMを使う(Ollama + EasyLocalLLM)

2
Posted at

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をインストールします。

https://ollama.com/download

インストール後、PowerShellで確認します。

ollama -v

2 モデルのダウンロード

Ollamaでは、使用するモデルを指定して実行すると
ローカルにモデルが存在しない場合は自動的にダウンロードが開始されます。

今回は mistral モデルを使用しました。

ollama run mistral

このコマンドを実行すると

  1. ローカルにモデルがあるか確認
  2. 無ければダウンロード開始
  3. ダウンロード完了後に対話モード開始

という流れになります。

実際には何でもいいので質問を入力するとAIが回答を返します。

>>> こんにちは

ダウンロードされたモデルは以下で確認できます。

ollama list

NAME
mistral

アプリでモデル選択してプロンプトを送信してもDLします。

image.png


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の返答がログに表示されます。

image.png


注意点

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/

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?