うたカモ技術ブログ

OpenWrt 個人開発 oasis

【個人開発】OpenWrt専用AIアシスタントツール Oasisの導入と使い方

post:     update: 

この記事で紹介するOasisがサポートするOpenWrtバージョンは最新の24.10です。 開発中のOpenWrt(24.10+x以降)では、パッケージマネージャーソフトがOPKGからAPKに移行した影響でOasisの依存モジュールがAPK対応中となっています。 そのため、2025年2月時点ではOasisのAPKパッケージを使用したインストールは100%失敗しますのでご注意ください。

今回は私が個人開発したOpenWrt専用AIアシスタントツール Oasisの導入と使い方について紹介します。

Oasisはユーザーの依頼に従ってAIがOpenWrtの設定を変更することができるアプリケーションです。

Oasisをインストールすることで、ユーザーはOpenWrtデバイスのLuCI(UI)やコンソールを介してAIと会話できるようになります。

これにより、ユーザーは日本語や英語などの自然言語でAIにネットワークやWI-Fiなどの設定変更を依頼 することができます。

AIはOpenWrtの仕様に基づいた詳細な設定変更をユーザーに代わって実施します。

今回は、そんなOasisの導入と使い方について紹介します。

目次

  1. Oasisとは?
  2. インストール方法
  3. Oasisの基本設定
  4. Oasisの使い方(その他)
  5. おわりに

Oasisとは?

ここでは、Oasisが出来る事を簡単に説明します。

AIとの会話

OasisはOpenAIやOllamaなどのAIサービスをOpenWrtに連携させることができるアプリケーションです。

OasisをインストールしたOpenWrtデバイスは、コンソール(CUI)とWebUIの両方からAIと会話することができるようになります。

Oasisのアプリケーションパッケージはoasisとluci-app-oasisの2つから構成されます。

[WebUIを利用したAIとの会話]
oasisとluci-app-oasisパッケージの両方をインストールすると、OpenWrtのLuCIにOasis用のUIページが追加されます。 このページの「Chat with AI」タブのチャットインタフェースからAIと会話することができます。

※この動画ではOllamaを使用しています。

[コンソール(CUI)を利用したAIとの会話]
oasisパッケージをインストールするとコンソールからAIと会話できるようになります。 このパッケージはluci-app-oasisの依存パッケージにもなっており、AIとの会話制御はこのソフトウェアが担当しています。

※この動画ではOllamaを使用しています。

このように、OasisはOpenWrtのLuCI(WebUI)とコンソールの両方から利用することができるAIアシスタントツールです。

補足

現在、コンソール上から会話してもAIから提供されたOpenWrtの設定変更の提案をOasisは認識しません。 AIの提案を認識するには追加でluci-app-oasisをインストールする必要があります。

使い方その1:AIによる設定提案と変更

OasisではAIとチャットを始めるときにトピック選択をします。

Oasisをインストールした直後の状態ではOpenWrtの設定関連のトピックのみが選択できる状態です。 (トピックは後からSystem Messageタブから追加・削除が可能です。)

OpenWrtの設定に関するトピックを選択した場合、AIはOpenWrtについて回答するようになります。

OpenWrtの設定変更に関する提案がAIから提示された場合、Oasisはその内容を分析します。

そして、Oasisはユーザーに対してAIの提案を基に設定変更を実施するか否かをポップアップで通知します。

ユーザーは設定変更の提案を確認し、承認する場合はApplyボタンを押します。

これにより、OpenWrtはAIの提案内容に基づいた設定変更を実施してネットワーク・Wi-Fi の再起動を実施します。

以上より、OpenWrtの設定が一時的に変更されます(※)

※次節で説明する「設定変更を最終確定するか取り消す(ロールバックする)か」を決めることで、AIによる設定変更の一連の操作が完了します。

使い方その2:設定変更の確定またはロールバック(重要)

注意

次の説明の操作はAIによる設定変更が適用されてから5分以内に実施してください。

5分を超える場合は自動でロールバック処理が実行され、AIによる設定変更は取り消されます。 これはAIによる設定変更によってOpenWrtデバイスが文鎮化(Brick)するのを防ぐ措置です。

※文鎮化(Brick)とは
端末へのアクセス手段が全て絶たれた結果、もう文鎮(置物)としての役割しかない状態のことを指します。

前節までの操作でOpenWrtの設定が変更されると通信断が発生します。

