最初のエージェントのビルドとデプロイ
このガイドでは、EMQX Agents を使ってイベント駆動型のエージェントを作成する手順を説明します。工場のデバイスからの MQTT メッセージを監視し、各温度測定値をローリング平均と比較して、デバイスの平均温度が閾値を超えた場合にアラートをパブリッシュする温度異常監視エージェントを構築します。
このガイドの最後には、以下を実現しています。
- EMQX Agents のデプロイメントが稼働し、EMQX ブローカーに接続されている
- ブローカー用のコネクターが設定されている
- ライブの MQTT イベントに反応するエージェントがデプロイされている
前提条件
- アクティブなプロジェクトを持つ EMQX Cloud アカウント
- 稼働中の状態にある EMQX ブローカーのデプロイメント。ブローカーは EMQX Agents のデプロイメントと同じプロジェクトおよびリージョン内にある必要があります。
- テストメッセージをパブリッシュするための MQTT クライアント(例:MQTTX)
ステップ 1: EMQX Agents のデプロイメントをリクエストする
EMQX Agents は現在ベータ版です。デプロイメントはサポートチケットを提出後、EMQX チームによってプロビジョニングされます。
EMQX Cloud コンソールにログインし、プロジェクトを開きます。
EMQX Agents カードで Join Beta をクリックします。

開いた Support Tickets ページで + New をクリックしてチケットを作成します。
チケットフォームが開き、件名と説明が事前入力されています。必要に応じて編集し、Confirm をクリックして送信します。
EMQX チームがプロジェクト用のデプロイメントをプロビジョニングし、通知します。デプロイメントが準備できたら、それをクリックして開きます。
ステップ 2: コネクターを追加する
エージェントが MQTT トピックをサブスクライブしたりメッセージをパブリッシュしたりする前に、EMQX ブローカーを指すコネクターを設定する必要があります。
EMQX Agents のデプロイメントで、左メニューの Connectors をクリックします。
+ Add Connector をクリックします。
Add Connector パネルで以下を設定します:
- Type: 自動的に
EMQX Brokerが入力されます。 - Name: 例として
factory-brokerなど任意の名前を入力します。 - Address: ブローカーのアドレスを
host:port形式で入力します。必ずポート番号を含めてください。例:暗号化なしの MQTT ならbroker.example.com:1883、TLS ならbroker.example.com:8883。アドレスは EMQX ブローカーのデプロイメントの概要ページにある MQTT Connection Information セクションで確認できます。 - Username と Password: EMQX ブローカーの Access Control -> Authentication で設定した認証情報を入力します。
- Client ID Prefix: 空欄のままにします。クライアントIDはシステムが自動生成します。
- このガイドでは Enable TLS/SSL はオフ、Default QoS は
1のままにします。
- Type: 自動的に
Confirm をクリックします。
コネクターがリストに表示され、Description 列にアドレスが表示されます。

ステップ 3: チャットを開始しエージェントを説明する
エージェントは対話を通じて構築します。やりたいことを説明すると、LLM がエージェント定義を生成します。
左メニューの Chats をクリックし、+ New Chat をクリックします。
入力欄の左下にあるコネクターアイコンをクリックします。設定済みのコネクター一覧が表示されます。
factory-brokerをチェックして、このセッションで使用可能にします。
入力欄にエージェントにやらせたいことを記述します。このガイドでは以下を入力してください:
I want to monitor MQTT temperature events on the topic factory/+/+/temperature. Each message payload is JSON, for example: {"device_id": "dev-0042", "temp": 95.4} The agent should track the last 3 readings per device. If the rolling average exceeds 70, publish an alert to alerts/anomaly.右下のドロップダウンから希望の思考モードを選択し、送信ボタンをクリックします。
LLM がリクエストを処理し、ローリング温度履歴を保持するスキルを作成し、MQTT トリガーとパブリッシュツールを設定した完全なエージェント定義を生成します。
ステップ 4: エージェントをデプロイする
LLM がエージェント定義の生成を終えると、チャットの下部に Deploy Agent ボタンが表示されます。

Deploy Agent をクリックします。
ダイアログが表示され、Agent Name と Description が事前入力されています。必要に応じて編集し、Deploy Agent をクリックします。

エージェントの作成が即座に開始され、エージェント詳細ページに遷移します。
数分後、エージェントのステータスが Running になるのを確認できます。5つのタブ(Overview, Runs, Trigger, Tools, Prompt)にチャットから生成された完全な設定が表示されます:
- Trigger: 種類は
mqtt、トピックはfactory/+/+/temperature、QoS は1、factory-brokerコネクターに接続。 - Tools:
mqtt.publish、トピックはalerts/anomalyに限定。 - Prompt: LLM がこのエージェント用に書いた指示で、各イベントに対する動作を説明。

ステップ 5: エージェントをテストする
一連のテストメッセージをパブリッシュしてエージェントをトリガーし、動作を確認します。
MQTT クライアントを開き、同じ認証情報で同じ EMQX ブローカーに接続します。
factory/+/+/temperatureにマッチするトピック、例えばfactory/plant-a/line-3/temperatureに複数のメッセージをパブリッシュします。ペイロードは JSON 形式です:json{"device_id": "dev-0022", "temp": 75.1}70 を超える温度で少なくとも3回パブリッシュしてください。例:
75.1、78.3、80.0。これでエージェントはローリング平均を計算し、閾値超過を検知できます。EMQX Agents のデプロイメントに戻り、エージェントの Runs タブを開きます。
トリガートピックにマッチした各メッセージが1つの実行(run)を作成し、各実行は success ステータスを示します。
実行IDをクリックして詳細ページを開きます。Timeline にはその実行のイベントの流れが表示されます:
イベント 説明 TRIGGER実行を開始した MQTT メッセージ(トピック含む) BUNDLE LOADEDエージェントのスキルと設定が読み込まれた CONTEXT LOADED会話コンテキストが準備された TOOLS RESOLVED実行で使用可能なツールが解決された SYSTEM INITエージェントのプロンプトが適用された TOOL RESULTエージェントが呼び出した各ツールの結果(例: read、run_script、mqtt.publish)LLM CALLLLM の呼び出し、入力・出力トークン数付き RESPONSE実行の最終応答 RUN END実行の終了ステータス ローリング平均が閾値を超えた場合、タイムラインに
mqtt.publishツールの結果が表示され、Response イベントでアラートがパブリッシュされたことが確認できます。

次にやること
- EMQX Tables コネクターを追加 して、エージェント内から時系列データのクエリや書き込みを行う。
- エージェントの管理とレビュー で実行履歴の監視、タイムラインの検査、動作更新による再デプロイを行う。
- コネクターの更新 で認証情報の変更や追加ブローカーへの接続を設定する。