Skip to content

最初のエージェントのビルドとデプロイ

このガイドでは、EMQX Agents を使ってイベント駆動型のエージェントを作成する手順を説明します。工場のデバイスからの MQTT メッセージを監視し、各読み取り値をローリング平均と比較して、デバイスの平均温度がしきい値を超えた場合にアラートをパブリッシュする温度異常監視エージェントを構築します。

このガイドの終了時には、以下が揃っています。

  • EMQX Broker に接続された稼働中の EMQX Agents デプロイメント
  • ブローカー用に設定されたコネクター
  • ライブ MQTT イベントに反応するデプロイ済みのエージェント

前提条件

  • 有効なプロジェクトを持つ EMQX Cloud アカウント
  • 稼働中の状態にある EMQX ブローカーのデプロイメント。ブローカーは EMQX Agents のデプロイメントと同じプロジェクトおよびリージョン内である必要があります。
  • テストメッセージをパブリッシュするための MQTT クライアント(例:MQTTX

ステップ 1: EMQX Agents デプロイメントをリクエストする

EMQX Agents は現在プライベートベータとして提供されています。デプロイメントはサポートチケットを提出後、EMQX チームによってプロビジョニングされます。

  1. EMQX Cloud コンソールにログインし、プロジェクトを開きます。

  2. EMQX Agents カードで Join Beta をクリックします。

    agents_project_home

  3. 開いた Support Tickets ページで + New をクリックしてチケットを作成します。

  4. 件名と説明が事前入力されたチケットフォームが開きます。必要に応じて編集し、Confirm をクリックして送信します。

EMQX チームがプロジェクト用のデプロイメントをプロビジョニングし、通知します。デプロイメントが準備できたらクリックして開きます。

ステップ 2: コネクターを追加する

エージェントが MQTT トピックをサブスクライブしたりメッセージをパブリッシュしたりする前に、EMQX Broker を指すコネクターを設定する必要があります。

  1. EMQX Agents デプロイメントで左メニューの Connectors をクリックします。

  2. Available タブで EMQX Broker を見つけて Add をクリックします。

  3. 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 セクションで確認できます。
    • UsernamePassword: EMQX ブローカーのデプロイメントの Access Control -> Authentication で設定した認証情報を入力します。
    • Client ID Prefix: 空欄のままにします。クライアントIDはシステムが自動生成します。
    • このガイドでは Enable TLS/SSL はオフ、Default QoS1 のままにします。
  4. Confirm をクリックします。

コネクターは Added タブに表示され、Description 列にアドレスが表示されます。

agents_add_connector

ステップ 3: チャットを開始しエージェントを説明する

エージェントは会話を通じて構築されます。やりたいことを説明すると、LLM がエージェント定義を生成します。

  1. 左メニューの Chats をクリックし、+ New Chat をクリックします。

  2. 入力エリア左下のコネクターアイコンをクリックします。設定済みのコネクター一覧が表示されます。factory-broker にチェックを入れて、このセッションで利用可能にします。

    agents_select_connector

  3. 入力欄にエージェントの動作を説明します。このガイドでは以下を入力します:

    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.
  4. 右下のドロップダウンから思考モードを選択し、送信ボタンをクリックします。

LLM がリクエストを処理し、エージェントの指示を生成します。ローリング温度履歴を管理するスキルを書き、MQTT トリガーとパブリッシュツールを設定した完全なエージェント定義を組み立てます。

ステップ 4: エージェントのデプロイ

LLM によるエージェント定義の生成が完了すると、チャットの下部に Deploy Agent ボタンが表示されます。

agents_chat_response

  1. Deploy Agent をクリックします。

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

    deploy_agent

  3. エージェントの作成が即座に開始され、エージェント詳細ページに遷移します。

数分後、エージェントのステータスが Running になります。以下の5つのタブ(Overview, Runs, Trigger, Tools, Prompt)でチャットから生成された完全な設定を確認できます:

  • Trigger: 種類は mqtt、トピックは factory/+/+/temperature、QoS は 1factory-broker コネクターに接続。
  • Tools: mqtt.publishalerts/anomaly トピックに制限。
  • Prompt: LLM がこのエージェント用に書いた指示で、各イベントの動作を説明。

agents_agent_detail

ステップ 5: エージェントをテストする

エージェントをトリガーし、動作を確認するためにテストメッセージを連続でパブリッシュします。

  1. MQTT クライアントを開き、同じ認証情報で同じ EMQX Broker に接続します。

  2. factory/+/+/temperature にマッチするトピック、例えば factory/plant-a/line-3/temperature に複数のメッセージをパブリッシュします。JSON ペイロード例:

    json
    {"device_id": "dev-0022", "temp": 75.1}

    温度が70を超える値(例:75.178.380.0)を少なくとも3回パブリッシュします。これによりエージェントはローリング平均を計算し、しきい値超過を検出できます。

  3. EMQX Agents デプロイメントに戻り、エージェントの Runs タブを開きます。

    トリガートピックにマッチした各メッセージで1つの実行が作成され、各実行は success ステータスを示します。

  4. 実行IDをクリックして実行詳細ページを開きます。Timeline にはその実行のイベントシーケンスが表示されます:

    イベント説明
    TRIGGER実行を開始した MQTT メッセージ(トピック含む)
    BUNDLE LOADEDエージェントのスキルと設定がロードされた
    CONTEXT LOADED会話コンテキストが準備された
    TOOLS RESOLVED利用可能なツールが解決された
    SYSTEM INITエージェントのプロンプトが適用された
    TOOL RESULTエージェントが呼び出した各ツールの結果(例:readrun_scriptmqtt.publish
    LLM CALLLLM 呼び出し(入力・出力トークン数付き)
    RESPONSE実行に対するエージェントの最終応答
    RUN END実行の終了ステータス

    ローリング平均がしきい値を超えた場合、mqtt.publish ツールの結果がタイムラインに表示され、Response イベントでアラートのパブリッシュが確認できます。

agents_run_detail_timeline

オプション: MCP コネクターを使ったエージェントの構築

MCP コネクターを使うと、エージェントやチャットが Model Context Protocol(MCP)を通じて外部サービスを利用できます。

Slack などの外部サービスを使うエージェントを構築したい場合は、このオプションのフローを利用してください。このフローはメインの MQTT 温度監視とは異なるプロンプトを使うため、別のチャットを使います。

ステップ 1: MCP コネクターの追加

  1. EMQX Agents デプロイメントで左メニューの Connectors をクリックします。

  2. Available タブで MCP コネクターサービスとして Slack を見つけます。

  3. コネクターカードの Add をクリックします。

  4. Add Connector パネルでコネクター名を入力します(例:ops-slack)。Type は選択したサービスで自動入力され、他の設定項目は不要です。

  5. Confirm をクリックします。

agents_add_mcp_connector

コネクターは Unauthorized ステータスで追加され、EMQX Agents が選択したサービスの認可ポップアップを開きます。外部認可フローを完了してください。認可成功後、Added タブでコネクターのステータスが Authorized に変わります。

ポップアップを閉じるか認可に失敗した場合は、Added タブに戻りコネクターの認可再試行アクションをクリックしてください。

ステップ 2: MCP コネクターを使ったチャットの開始

  1. 左メニューの Chats をクリックし、+ New Chat をクリックします。

  2. 入力エリア左下のコネクターアイコンをクリックします。

  3. Connectors パネルで作成した MCP コネクターを選択します。

    例では MQTT イベントと Slack 通知の両方を使うため、factory-broker と認可済みの Slack コネクターの両方を選択します。

    MCP コネクターは Authorized のものだけ選択可能です。表示されていて選択不可の場合は、Connectors ページに戻り認可を完了または再試行してください。

    agents_mcp_chat_connector_panel

  4. 以下のプロンプトを入力します:

    Listen to MQTT topic /devices/#. If the temperature in the MQTT message
    is above 30, please send a warning message to Slack. Channel: <channel-name>.

    <channel-name> は通知したい Slack チャンネル名に置き換えてください。

  5. 思考モードを選択し、送信ボタンをクリックします。

LLM が選択した MCP コネクターのツールを含むエージェント定義を生成します。

ステップ 3: MCP エージェントのデプロイ

  1. 生成された定義が準備できたら Deploy Agent をクリックします。

  2. 事前入力された Agent NameDescription を確認し、Deploy Agent をクリックします。

  3. エージェント詳細ページを開き、ToolsPrompt タブで生成されたエージェントが選択した MCP コネクターを使用していることを確認します。

ステップ 4: MCP エージェントのテスト

チャットプロンプトで指定した MQTT トピックと Slack アクションに従い、MCP エージェントをテストします。このテストフローはメインの温度異常監視とは異なります。

  1. MQTT クライアントを使い、/devices/# にマッチするトピック(例:/devices/device-001)にテストメッセージをパブリッシュします。

    json
    {"device_id": "device-001", "temperature": 31}
  2. プロンプトで指定した Slack チャンネルに警告メッセージが届いていることを確認します。

  3. EMQX Agents に戻り、実行詳細ページを開きます。MCP コネクター呼び出しは実行タイムラインのツール結果として表示され、最終 Response イベントで結果が要約されます。

次にやること