このとき、設定変更がネットワークに影響を与えない場合はOasisによるページ更新機能 またはユーザーによるWebページの更新ボタン押下などで再びLuCI内のAIチャットページに戻ることができます。

しかし、ネットワークに影響を与える設定変更をした結果、OpenWrtデバイスのIPアドレスが変わるなどした場合は 自動でAIチャットページに戻ることはできません。

その場合はOpenWrtデバイスの新しいIPアドレスを特定して手動でアクセスしてください。この間に電源断を実施し、システムを再起動しても構いません。 再起動後にロールバック機能の監視時間である5分が再設定されます。

OasisのAIチャットページが表示されると、以下のポップアップで設定変更を最終確定するか聞かれます。

このとき、ポップアップに表示された「Finalize」ボタンを押すことで設定変更を最終確定することができます。 逆に「Rollback」ボタンを押した場合は以前の設定に戻ります。

※Rollbackによって設定を戻す場合、OpenWrtはシステム再起動(reboot)を実行します。

Oasisを利用してAIによるOpenWrtの設定を変更した場合は、必ず上記の操作を実施する必要があります。 上記の操作を実施しない場合は設定適用から5分後に自動でロールバックが実行されます。

使い方その3:システムメッセージの登録と使用

Oasisでは、AIの回答を調整する機能としてシステムメッセージの登録があります。

これはOasisのUIに存在するSystem Messageタブをクリックすることで利用できます。

Create System Message項目のテキストエリアにAIへの指示や特定の情報(例えばOpenWrtに関する事とか)を入力してAddボタンを押すことで OpenWrtデバイスに新たなシステムメッセージを登録することができます。

上図の例では、新たなシステムメッセージとして「ユーザーの日本語メッセージを英語に翻訳する」指示を書いています。

システムメッセージの登録処理が成功すると、System Message List項目にユーザーが入力したシステムメッセージが表示されます。

後はChat with AIタブをクリックしてAIと新たなチャットを始めます。 すると、トピック選択覧に先ほどのシステムメッセージのタイトル「通訳者」が表示されますのでこれをクリックします。

これにより、「通訳者」と名前の付いたシステムメッセージをAIが解釈した上でユーザーのメッセージに対して回答します。 結果として今回の場合では、ユーザーの日本語メッセージを英語に翻訳してAIが回答するようになります。

このように、システムメッセージを利用すればOpenWrt関連以外の質問や相談に対してAIの回答を調整することができます。

現在のOasisでは、OpenWrtに関する回答の調整もシステムメッセージだけでやっています。

そのため、既存または新規のシステムメッセージにOpenWrtの設定に関する情報をナレッジとして記憶させていくことで OpenWrtの設定変更に特化していくようになります。

特に、OasisはAIの回答の中でOpenWrtの設定を変更に関する内容(UCIコマンドシーケンス)を見つけるとその内容が実行できるか分析します。 そして、ユーザーにポップアップで通知します。

このような振る舞いはOpenWrtに関する設定をしたときだけ発生します。通常、「日本語メッセージを英語に翻訳して」のようなシステムメッセージでは Oasisによるポップアップ通知は実施されません。

使い方その4:AIアイコンの変更

サブ機能になりますが、OasisではAIのアイコンも変更できます。

これはOasisのUIに存在するIconタブをクリックすることで利用できます。

初期状態ではOpenWrtと女の子(通称:オペ子)のアイコンの2種類が存在します。

ここでは例として初期設定のOpenWrtアイコンからオペ子のアイコンに変更してみます。 アイコンを変更するには画像をクリックした後にSelectボタンを押します。

後はChat with AIタブに行きチャット覧を見ると、AIのアイコンがOpenWrtからオペ子になっていることが確認できます。

好きなアイコン(png形式など)を新たに追加したい場合は、Upload Icon項目下で画像ファイルをドラッグ&ドロップするか クリックすると追加することができます。

Webブラウザに認識されると、上図の確認画面が表示されますので問題なければUploadボタンを押します。

OpenWrtデバイス側にアイコン画像がアップロードされると、Select AI Icon項目にアイコンが追加されます。

このように、AIのアイコンも変更することで自分用のAIアシスタントとしてカスタマイズできます。

色々アップロードしていると容量不足などで失敗することがあるかもしれません。 そのときはDeleteボタンで不要なアイコンを削除してください。

インストール方法

インストール方法はいくつかありますので、簡単な方法から掲載します。

その1:LuCIで配布パッケージをインストールする

