✉️

分散型AIサービス Olas の AI Mech ハンズオン

2024/08/26に公開

分散型AIサービスである Olas が提供するAIマーケットプレイス AI Mech を実際に使用してみたので、その手順をハンズオン形式でご紹介します。
本記事では、AI Mechにメッセージを送信し、レスポンスを得るまでの一連の流れを解説します。

ちなみに、本記事の内容は Valory による解説動画とリポジトリを大いに参考にしていますので、ぜひ覗いてみてください。

https://www.youtube.com/watch?v=r6oxG4I6IEI&list=PLXztsZv11CTcE0-zbe-SpnhmAl-Od4PaD&pp=iAQB

https://github.com/valory-xyz/mech-client

AI Mechとは

https://olas.network/services/ai-mechs

Mechは、自動で動作するサービスで、ブロックチェーン上のリクエストを受け取り、それに応じた処理をオフチェーンで実行します。これらの処理には少額の支払いが伴います。リクエストは通常、LLM(大規模言語モデル)に関するもので、その他の一般的な処理も含まれます。リクエストのメタデータはIPFSに保存され、そのハッシュが支払いを管理するスマートコントラクトに記録されます。Mechは、あなたのアプリケーションのために必要なときに使える頭脳のようなものと考えることができます。(上記 Olas のページより)

ざっくりと言えば、Olas が提供するインフラを利用している LLM 群に対して、トークンを支払うことで、タスク実行を依頼できるサービスです。

事前準備

AI Mech にメッセージを送信するためには、いくつかの準備が必要です。

  • Wallet の作成

AI Mech を利用する際の支払いはトークンで行うため、支払い用の Wallet を準備します。
今回は Metamask で作成した Wallet を使用します。

  • xDAI の入金

ブロックチェーンには Gnosis を使用するため、支払いには xDAI を利用します。
詳細は以下のリンクを参照してください。

https://docs.gnosischain.com/about/tokens/xdai

今回は ETH -> DAI -> xDAI という手順で xDAI を準備しました。

  • ETH -> DAI: INTMAX Wallet を使ってスワップ
  • DAI -> xDAI: Gnosis の Bridge を使ってブリッジ

また、メッセージ送信に必要な xDAI の量は 0.05 xDAI 程度で十分です。

mech-clientのインストール

次に、AI Mech にメッセージを送信するためのクライアント mech-client をインストールします。
ここでは Python のパッケージ管理ツール Poetry を使用します。

https://github.com/valory-xyz/mech-client

poetry mech-example
cd mech-example
poetry shell
poetry add mech-client

次に、mech-client に今回使用する Wallet の情報を登録します。
以下のコマンドで、YOUR_PRIVATE_KEY に Wallet のプライベートキーを設定して実行します。

echo -n YOUR_PRIVATE_KEY > ethereum_private_key.txt

AI Mechにメッセージを送信

インストールが完了したら、AI Mech にメッセージを送信してみましょう。

まず、Gas Limit を事前に上げておきます。
mech-client はデフォルトの Gas Limit として 100000 = 1 GWei を設定しています。
ただ、Gnosis の Gas Price が 1 GWei を超えることがあるため、設定を変更します。

Gnosis の Gas Price は以下の Gas Tracker から確認できます。

https://gnosisscan.io/gastracker

Gas Limit を含む mech-client の設定は configs/mechs.json に記載されています。
PyPi からインストールした mech-client の設定を変更するには、対応する環境変数を設定する必要があります。詳細は以下を参照してください。

https://github.com/valory-xyz/mech-client/tree/main#chain-configuration

Gas Limit を 200000 に変更するには、以下のコマンドを実行します。

export MECHX_GAS_LIMIT=200000

それでは、AI Mech にメッセージを送信してみましょう。
interact コマンドを使用して、AI Mech のエージェントにメッセージを送信します。構文は以下の通りです。

mechx interact <prompt> <agent_id> [OPTIONS]

各オプションの概要は以下の通りです。

オプション 利用目的 コマンドでの設定値
--key トークンを支払う Wallet のアドレスを記載したテキストファイルのパスを設定する。 --key ./ethereum_private_key.txt
--tool Agent が利用するツールを指定する。 --tool openai-gpt-4
--chain-config 利用する Chain を指定する。 --chain-config gnosis
--confirm どこからレスポンスがあれば処理をリクエストを終了とするかを指定する。 --confirm on-chain

オプションの詳細はこちら。

https://github.com/valory-xyz/mech-client/tree/main#generate-mech-requests

今回利用する Agent が利用できるツールは、IPFS にアップロードされているテキストから確認できます。

https://gateway.autonolas.tech/ipfs/f01701220a46e7056a0736a547cc83bbd81458f571eca5d08835278e80a5d8f51eeb0c162

実行コマンド
mechx interact "write a short poem of Tokyo, Japan" 6 --key ./ethereum_private_key.txt --tool openai-gpt-4 --chain-config gnosis --confirm on-chain
実行結果
Chain configuration: gnosis
Sending request...
Prompt uploaded: https://gateway.autonolas.tech/ipfs/f017012208100026830ef672fcc7de974ddd8ba535565c686c2381860ff3c167c024c1bab
Transaction sent: https://gnosisscan.io/tx/0xfc23c8134ebaa04069d12438e6c1acd4150bd509f896123370df80a96ab28a16
Waiting for transaction receipt...
Created on-chain request with ID 29308410473289109545571513413105334958194730283405825217473026771068923712621
Waiting for Mech response...
Data arrived: https://gateway.autonolas.tech/ipfs/f0170122083c649aeea4a8cf486beb5149e45232ce46224b1803ac5b818bbfe2c0a4174c7
Data from agent: {'requestId': 29308410473289109545571513413105334958194730283405825217473026771068923712621, 'result': "In Tokyo's heart, where neon lights do bloom,\nUnder the watchful gaze of the moon.\nSkyscrapers standing, tall and grand,\nIn this vibrant, fast-paced land.\n\nCherry blossoms dance in springtime air,\nA sight of beauty beyond compare.\nThe Sumida river, a silver thread,\nWhere ancient and modern blend and tread.\n\nSushi, ramen, a culinary quest,\nIn Tokyo, only expect the best.\nThe whispers of the past in Meiji Shrine,\nIn every corner, history intertwines.\n\nA city that never truly sleeps,\nWhere tradition its sacred vigil keeps.\nTokyo, Japan, in splendor and might,\nA beacon burning in the night.", 'prompt': 'write a short poem of Tokyo, Japan', 'cost_dict': {}, 'metadata': {'model': None, 'tool': 'openai-gpt-4', 'params': {}}}

Data from agent: が表示されれば成功です!

今回実行されたトランザクションは以下のGnosis Scanから確認できます。

https://gnosisscan.io/tx/0xfc23c8134ebaa04069d12438e6c1acd4150bd509f896123370df80a96ab28a16

GitHubで編集を提案
Accenture Japan (有志)

Discussion