ブラウザで Python AI エージェントが動く話
最近見つけた Mozilla AI のwasm-agents-blueprintがなかなか面白かったので、触ってみました。
ブラウザ上で直接 Python AI エージェントを実行していて、興味深いです。
動かすとこんな感じです。

どういうこと?
今までの AI アプリは、だいたいこんな感じでした:
フロントエンド → バックエンドサーバー → OpenAI API → レスポンス
でも、これは:
ブラウザ(Pyodide + Python) → OpenAI API → レスポンス
サーバーがありません。これがどういうことか説明してみます。
Pyodide って何?
Pyodideは、Python を WebAssembly(WASM)でブラウザ上で動かすやつで、こんな感じです。
- ブラウザで Python コードが実行できます
- NumPy、Pandas、scikit-learn とかの有名どころも使えます
- クライアント側のコード(HTTP や JavaScript)の中でmicropipってのを使って PyPI からパッケージをインストールできます
で、OpenAI Agents ライブラリもブラウザで動くみたいです。すごい。
実際のコードはこんな感じです
初期化部分:
// Pyodideを読み込み
pyodide = await loadPyodide();
// micropipでopenai-agentsをインストール
await pyodide.runPythonAsync(`
import micropip
await micropip.install("openai-agents")
`);
エージェント実行部分:
from agents import Agent, Runner, ModelSettings
import os
# APIキーを設定
os.environ['OPENAI_API_KEY'] = "your-api-key"
# エージェントを作成
agent = Agent(
name="Assistant",
instructions="あなたは親切なアシスタントです",
model_settings=ModelSettings(extra_args={"timeout": 30})
)
# 実行
result = await Runner.run(agent, "こんにちは!")
これがブラウザで動きます。JavaScript 関数の中で Python コードを実行して、OpenAI API を直接呼び出してます。
ちょっと気になったこと
インストールは openai-agents なのに、インポートは agents になってます:
# インストール時
await micropip.install("openai-agents")
# インポート時
from agents import Agent, Runner, ModelSettings
これは Python パッケージの命名規則で、PyPI パッケージ名とインポート名が違うのはよくある話らしいです(例:pip install scikit-learn → import sklearn)。
何がいいん?
サーバーレスがかなりサーバーレス
今までの「サーバーレス」は、サーバー管理をクラウドにお任せするってことでした。でもこれは本当にサーバーがありません。
- バックエンドサーバー不要
- 静的サイトとしてデプロイできます
- CDN で配信するだけで OK です
プライバシーが良い感じ
ユーザーのプロンプトがサーバーを経由しません。ブラウザから直接 OpenAI API を呼び出すので、良くも悪くもサービス提供者のサーバーにデータが残りません。
レスポンスが早い
サーバーを経由しないので、ネットワークの往復が減ります。
開発しやすい
Python の AI ライブラリがそのままブラウザで使えます。JavaScript で頑張らなくても済みます。
でも課題もある
パフォーマンス面
- 初回読み込み時間: Pyodide とライブラリのダウンロードで数十 MB(ライブラリによりますが)
- メモリ使用量: ブラウザのメモリをけっこう使います
- 実行速度: WebAssembly ですがネイティブ Python より遅いと思います
開発・運用面
- API キー管理: クライアントサイドで API キーを扱うのはかなり制約が大きいです
- エラーハンドリング: ネットワークエラーの処理が面倒かもしれません
- デバッグ: ブラウザで Python デバッグするのは慣れが必要そうです
使いやすさ
一般ユーザーに API キーの設定や Ollama (Local で LLM を動かせて今回のサンプルコードも対応してる) の導入をお願いするのは、なかなかハードルが高いです。
今どんなところで使えそう?
使えそうなケース
開発者・研究者向け
- AI エージェントの試作
- 教育・学習用途
- 技術デモ
社内利用
- 社内の AI 実験環境
- 研究開発チーム向けツール
しんどそうなケース
一般ユーザー向けサービス
- IT リテラシーが高くないと使えません
- API キー管理が個人に委ねられます
大規模・商用サービス
- セキュリティ要件が厳しいです
これからどうなりそう?
この技術が本領発揮するのは、ブラウザがネイティブで AI をサポートするようになったときかもしれません。
ブラウザネイティブ AI
Chrome、Edge、Safari などが、ローカル LLM の API を提供するようになったら、こんな感じで良さそうです。
- API キー不要
- オフライン動作
- プライバシー完璧
- 高速レスポンス
WebGPU を使った高速推論ができるようになれば、ブラウザ上での AI 処理がもっと実用的になりそうです。
まとめ
今の wasm-agents-blueprint は、技術デモとしては面白いですが、実用的なサービスにするにはまだ課題が多いです。
作者も「素晴らしいアイデアか面白いハックかまだ分からない」と言ってます。
でも、将来的には、ブラウザの AI 機能が充実してきたら、クライアントサイドでの AI 処理が普通になる可能性もあります。
そういう意味で、今のうちから触っておくと面白いかもしれません。
Discussion