Skip to content

クイックスタート:Geminiノードを使ったFlowの作成

このセクションでは、Geminiノードを用いた実践的なユースケースを通じて、FlowデザイナーでLLMベースのFlowを素早く作成・テストする方法を説明します。

この例では、構造化されたセンサーデータを含むMQTTデバイスのメッセージを処理しつつ、ルーティングのためにclientidを保持するFlowの構築方法を示します。Geminiノードはメッセージペイロードに基づいて応答を生成し、RepublishノードはAIの応答をクライアントごとのトピックdevices/${clientid}/replyに送信するため、各デバイスはカスタマイズされた応答を受け取れます。

シナリオ説明

産業用モニタリングのシナリオでは、各デバイスがJSON形式の構造化センサーデータを定期的にトピックdevices/<device_id>にパブリッシュします。従来のルールベースのアラート(例:温度の閾値超過)では、隠れたパターンや異常指標の組み合わせを見逃す可能性があります。

このFlowはGeminiを活用し、振動、温度、圧力など複数のフィールドの全体的な文脈を分析して、潜在的な機械故障を示唆する複雑な異常を検出します。例えば、振動と温度が同時に高い場合、Geminiはより深刻なリスク(例:ベアリングの過負荷)を推論し、正確で説明可能なアラートを出力します。

  • データ処理:ペイロードからデバイスの読み取り値を抽出し、後続処理で使用できるようにclientid(例:device_1)を公開します。
  • LLMベース処理:全ペイロードをGeminiに送信し、全フィールドを横断的に分析します。
  • メッセージ再パブリッシュ:AI生成のアラートをクライアントごとのトピックdevices/<district_id>/replyにパブリッシュします。

受信メッセージの例(devices/device_1宛て):

json
{
  "vibration": 9.5,
  "temperature": 85,
  "pressure": 1.2
}

期待される再パブリッシュ出力(devices/device_1/reply宛て):

Critical Alert: Simultaneous severe vibration and high temperature detected, indicating an immediate critical equipment malfunction risk.

Flowの作成

前提条件

有効なGemini APIキーを用意してください。

  1. FlowsページでCreate Flowボタンをクリックします。

  2. Messagesノードを追加します。

    • ソースパネルからMessagesノードをドラッグします。
    • トピックをdevices/+に設定します。
    • Saveをクリックします。
  3. Data Processingノードを追加します。

    • ProcessingセクションからData Processingノードをドラッグします。

    • 以下の設定でフォームを入力します。この設定により、clientidが後続ノードで利用可能となり(例:再パブリッシュのトピックで${clientid}を使用可能)、ルーティングに活用できます。

      • Fieldclientid
      • Transform:空欄のまま
      • Aliasclientid
    • Saveをクリックします。

  4. Geminiノードを追加します。

    • ProcessingセクションからGeminiノードをドラッグします。

    • ノードを以下のように設定します:

      • Inputpayloadを入力します。

      • System Message:以下のプロンプトを入力します。

        You are an industrial anomaly detection assistant.
        Analyze the incoming sensor data (vibration, temperature, pressure) as a whole.
        If multiple indicators exceed risk thresholds at the same time, for example, if vibration > 8 and temperature > 80 in the same reading, the combined risk is significantly higher than a single abnormal value. In such cases, generate a precise, high-priority alert.
        Only return a single alert sentence—no extra explanation.
      • Model:デフォルトのgemini-2.0-flashのままで構いません。

      • API Key:GeminiのAPIキーを入力します。

      • Base URL:空欄のままにして、Geminiのデフォルトエンドポイントを使用します。

      • Output Result Aliasai_replyを入力します。

    • Saveをクリックします。

  5. Republishノードを追加します。

    • SinkセクションからRepublishノードをドラッグします。
    • トピックをdevices/${clientid}/replyに設定します。
    • ペイロードを${ai_reply}に設定します。
    • Saveをクリックします。
  6. すべてのノードを接続し、右上のSaveをクリックしてFlowを保存します。

    openai_node_flow

    Flowとフォームルールは相互運用可能です。SQLや関連するルール設定はルールページで確認できます。

    openai_node_rule_page

Flowのテスト

  1. MQTTクライアントをEMQXに接続します。

    Flowのテストを素早く行うには、ダッシュボードのDiagnostic ToolsWebSocket Clientを使ってMQTTクライアントをシミュレートできます。あるいは、MQTTXなどのツールや実際のMQTTクライアントも利用可能です。

    • EMQXサーバーに接続します。
    • 例えばdevices/device_1/replyトピックをサブスクライブします。
  2. テストを開始します。

    • Flowデザイナーで任意のノードをクリックし、編集パネルを開きます。

    • Editをクリックし、続けてStart Testをクリックして画面下部にテストパネルを表示します。

    • Input Simulated Dataをクリックし、以下のメッセージをトピックdevices/device_1にパブリッシュするためにSubmit Testをクリックします。

      json
      {
        "vibration": 9.5,
        "temperature": 85,
        "pressure": 1.2
      }
  3. 結果を確認します。

    • Flowの正常な実行結果が表示されます。

      openai_node_test_result

    • WebSocket Clientページに戻ると、以下のようなAI生成の要約メッセージを受信できます。

      “High-priority alert: Simultaneous high vibration and high temperature detected.”

    • テストが失敗した場合は、エラーメッセージが表示されます。

    • Geminiノードの稼働状況やメトリクスを確認するには、編集ページを閉じてノードをクリックし、編集パネルのOverviewタブを開いてください。

      openai_node_statistics