前提条件:OpenWrtデバイスをインターネットに接続できるようにする
OpenWrtをデバイスにインストールした直後の初期設定ではインターネットに接続できません。

そのため、まずは以下の記事などを参考にOpenWrtデバイスをAPまたはルーター設定にした上でインターネットにアクセスできるようにしてください。

  1. 【第3回】OpenWrt開発入門 UCIコマンドによるネットワーク・Wi-Fi設定
  2. 【第4回】OpenWrt開発入門 LuCI(WebUI)によるネットワーク・Wi-Fi設定

1:Oasisパッケージのダウンロード
お使いのPCでOasisのGitHubにアクセスし、Releasesにある最新版のOasisバージョンをクリックします。(現在の最新はv1.3.2です。

以下の画面はv1.0のものです。最新版の場合、バージョン番号が異なっていますので置き換えて考えてください。

この中で拡張子が「ipk」のパッケージをクリックしてダウンロードします。

2:LuCI経由でOpenWrtデバイスにOasisをアップロードしてインストールする
次はLuCIにアクセスしてメニューバーのSystemからプルダウンメニューのSoftwareをクリックします。

そして「Update lists...」をクリックします。

これにより、リポジトリ情報を更新します。

次に「Upload Package...」をクリックします。

続いて「Browse...」をクリックして先ほどダウンロードしたoasis_1.3.2-r1_all.ipkを選択します。

すると、以下のようにUploadボタンが出現するのでこれをクリックします。

パッケージが認識されると以下の表示がでますので、「Install」を押します。

正常にインストールが完了すると以下の画面になります。

この操作をluci-app-oasisに対しても実施すればインストール完了です。

最後にOpenWrtデバイスを再起動することでOasisが利用できるようになります。

再起動は次のUI画面から実施してください。

各AIサービスの具体的な使用方法は次の節を参照してください。

  1. Ollamaを使用する方法
  2. OpenAIを使用する方法

QA1:oasisパッケージのインストールが失敗する場合

恐らく、依存パッケージのluci-compatまたはlua-curl-v3が予めインストールされていないことが原因である可能性が高いです。

この問題を解決するにはOpenWrtデバイスをインターネットにアクセスできるようにする必要があります。

OpenWrtデバイスがインターネットにアクセスできれば、上記のインストール操作後に必要な依存パッケージをリポジトリから探し出して問題を解決できるようになります。

インターネットにアクセスするためのOpenWrtの設定例は以下の記事を参考にしてください。

  1. LuCIによる無線LANアクセスポイント(AP)設定
  2. LuCIによるルーター設定

QA2:QA1の解決策を実施してもOasisパッケージがインストールできない場合

そのOpenWrtデバイスに対応するリポジトリの中に、luci-compatやlua-curl-v3パッケージが存在しないことが考えられます。

この問題を解決するには、読者ご自身のPC上にOpenWrtのビルドシステム(buildroot)を構築した上で、不足しているluci-compatまたは lua-curl-v3をそのOpenWrtデバイス用に作成する必要があります。

そして、作成したluci-compatやlua-curl-v3を上記で紹介したLuCIを用いてOpenWrtデバイスに アップロードし、追加インストールしてください。

これによって、Oasisパッケージのインストールを阻害する依存関係の問題は解決されます。

読者ご自身のPC上にOpenWrtのビルドシステムを構築してパッケージを作成する手順についてはこの記事の Oasisパッケージを予め入れたOpenWrtイメージを作成してインストールする(例:Raspberry Pi5)を参照してください。

この作業を全てやった上で次のコマンドでluci-compatまたはlua-curl-v3を単体ビルド(作成)することができます。

kamo@kamo:~/openwrt$ make package/luci-compat/compile
kamo@kamo:~/openwrt$ make package/lua-curl-v3/compile

作成されたパッケージは./openwrt/bin/packages/<architecture>/luciとpackagesに入っていますので、 続けてSCPコマンドでOpenWrtデバイスにアップロードしてインストールしてみてください。

その2:コンソールを使用して配布パッケージをインストールする

前提条件:OpenWrtデバイスをインターネットに接続できるようにする
OpenWrtをデバイスにインストールした直後の初期設定ではインターネットに接続できません。

そのため、まずは以下の記事などを参考にOpenWrtデバイスをAPまたはルーター設定にした上でインターネットにアクセスできるようにしてください。

  1. 【第3回】OpenWrt開発入門 UCIコマンドによるネットワーク・Wi-Fi設定
  2. 【第4回】OpenWrt開発入門 LuCI(WebUI)によるネットワーク・Wi-Fi設定

1:OasisパッケージのダウンロードとOpenWrtデバイスへのアップロード
お使いのPCでOasisのGitHubにアクセスして、Releaseをクリックします。

この中で拡張子が「ipk」のパッケージをクリックしてダウンロードします。

ダウンロードしたパッケージをSCPコマンドでOpenWrtデバイスにアップロードします。(以下はWindowsのコマンドプロンプトから SCPコマンドを利用してOpenWrtデバイスにパッケージをアップロードした際のコンソール画面の結果です。)

C:\Users\xxxx\Downloads>scp -O ./oasis_1.3.2-r1_all.ipk root@192.168.1.1:/root
root@192.168.1.1's password:
oasis_1.3.2-r1_all.ipk          100%   13KB  12.8MB/s   00:00

C:\Users\xxxx\Downloads>scp -O ./luci-app-oasis_1.3.2-r1_all.ipk root@192.168.1.1:/root
root@192.168.1.1's password:
luci-app-oasis_1.3.2-r1_all.ipk 100%  111KB 111.2KB/s   00:00

2:OpenWrtのコンソールにアクセスしてパッケージをインストール】
OpenWrtデバイスにパッケージをアップロードできたらSSH接続をしてコンソールにアクセスします。 (以下はWindowsのコマンドプロンプトからOpenWrtデバイスに対してSSH接続をした際の結果です。)

C:\Users\xxxx>ssh root@192.168.1.1
root@192.168.1.1's password:


BusyBox v1.36.1 (2025-01-29 21:37:05 UTC) built-in shell (ash)

    _______                     ________        __
    |       |.-----.-----.-----.|  |  |  |.----.|  |_
    |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
    |_______||   __|_____|__|__||________||__|  |____|
            |__| W I R E L E S S   F R E E D O M
    -----------------------------------------------------
    OpenWrt 24.10-SNAPSHOT, r28421-1a75172721
    -----------------------------------------------------
root@OpenWrt:~#

そして次のコマンドを実行して先ほどアップロードしたパッケージをインストールします。

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install oasis_1.3.2-r1_all.ipk
root@OpenWrt:~# opkg install luci-app-oasis_1.3.2-r1_all.ipk
root@OpenWrt:~# service rpcd reload   # Oasisを利用するために必要な制御モジュール(rpcd)の情報を更新します。(デバイスの再起動でもOK)

これでOasisのインストールが完了しました。

各AIサービスの具体的な使用方法は次の節を参照してください。

  1. Ollamaを使用する方法
  2. OpenAIを使用する方法

QA1:oasisパッケージのインストールが失敗する場合

恐らく、依存パッケージのluci-compatまたはlua-curl-v3が予めインストールされていないことが原因である可能性が高いです。

そのため、OpenWrtデバイスをインターネットにアクセスできるようにする必要があります。

インターネットにアクセスできれば、上記のインストールコマンドの実行後に必要な依存パッケージをリポジトリから探し出して問題を解決できるようになります。

OpenWrtデバイスがインターネットにアクセスするための設定例は以下の記事を参考にしてください。

  1. LuCIによる無線LANアクセスポイント(AP)設定
  2. LuCIによるルーター設定

QA2:QA1の解決策を実施してもOasisパッケージがインストールできない場合

そのOpenWrtデバイスに対応するリポジトリの中に、luci-compatやlua-curl-v3パッケージが存在しないことが考えられます。

この問題を解決するには、読者ご自身のPC上にOpenWrtのビルドシステム(buildroot)を構築した上で、不足しているluci-compatまたは lua-curl-v3をそのOpenWrtデバイス用に作成する必要があります。

そして、作成したluci-compatやlua-curl-v3を上記で紹介したSCPコマンドを用いてOpenWrtデバイスに アップロードし、追加インストールしてください。

これによって、Oasisパッケージのインストールを阻害する依存関係の問題は解決されます。

読者ご自身のPC上にOpenWrtのビルドシステムを構築してパッケージを作成する手順についてはこの記事の Oasisパッケージを予め入れたOpenWrtイメージを作成してインストールする(例:Raspberry Pi5)を参照してください。

この作業を全てやった上で次のコマンドでluci-compatまたはlua-curl-v3を単体ビルド(作成)することができます。

kamo@kamo:~/openwrt$ make package/luci-compat/compile
kamo@kamo:~/openwrt$ make package/lua-curl-v3/compile

作成されたパッケージは./openwrt/bin/packages/<architecture>/luciとpackagesに入っていますので、 続けてSCPコマンドでOpenWrtデバイスにアップロードしてインストールしてみてください。

その3:Oasisパッケージを予め入れたOpenWrtイメージを作成してインストールする(例:Raspberry Pi5)

OpenWrtイメージを作成する実行環境OSについて

OpenWrtイメージを作成するにはUbuntuなどのLinuxディストリビューションが必要です。

もし、読者の方がWindowsやMacなどお持ちでしたらWSLやApple Silicon、Dockerなどの仮想環境上でLinuxを実行することができます。

仮想環境上のLinux(Ubuntu)で次の手順を実施してください。ちなみに、この記事はWSL上に構築したUbuntuでOpenWrtイメージやパッケージを作成した結果を基に書いています。

読者ご自身のPC上で、OasisパッケージをプリインストールしたOpenWrtイメージを作成してデバイスにインストールする方法もあります。

1:OpenWrtのビルドシステム(buildroot)をPC上に構築する
次は最新安定版であるOpenWrt 24.10のイメージ(Raspberry Pi5用)を作成するコマンドです。これらを全て実行することで ビルドシステムの構築が完了します。

kamo@kamo:~$ git clone https://github.com/openwrt/openwrt.git
kamo@kamo:~$ cd openwrt
kamo@kamo:~/openwrt$ git checkout openwrt-24.10
kamo@kamo:~/openwrt$ echo "src-git ai https://github.com/utakamo/oasis.git" >> feeds.conf.default
kamo@kamo:~/openwrt$ ./scripts/feeds update -a
kamo@kamo:~/openwrt$ ./scripts/feeds install -a
kamo@kamo:~/openwrt$ ここでOpenwrtの公式サイトに掲載されている必須パッケージをインストールする
kamo@kamo:~/openwrt$ make menuconfig

1-1:ターゲットデバイスの設定
上記のコマンドが正常に実行されると次のメニューコンフィグが表示されます。

このメニュー項目のTarget Systemを選択します。

そして、今回はRaspberry Pi5用のファームウェアイメージを作成するのでRaspberry Piのターゲットファミリである Broadcom BCM27xxをチェックします。

次にメニュー項目のSubtargetを選択してRaspberry Pi5のハードウェアを意味するBCM2712 boardsにチェックを入れます。

補足:別のRaspberry Piシリーズをターゲットにしたいとき

別のRaspberry Piシリーズ用のOpenWrtイメージを作成したい場合は以下の表を参考にしてください。

モデル ターゲット名
Raspberry Pi1 BCM2708
Raspberry Pi2 BCM2709
Raspberry Pi3 BCM2710
Raspberry Pi4 BCM2711
Raspberry Pi5 BCM2712

チェックを入れ終えると、メニュー項目にTarget Profile (Raspberry Pi 5)が表示されます。 ここまでの操作で特定のハードウェア(今回はRaspberry Pi5)向けにOpenWrtイメージをビルドする準備ができました。

次は必要なパッケージをプリインストール対象に設定する作業に入ります。

1-2:LuCIをプリインストール対象に設定する
まず、メニュー項目のLuCIを選択します。

続いてCollectionsを選択すると次の画面が出てきますので、luciluci-ssl にチェックを入れます。

これでOpenWrtイメージの中にWebUIであるLuCIがプリインストールされるようになります。

1-3:Oasisをプリインストール対象に設定する
次はOasisパッケージをプリインストール対象にする設定です。

メニュー項目のutakamoを選択します。

次にluci-app-oasisをチェックします。(このときに依存パッケージのoasisも自動でチェックが付きます。)

これでOpenWrtイメージを作成する作業は一通り完了です。 コンフィグ画面下部のExitを押してユーザー操作をコンソールに戻してください。

2:ファームウェアの作成
次のコマンドでビルドを開始します。

kamo@kamo:~/openwrt$ make V=s

上記のコマンドの実行が終わった後は、./openwrt/bin/targets/<Target System>/<Sub target>にOpenWrtのファームウェアイメージが格納されています。

この記事ではRaspberry Pi5をターゲットデバイスにOpenWrtイメージを作成しましたので次のようにイメージファイルが作成されています。 OpenWrtのファームウェアイメージは赤字で表示されているファイルの中でfactoryという名前が付いているものです。 (今回はデフォルト設定通りにファイルシステム別で2つのイメージファイルが作成されています。)

kamo@kamo:~/openwrt/bin/targets/bcm27xx/bcm2712$ ls
config.buildinfo                                          openwrt-bcm27xx-bcm2712-rpi-5.manifest
feeds.buildinfo                                           packages
openwrt-bcm27xx-bcm2712-rpi-5-ext4-factory.img.gz         profiles.json
openwrt-bcm27xx-bcm2712-rpi-5-ext4-sysupgrade.img.gz      sha256sums
openwrt-bcm27xx-bcm2712-rpi-5-squashfs-factory.img.gz     version.buildinfo
openwrt-bcm27xx-bcm2712-rpi-5-squashfs-sysupgrade.img.gz

上記のmake V=sが完了した以降はmake package/oasis/compilemake package/luci-app-oasis/compileでパッケージ単体をビルドすることも可能になります。

3:OpenWrtイメージをMicroSDカードに書き込む
最後に上記で作成したOpenWrtイメージをMicroSDカードに書き込みます。

今回はRaspberry Pi Imagerを利用します。 これはRaspberry Pi公式サイトが配布しているRaspberry Pi専用書き込みツールです。 ubuntu・Mac OS・windows版があります。

次のコマンドでインストールして起動します。

kamo@kamo:~$ sudo apt update
kamo@kamo:~$ sudo apt install rpi-imager
kamo@kamo:~$ rpi-imager

無事起動すると以下の画面が表示されますので、「デバイスを選択」をクリックします。

すると、Raspberry Piシリーズの一覧が出ますので「Raspberry Pi5」を選択します。 (※正直な話、この操作はRaspberry Pi OSを書き込むときのものなので、 OpenWrtイメージの書き込みとは関係ないですが一応やってください。)

次に「OSを選択」をクリックして、一番下にある「Use Custom」を選択してください。

エクスプローラーが立ち上がりますので作成したOpenWrtイメージを選択します(※)。

エクスプローラーでOpenWrtイメージが見つからないとき

仮想環境ではない純粋なUbuntu上でOpenWrtイメージの作成とRaspberry Pi Imagerを使用すれば、 「Use Custom」を選択した際に出るエクスプローラで直ぐにイメージファイルを見つけることができます。

しかし、Windowsなどの仮想環境上でUbuntuを利用している場合はホスト環境のデスクトップなどに ファイルをコピーしてから再度Raspberry Pi Imagerを起動してください。これで恐らく容易に見つけられます。

ちなみに、WindowsのWSLでUbuntuを利用していた場合、\\wsl.localhost\Ubuntu\home\<user name>\openwrt\bin\targets\bcm27xx\bcm2712 などのようなパスでアクセスすることができます。

次に「書き込み」を選択してMicro SDカードをクリックします。

そして最後に「次へ」をクリックするとMicro SDカードに対してOpenWrtイメージの書き込みが開始されます。

書き込みが完了したら、Micro SDカードをRaspbbery Pi5に挿入して電源を入れるとOpenWrtデバイスとして使用できるようになります。

OpenWrtのビルドシステムでパッケージを単体作成してインストールする

上記でOpenWrtイメージを作成すると、以降は次のコマンドでoasisとluci-app-oasisパッケージの単体作成ができるようになります。

kamo@kamo:~/openwrt$ make package/luci-compat/compile
kamo@kamo:~/openwrt$ make package/lua-curl-v3/compile

作成されたパッケージは./openwrt/bin/packages/<architecture>/luciとpackagesに入っていますので、 続けてSCPコマンドでOpenWrtデバイスにアップロードしてインストールしてみてください。

なお、上記の例で作成したOpenWrtイメージはRaspberry Pi5のものですが、oasisとluci-app-oasisパッケージ単体であればハードウェア(デバイス)依存は ありません。そのため、ここで作成したoasisとluci-app-oasisはどんなデバイスにでもインストールすることが可能です。

Ollamaを使用する方法

この節では、Ollamaを使用する際の設定やネットワーク構成について説明します。

PCにOllamaをインストールして必要な設定変更を実施する

まず、OpenWrtデバイスと連携するPCにOllamaをインストールして必要な設定変更を実施します。

Ollamaのインストールと設定については以下のリンクを参考に実施してください。

  1. 【Ollama】無料で手持ちPCに自分だけのAI(LLM)を簡単に導入する方法 - ollamaのインストール
  2. 【Ollama】無料で手持ちPCに自分だけのAI(LLM)を簡単に導入する方法 - 宅内ネットワーク(LAN)内で家族もAIを利用できるようにする方法

なお、この記事で紹介する使用例ではLLMモデルとしてgemma2:2bを使用しますので、 Ollamaのインストール後はこのLLMをダウンロードしてください。(上記の記事でもgemma2:2bを例にしています。)

OasisとOllamaが連携できるネットワーク構成パターン

OllamaをインストールしたPCをどのように配置すればOasisと連携できるかをネットワーク構成パターン別に紹介します。

以下のように列挙しましたが、基本的にはどんなネットワーク構成でも連携可能です。

その1: P2P接続 (OpenWrt初期状態)
OpenWrtの初期状態のときのネットワーク構成です。OpenWrtデバイスは有線LANでPCと接続することで 通信が可能です。このとき、PC側にOllamaがインストールされていればOasisと連携できます。

その2:OpenWrtをメインルーターとして利用しているとき
OpenWrtを既にメインルーターとして使用している場合は、OllamaをインストールしたPCを同じLANセグメント所属させればOKです。 そのため、以下の図のようにユーザーが使用するPCにOllamaをインストールしても良いですし、AIサーバー用のPCを用意してそこに Ollamaを入れても良いです。

その3:OpenWrtをAPとして利用しているとき
OpenWrtをアクセスポイント(AP)として使用している場合は、OpenWrtが所属するLANセグメントにOllamaをインストールしたPC を所属させればOKです。そのため、以下の図のようにユーザーが使用するPCにOllamaをインストールしても良いですし、AIサーバー用のPCを用意してそこに Ollamaを入れても良いです。

その4:OpenWrtをサブルーター(二重ルーター)として利用しているとき
OpenWrtをサブルーターとして使用している場合は、メインルーターのLANセグメントまたはサブルーターのLANセグメントに OllamaをインストールしたPCを所属させればOKです。そのため、以下の図のようにユーザーが使用するPCにOllamaをインストールしても良いですし、 AIサーバ用のPCを用意してそこにOllamaを入れても良いです。

OasisがOllamaと連携するための設定

上記で説明した準備を全て実施した後は、Oasisの設定にOllamaの情報を保存することで連携ができます。

次はOpenWrtデバイス(192.168.1.1/24)とOllamaをインストールしたPC(192.168.1.245/24)が接続された状態(つまり、上記のネットワーク構成パターンその1の状態)のときに OpenWrtのOasisとOllamaを連携させるときの設定例です。(この例では使用するLLMモデルをgemma2:2bとしています。)

Oasisの設定はLuCIのメニューバーの「Network」のプルダウンにある「Oasis」をクリックして表示される「General Setting」で実施できます。 (上記の場合、OpenWrtデバイスのLuCIには「http://192.168.1.1」でアクセス可能です。)

以下の「General Setting」タブが表示されたら「Add」ボタンをクリックしてください。

するとAIサービスを使用すために必要な設定項目が出てきますので必要な情報を入力します。

通常、Ollamaとチャットをするにはhttp://<ip address>:11434/api/chatという形式のURLパスをエンドポイントとして 指定する必要があります。そのため、ここではエンドポイントがhttp://192.168.1.245:11434/api/chatと設定しました。

また、APYキーは設定されていませんので無し(未入力)として、LLMモデルをgemma2:2bとしています。

必要な設定を入力したら「Apply」ボタンを押して設定を更新し、「Chat with AI」タブに表示を切り替えてAIに話掛けて見てください。

ここまでの設定が正しければ、AIからの応答が返ってきます。これでOasisを利用してAIが利用できるようになりました。

OpenAIを使用する方法

OpenAIのAPIキーを作成する(※課金が必要)

OpenAIとOasisを連携するにはOpenAIのAPIキーが必要です。そのため、課金をしてOpenAIのサービスプランに加入する必要があります。 試用プランを利用できる場合は一定期間、OpenAIが提供するAIサービスを無料で使用することができます。しかし、基本的にはお金が掛かるということにご注意ください。

サービスプランに加入したら次のOpenAIのページにアクセスしてユーザーログインをします。

次に左上のSearchで「API Keys」で検索して一番先頭に出てきたページをクリックします。

すると、次の画面が表示されますので「Create new secret key」をクリックします。

これでAPIキーの設定画面が表示されますので、APIキーの名前を決めた上で「Create secret key」ボタンを押します。

ここまでの操作が完了すると、APIキーが発行されますので「Copy」ボタンをクリックしてクリップボードにコピーします。 このAPIキーは忘れないように管理してください。忘れたら再発行が必要です。

最後に「Done」ボタンをクリックするとAPIキーを管理するダッシュボードが表示されます。これでOpenAIのAPIキーの作成は一通り完了です。

OasisとOpenAIが連携できるネットワーク構成パターン

OpenAIはインターネットを介して利用できるAIサービスなのでOpenWrtデバイスはインターネット通信ができる状態である 必要があります。

以下はOpenAIを利用する際のネットワーク構成パターンです。一応以下のように列挙していますが、基本的にはインターネットに疎通できる ように配置できればOKです。

その1:OpenWrtをメインルーターとして利用しているとき
OpenWrtデバイスをメインルーターとして利用している場合は、その状態でインターネットにアクセス出来れば良いです。 つまり、その状態でスマホやPCがOpenWrtデバイスが管理するネットワークを経由してネットサーフィンできる状態であればOKです。

その2:OpenWrtをAPとして利用しているとき
メインルーターがインターネット通信ができる状態であり、アクセスポイントとして機能しているOpenWrtがメインルーターの LANセグメントに所属していれば問題ありません。

その3:OpenWrtをサブルーター(二重ルーター)として利用しているとき
これに関してもメインルーターがインターネット通信ができる状態であり、サブルーターのOpenWrtが正しくパケットをルーティング 出来れば問題ありません。

OasisがOpenAIと連携するための設定

上記の例を参考にOpenWrtデバイスがインターネットにアクセスできるようにしたら次はLuCIにアクセスしてOasisの「General Setting」タブに 前節で作成したAPIキーなどの必要な情報を登録します。

※エンドポイントは必ずhttps://api.openai.com/v1/chat/completionsとしてください。

問題なければ「Apply」ボタンを押して設定を適用し、「Chat With AI」タブでAIにメッセージを送信すると応答が返ってきます。

このようにしてOasisとOpenAIのAIサービスを連携させることが可能です。

Oasisの使い方(その他)

チャットのタイトルを変更する

通常、AIとチャットを開始すると一番最初のやり取り内容から自動でチャットのタイトルが設定され、 画面左側のチャット一覧に表示されます。

Oasisでは、各チャット項目のプルダウンメニューを開くことでタイトル変更をすることができます。 タイトル変更はRename項目をクリックします。

ダイアログが表示されますので、好きな名前を入力したら「Rename」ボタンを押してください。

これでチャットのタイトルの名前が変更できました。

チャットデータをダウンロードする

AIとの会話は全てダウンロードすることができます。

Oasisでは、ユーザーとAI間でやりとりされた実際のデータをダウンロードするJSONモードと メッセージ内容だけに絞ったテキストデータのみをダウンロードするTEXTモードの2種類があります。

RAWデータをダウンロードする(JSON)

ダウンロードしたいチャット項目のプルダウンを開いて「Export」をクリックします。

「JSON」ボタンをクリックします。

すると、PCやスマートフォン上にチャットデータがJSONファイルとしてダウンロードされます。

このJSONはユーザーとAI間で実際にやり取りされた内容です。そのため、チャットを開始する際に使用されたシステムメッセージ などもJSONの中に存在します。

このデータ形式は他のユーザーとAIサービスと共通のものです。そのため、主に他のAIプラットフォームへのチャットデータのインポートや 開発時の動作チェックなどで利用できること想定しています。

AIとの会話のみを抽出したテキストデータをダウンロードする(TEXT)

チャット項目のプルダウンを開き、「Export」クリックして表示されるダイアログの「TEXT」ボタンを押します。

すると、次のようにユーザーとAIの間でやり取りされたテキスト文字列だけを記録したファイルがスマートフォンや PC上にダウンロードされます。

TEXTモードは主にAIとのやり取りを残したいときに使用することを想定しています。

おわりに

今回は個人開発したOpenWrt専用AIアシスタントツールのOasisの導入と使い方について紹介しました。

今後、Youtube動画でも紹介したいと思いますのでよろしくお願いします。

なお、この記事の他に「仕組み編」としてOasisを開発する際に必要な知識を中心に取り上げた記事と動画の作成も予定しています。

これらの記事を通して、IOT機器とAIを連携させる方法について紹介したいと思いますのでよろしくお願いします。