Closed9

Webアクセス用AIエージェントプラットフォーム「MultiOn」を試す

kun432kun432

公式サイト

https://www.multion.ai/

公式ドキュメント

https://docs.multion.ai/welcome

MultiOnへようこそ

MultiOnは、AIのための運動皮質層であり、何百万ものAIエージェントを同時に実行する準備ができている自然言語コマンドを使用して、ウェブ上での自律的なアクションを可能にします。

なぜMultiOnなのか?

MultiOn は、自律的なウェブエージェントを簡単に構築できます:

  • リモートセッションとネイティブプロキシサポートにより、トリッキーなボット保護をナビゲートします。
  • Chrome ブラウザ拡張機能により、ローカルでエージェントと対話することができます。
  • クラス最高のフルページ構造化 LLM データスクレイピング。
  • 並列エージェントによる無限のスケーラビリティ。

主にブラウザ操作を行ってくれるエージェントサービス、という感じっぽい。

kun432kun432

料金はこちら

https://www.multion.ai/api/pricing

プラン リクエスト数 リクエスト単価 年間最低利用額
Basic 0〜999,999 $0.04 -
Premium 2,000,000〜9,999,999 $0.025 $50,000
Custom 10,000,000以上 要問合せ -
Retrieve APIのみ - $0.01 -

料金はリクエスト数に基づいて計算されます。APIリクエストとは通常、MultiOnがウェブページ上で実行するアクションを意味します。

例えば、Amazonで本を買うには、5回のリクエストが必要となります。

  1. Amazonで書籍を検索する。
  2. 書籍のリンクをクリックする。
  3. カートに追加。
  4. チェックアウト。
  5. 購入。

なるほど、完全にリクエスト数で決まるのと、プランによって多少単価が変わる、というかボリュームディスカウントな感じっぽい。あとRetrieve APIってのがよくわからないけど、これはまあおいおい。

1回の処理で複数回叩くような場合はその回数分だけ発生するってことね。

無料ってのはないかな?

2024/09/10追記

こちらにあった

https://platform.multion.ai/pricing

なるほど、無料だと以下で使える様子。

  • 40クエリ/日
  • Basic AI Mode(有料だとFastModeになる)
  • Standard Access(おそらく標準機能のみ、という意味だと思われる)
  • Basic Support(有料だとサポートが優先で行われる)
kun432kun432

Quick Startに従ってやってみる

https://docs.multion.ai/quick-start

まず、Developer Consoleにアクセスして、アカウント作成の上、APIキーを作成する。

https://app.multion.ai/

続きはColaboratoryで。まずパッケージインストール。ランタイム再起動が必要になる。

!pip install multion
!pip freeze | grep multion
multion==1.3.7

サンプルどおりに、Hackernewsのトップ記事のトップコメントを拾ってくるプロンプトをURLとともに投げる。

from google.colab import userdata
from multion.client import MultiOn

multion = MultiOn(api_key=userdata.get('MULTION_API_KEY'))
browse = multion.browse(
    cmd="Hackernewsのトップ記事のトップコメントを教えて。",
    url="https://news.ycombinator.com/"
)
print("Browse response:", browse)

結果

Browse response: message='The top comment on the top article on Hacker News is by the user "left-struck". The comment reads:\n\n"I have an extremely similar setup for my 3yr old. He has his NFC cards and select from stuff we find suitable. The TV comes on, one episode runs, TV goes off. He\'s not fighting over the remote and he has agency. And he\'s certainly not stumbling his way through YouTube on a tablet. No ads. Very nice for him. It\'s not yet necessary to track his usage. But I\'m well prepared for it. Home Assistant works very well for these cases. I\'m sad that Netflix&Co. do not publicize their urls/intents/etc. for smart TVs. I\'d be happy to call an episode directly. This setup therefore needs to run through my own media server and that\'s why I sometimes have to resort to pirate-y means, even though I have licenses to watch it."\n' status='DONE' url='https://news.ycombinator.com/item?id=41479141' screenshot='' session_id='fc555cf9-d7ed-464f-a57f-1f4a036153b1' metadata=Metadata(step_count=4, processing_time=19, temperature=0.2)

Hacker Newsのトップ記事に対するトップコメントは、「left-struck」というユーザーによるものです。コメントは次の通りです。「3歳の子供のために、非常に似た設定をしています。子供にはNFCカードがあり、私たちが適切だと考えるものから選択できます。テレビがオンになり、1つのエピソードが再生され、テレビがオフになります。子供はリモコンを奪い合うこともなく、自分で操作しています。そして、子供はタブレットでYouTubeをさまよっているわけでもありません。広告もありません。彼にとってはとても良いことです。まだ、彼の利用状況を追跡する必要はありません。しかし、私はそのための準備は万端です。Home Assistantはこのようなケースに非常に適しています。Netflixやその他の企業がスマートテレビ用のURL/インテント/その他を公表していないのは残念です。私は直接エピソードを呼び出せたら嬉しいのですが。そのため、この設定では、自分のメディアサーバーを経由する必要があります。そのため、視聴するライセンスを持っているにもかかわらず、海賊版のような手段に頼らざるを得ないことがあります。

