はじめに
P2P通信・AI搭載・ブラウザ・IOT制御・ゲーム対応を1つにまとめた多機能プラットフォームをTauri×Rustで作りました。
今回はそれを作った理由、実装上の工夫、苦労したこと、そして今後やりたいことなどをまとめてみます。
目次
何を作ったか
-> 多機能なプラットフォームにAIを載せたもの
- p2pによるAIを搭載
- ブラウザー
- IOT制御アプリ
- ゲームプラットフォームとして
なぜ作ったか
- いまコンピューターの性能はおおよそ頭打ちになったと考えた(半導体のサイズ的に)
では今のリソースをどう有効に活用するか、その解決として - IOTの製品を制御するのに巨大なリソースがなくても扱える
- サーバーがなくても通信やファイルの入手ができる
- 独自のプロトコルで通信を最適化できる(UDP、rawsocket)
- 感情や状況判断などの演算に応用するため
- ブラウザーを自作することでforkしやすくしたかった(webviewだけど)
採用した技術
- tauri(v.2.5.1)現時点最新, rust, node周り
- rawsocket, tokioとか
ブラウザーを作るにはtauriで十分なものを作れる
tauriについてはこちら(後で入れます、ちょっと時間かかります)
プログラムについて
- forward型のAIを採用(自作のAIコードだがまぁまぁな性能がでた)
hebbianを使い,勾配を周りに分け、発散防止。そして中間層をいくらでも増やせる - 犯罪や、不正の操作に対する対処を書くノードがするようになっている
- LLMなどを取り込んで”AIのラッパー”の役割をもたせるのも1つの目的
- SIMD演算によりデータの種類からformat分岐させる(未実装)
- WEB通信や画像を全ホストで処理して弱いPCにもリソースを分けれる(未実装)
*生成自体には向いていない
--- protocolの構造 ---
IP
PORT
SESSION_ID: IPを秘匿しながら通信を確立
FORMAT: data_vec, dataのデータタイプを入れる。 感情が[0, 2]とか
DATA_VEC: データのベクトルを入れる
DATA: データを入れる
感想
詰まったところ
たくさんあるけど、使用自体に苦しめられたことは以下
tauriのversionによって使用変わりすぎ
- jsonの使えるものが変わっている node関係も変わっている
セキュリティが硬い - security的にiframeの埋め込みができないなど
file formatの問題 - rustでファイルをダウンロードするロジックのときはbase64を経由(テキストに変換したほうが安定する)
nodeのよくわからん仕様 - tauriの引数はnode側がキャメルケースしか許さない さらに引数名も合わせないといけないのでrustもキャメルで書くのが楽
今後の展望
- いまは多数ホストでの有効性とかは調べていないし、AIもまだ改良するところがある。
- 署名付きすることや、現在は動いていない”session_id”,もうまく使えればいい
- hookとかAPI出してCLIにも使えるようにすれば汎用性が高まる
- 今はとりあえず動いてるが、整理したい部分が多い(面倒で放置中)
以下githubなど
github-OSAI-browser:ソースコード公開中
itch-OSAI-browser:実行ファイルを配布中
Hacker Newsでの反響と課題
このプロジェクトは Hacker News (Show HN) にも投稿しました。
技術的な質問や批判的な意見もありましたが、普通のwebviewとの差別化といった視点は今後の改善に活かせると感じています。
初投稿ということもあり、表現が拙い部分もありましたが、興味を持って見に来てくれた人は200人近く。海外でも「P2Pブラウザ × AI」に可能性を感じてくれたことは励みになりました。
最後に
いまはOSAI-browserでやってきたが、”OSAI”自体が被っているので改名を考えている
何がともあれここまで動いて面白い
LLMバンザイ