ブラウザ上でLLMエージェントを実行する

ほとんどのAIアシスタントはデータセンターに存在します。それらにはAPIキーやサーバーが必要であり、リクエストごとに料金が発生します。

私は異なるものを作りました。

LiquidAI LFM2.5モデル(230Mおよび350M)をファインチューニングし、サーバーなし、クラウドコストなしで、完全にブラウザ上で動作するようにしました。

目標は、ウェブページと一緒に配信できるほどモデルを軽量化することでした。

このモデルは特定の製品に関する事実を記憶するのではなく、パターンを学習します。一つの小さなモデルがあれば、再学習させることなく、コーヒーショップや食料品店、その他のあらゆる店舗を運営できます。

モデルができること

  • タスクに対して適切なツールを選択する
  • 引数やアイテムIDを正しく接続する
  • 「2番目のもの」や「1ダース」といった指示を理解する
  • 検索されたテキストを使用して質問に回答する
  • 情報が不足している場合に回答を拒否する
  • 話題が脱線したときに会話を元に戻す

構築方法

  • 8つのツールセット(search、add_to_cart、checkoutなど)を固定
  • RAGを独立したパイプラインではなく、一つのツールとして扱う
  • 正確性を高めるために文法制約付きデコーディング(grammar-constrained decoding)を適用
  • 18のインタラクション・レシピから合成データセットを作成
  • 単一の16GB GPUを使用し、3,000万トークンでファインチューニング

トレーニングの焦点 私はブロックリストではなく、振る舞いに基づいてモデルをトレーニングしました。単語を禁止するのではなく、丁寧に会話を誘導するように教えました。

なぜこれが重要なのか

  • プライバシー:データがデバイスから外に出ることがない
  • オフライン利用:インターネット接続なしで動作する
  • コスト:推論コストがゼロ
  • アクセシビリティ:複雑なUIを音声で操作可能にする

モデルは小さいですが、有用です。「巨大なモデルがタスクを実行できるか」と問うのはやめましょう。「デバイス上で有用性を維持しつつ、モデルをどこまで小さくできるか」を問うべきです。

Demo: https://lajosbencz.github.io/frontend-agent/ Code: https://github.com/lajosbencz/frontend-agent/ Source: https://dev.to/lajosbencz/running-an-llm-agent-entirely-in-your-browser-5foe


Lajos Benczは、3億5,000万パラメータの言語モデルをファインチューニングし、完全にウェブブラウザ上で動作するようにしました。これにより、静的なページを、APIキー、サーバー、クラウドベースの推論コストを必要としない自律的なショッピングアシスタントへと変貌させました。その結果、プライバシーを最優先し、オフラインでも動作可能なAIが実現しました。このAIは、各ドメインごとに再学習させることなく、コーヒーショップや食料品店、あるいは同様のカタログを持つあらゆる店舗を管理できます。

なぜブラウザでLLMを実行するのか

ほとんどのAIアシスタントはデータセンターに存在します。各クエリはインターネット経由で送信され、APIに到達し、リクエストごとの料金が発生します。この構成ではユーザーデータが漏洩する可能性があり、ネットワークが必要で、請求額もすぐに膨らみます。モデルをクライアント側に移動することで、これらの問題を解消できます。データはローカルマシンに留まり、ネットワークが切断されてもアシスタントは動作し、推論コストはゼロになります。

モデルの構築方法

  • モデルの選択 – LiquidAI LFM2.5の230Mおよび350Mバリアントから開始。そのサイズにより、一般的なウェブページでのダウンロードが可能です。
  • ツールセット – 8つのユーティリティ(search、add_to_cart、checkoutなど)をエージェントにハードコード。モデルは、どのツールを呼び出すか、アイテムIDなどの引数をどのように渡すかを学習します。
  • ツールとしてのRAG – Retrieval-Augmented Generation(RAG)を単なる呼び出し可能なツールの一つとして扱い、アーキテクチャを簡素化しました。
  • 文法制約付きデコーディング – デコーダーを有効なツール呼び出し構文に制限することで、不正な出力を大幅に削減しました。
  • 合成データ – 18のインタラクション・レシピ(例:「ドーナツを2ダース追加して」)を、単一の16GB GPUで生成された3,000万トークンのデータセットに変換しました。
  • 振る舞いに焦点を当てたトレーニング – ブロックリストの代わりに、ファインチューニングでは会話の誘導を重視しました。話題から外れた雑談を丁寧に軌道修正したり、情報が不足している場合に拒否したり、「2番目のもの」のような曖昧な参照を確認したりするようにしました。

ファインチューニングは単一の16GB GPUで実行されました。

エージェントができること

  • ツール選択 – クエリに検索、カートの更新、またはその他の機能が必要かどうかを判断します。
  • 引数の処理 – アイテム識別子、数量、修飾語(例:「1ダース」)を解析し、それらを正しく渡します。
  • 参照解決 – 「2番目のもの」といったフレーズを、検索されたリスト内の適切なアイテムに関連付けます。
  • RAGによる回答 – 関連するテキストを取得し、回答に組み込みます。
  • 適切な拒否 – 必要な情報がない場合、ハルシネーション(幻覚)を起こすのではなく、回答を拒否します。
  • 会話の誘導 – 話の流れを壊すことなく、話題から外れた発言をタスクへと引き戻します。

ライブデモ(https://lajosbencz.github.io/frontend-agent/)では、エージェントが音声またはテキスト入力を使用して、閲覧からチェックアウトまでのシンプルなeコマースフローを処理する様子を確認できます。

限界と反論

(このセクションは意図的に空白のままにしています)

今後の注目点

コードベース(https://github.com/lajosbencz/frontend-agent)は公開されており、コミュニティがツールを追加したり、合成レシピを拡張したり、あるいはハイブリッドなアプローチを試したりすることを歓迎しています。

要点: 中規模なLLMをスタンドアロンなエージェントへとファインチューニングすることで、機能的かつプライバシーを保護するAIをウェブページに直接埋め込むことが可能になります。サーバーは不要、費用もかからず、ユーザーのデバイスからデータが外部に送信されることもありません。