実際のHackernewsの記事通りに取得できていた。

多分今はFreeプランだと思うけど、かかる料金としてはこんな感じっぽい。4リクエストぐらい使用されたってことかな?下の$200は上限とかかな?

2024/09/10追記

しばらく経つと下のグラフも更新されていた。なので、おそらくだけども、無料の場合、

40クエリ/日

かつ、1ヶ月の上限が$200ってことではないかなと思われる。

kun432kun432

MultiOnはChrome拡張経由でも利用できるらしい。

https://docs.multion.ai/learn/browser-extension

Chrome拡張はこちら
https://chromewebstore.google.com/detail/multion/ddmjhdbknfidiopmbaceghhhbgbpenmm

拡張をインストールするとこんな感じになる。おそらくこれがホームスクリーンっぽい感じ。

左のホバーメニューからはチャットとかができるっぽい

で、APIを有効にする(っていうこの意味自体がよくわからないのだけども)には、拡張のアイコンをクリックして、Enable APIが有効になっていればいいらしい。

んー、ここから何をすればいいのか、さっぱり想像がつかない。

ちょっとドキュメントを色々見てみたところ、ここが少しイメージができた。

https://docs.multion.ai/learn/sessions

エージェントセッションとは?


refered from https://docs.multion.ai/learn/sessions

エージェントセッションは、特定のユーザクエリまたはワークフローに対するエージェントとのインタラクションのステートフルなインスタンスです。 各エージェントセッションは完全に分離されており、複数の連続したステップを実行するために使用できます。 セッションがコマンドで作成されると、エージェントはコマンドを完了する計画を生成します。

"browse"では、アクションが完了するかエージェントが追加入力を要求するまで、エージェントは自動的にステップします。" step session" を使用すると、計画を洗練させ、各ステップでエージェントを助けるために、追加情報を提供することができます。

  • セッションのライフサイクル: エージェントのセッションは、入力URLと指示プロンプトで開始されたときに始まり、閉じられるかセッションの有効期限が切れたときに終わります。 セッションは、非アクティブのままでも10分間存続します。
  • ローカルモード: デフォルトでは、セッションは仮想ヘッドレスブラウザを使用してクラウドでリモートホストされます。 ローカルモードでは、サーバーにホストされたエージェントが、インストールされた Chrome ブラウザ拡張機能と対話します。 詳細はこちらをご覧ください。
  • セキュリティ:リモートモードでは、各エージェントセッションは完全に分離され、データと対話の整合性を保護します。

訳注: 上記の"browse"と"step session"ってのはおそらくMultiOn SDKのメソッドっぽくて、ドキュメントではリンクが張られているのだがリンク切れになっている・・・

とりあえず、上記のローカルモードという箇所を読む限り、以下のように推測される

  • デフォルト、例えば、Quick StartのPythonコードでやったようなものは、クラウド側でヘッドレスブラウザが起動し、そこを経由して操作が行われる
  • ローカルモードは、どうやらクラウドとChrome拡張と連携して、操作が行われる。

もしかするとコードで実行するとChrome拡張経由でブラウザが動いたりするのかな?

とりあえず以下のコードを実行してみた

from google.colab import userdata
from multion.client import MultiOn

multion = MultiOn(api_key=userdata.get('MULTION_API_KEY'))
create_response = multion.sessions.create(
    url="https://news.ycombinator.com/",
    local=True
)

ApiError: status_code: 402, body: {'detail': {'message': 'Please subscribe to the API plan for the access. Please enable at platform.multion.ai/usage', 'code': 'PAYMENT_NOT_ADDED'}}

おっと、これはどうやら有料じゃないとダメっぽいな・・・

とりあえずブラウザから適当に入力してみる。

おおお、ブラウザが操作されて、該当のページが表示された。

上記は最終的な結果だけなのでわかりにくいと思うけども、実際はチャットの内容にあわせて、逐次ブラウザ操作が行われる。チャットはこんな感じで出力されている。

まずAmazon.co.jpにアクセス

検索欄に検索キーワードを入力

ページをスクロールダウンして表示されてる本のタイトルを抽出

本のタイトルをリストアップ

なるほど、やっと使い方がわかった。

kun432kun432

設定を見る限りは、おそらく実際の操作から手順を記録するということも可能だと思われる。

kun432kun432

料金に出てきていたRetrieve API

https://docs.multion.ai/learn/retrieve

Retrieveは、あらゆるウェブページから構造化されたデータを取得できる機能です。従来のウェブスクレイピングスクリプトを作成することなく、情報を収集し、要約するために使用します。

単独で使用することも、エージェントセッションの一部として使用することもできます。 Retrieve をステップと組み合わせることで、サイトをナビゲートし、ページ全体のデータを取得できる、真に自律的なウェブ調査エージェントを作成できます。

これは要はFirecrawlとかJina Reader的なものと思って良さそう。多分こんな感じで使うんだと思うが、支払い設定しないと使えない。。。

from multion.client import MultiOn

multion = MultiOn(api_key=userdata.get('MULTION_API_KEY'))

retrieve_response = multion.retrieve(
    cmd="Wikiepdiaのオグリキャップのページから、タイトル、父の名前、母の名前、母の父の名前、を抽出して。",
    url="https://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%B0%E3%83%AA%E3%82%AD%E3%83%A3%E3%83%83%E3%83%97",
    fields=["title", "sire", "dam", "damsire", "comments"]
)
data = retrieve_response.data

が、Playgroundだとこんな感じで設定だけ入れたら、ブラウザが表示されて、項目が抽出された。抽出結果としてはいまいちなんだけども、全般的に日本語弱そうな印象を受けるので、しょうがないのかも。

なお、スクショなんかも取れるみたい。

kun432kun432

あと、クラウド経由だと認証等が難しくなるのだけども、あらかじめ設定しておくことができるっぽい。以下のサービスに対応している模様。

kun432kun432

まとめ

すっかり忘れていたのだけど、実は以下について調べたときに名前だけは上がっていた

https://zenn.dev/kun432/scraps/f8f641c2aa3dbb

上にもある通り、ブラウザをAPIで操作するプラットフォームってのは結構ある。この手のプラットフォームに期待することは多分こういうところになってくるのではないかと思う

  • スクレイピング
    • スクレイピングはスクレイピング先の負荷なども踏まえて、制御できる必要がある
    • 場合によってはブロックされた場合でも他IPでラウンドロビンできる
    • これらがAPIで利用できる
  • ブラウザ操作
    • スクレイピングのような単純なURLアクセスではなく、ブラウザ操作を行いたい
    • これらがAPIで利用できる
  • データ抽出
    • スクレイピングやブラウザ操作の結果、必要なデータなどを取得
    • これらがAPIで利用できる

上記はデータ取得という観点でリストアップしたけれども、テスト用途で使いたいというケースも当然あると思う。

で、概ねAPIで操作することになるのだけども、アクセス先が想定とは異なるページや挙動を見せるようなケースでは対応できないということは起こり得るだろうし、いろんなサイトに合わせてAPI操作はもちろん、サイト側の変更に追従するってのもなかなか大変だろうと思う。

自然言語+エージェントを使うことで、こういった課題を解決できるというのが、MultiOnの強みであり、他のブラウザAPI操作プラットフォームとの違いになってくるのだろうと思う。

また、MultiOnの公式サイトやブログを見ると、ビジネス用途だけではなく、パーソナルアシスタントの方向性が強調されている。

https://www.multion.ai/about

私たちは、AIエージェントが職場の生産性やコーディングスキルを持つ人のためだけのものではなく、私たちの日々の活動や交流に役立つことを望んでいます。 そのために、私たちは最新のAI開発を、さまざまな領域や日常的なユースケースにおいて、消費者や企業のための実用的なアプリケーションに変換します。

https://www.multion.ai/blog/multion-building-a-brighter-future-for-humanity-with-ai-agents

マルチオンのミッションは、すべての人のために人間の主体性を解き放ち、高め、日々の退屈な作業から解放し、好きなことに集中できるようにすることだ。 AIエージェントを通じて、人間の可能性を増幅させ、個人が本当に好きなことに集中できるようにすることを目指している。 マルチオンはAI製品によって、人類の並列化を解き放つことを目指している: タスクが同時並行的に実行され、もはや一人の人間の時間という直線的な制約に縛られない世界を想像してみてほしい。

チームは、パーソナルAIアシスタントがエリートの贅沢品ではなく、すべての人にとって当たり前のものになる世界を思い描いている。 JARVISのような存在や、『HER』に見られるような深いつながりの夢は、もはや銀幕の中だけの話ではない。 ChatGPTは、このSFを現実に変え、チャットだけでなく行動するAIの時代を切り開く使命を担っている;

パーソナルアシスタントは、スマートスピーカーが目指したところだと思うのだが、現時点で当初期待されていた成果を得られていないと思うし、そもそもパーソナルな市場としてどうなのか?という印象も持っている。今後どうなるのかは興味深いところ。

このスクラップは2ヶ月前にクローズされました