# クイックスタート：Anthropicノードを使ったFlowの作成

このページでは、Claude 3 Sonnetを使用して故障分類を行い、受信したテレメトリに基づいて修正推奨を生成する方法を示します。これは、スマートファクトリーやビルなどのIoTシステムがデバイスからのステータスメッセージを受信し、それらの問題を自動かつインテリジェントに解釈する実際のシナリオをシミュレートしています。

## シナリオの説明

多くの産業やスマートビルのシナリオでは、IoTデバイスが単一のMQTTメッセージ内で複数のメトリクスを報告します。例えば、電力監視デバイスは複数の回路にわたる電力消費量を1つのペイロードで送信することがあります。

各メッセージはトピック `devices/power_report` にパブリッシュされ、以下を含みます：

- `device_id`：デバイスの識別子
- `circuit_1`、`circuit_2`、`circuit_3` などの複数の数値メトリクス
- `status` や `timestamp` のような数値以外のフィールド

このメッセージ内のすべての数値を合計し（つまり、回路全体の総電力消費量）、LLM（Claude 3 Sonnet）を使って合計値のみを下流処理や課金のために再パブリッシュすることが目的です。

## サンプルメッセージ

```json
{
  "device_id": "pmu-1008",
  "circuit_1": 120.5,
  "circuit_2": 98.7,
  "circuit_3": 103.2,
  "status": "nominal",
  "timestamp": "2025-06-06T10:00:00Z"
}
```

## 期待される出力（Claudeから）

```
322.4
```

この値はすべての数値回路読み取り値の合計です。

## Flowの作成

::: tip 前提条件

有効な **Anthropic APIキー** を用意し、正しいAPIバージョン（例：`2023-06-01`）を設定してください。

:::

1. **Flowデザイナー** ページで **New Flow** ボタンをクリックします。

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

   - ソースパネルから **Messages** ノードをドラッグします。
   - トピックを `devices/power_report` に設定します。
   - **保存** をクリックします。

3. **Anthropic** ノードを追加します。

   - 処理セクションから **Anthropic** ノードをドラッグし、データ処理ノードに接続します。

   - ノードを設定します：
     - **Input**：`payload` を入力します。
     
     - **System Message**：以下のような動的プロンプトを入力できます：
       
       ```
       あなたは電力消費量計算機です。さまざまなキーを含むJSONオブジェクトが入力された場合、すべての数値（例：回路の読み取り値）を合計し、合計値のみを返してください。
       ```
       
     - **Base URL**：デフォルトは https://api.anthropic.com/v1 ですが、Anthropic API形式に対応する任意のベースURLを使用できます。
     
       ::: tip 注意
     
       パブリックアドレスのベースURLを使用する場合は、[NATゲートウェイ](../vas/nat-gateway.md)が有効になっていることを確認してください。プライベートネットワーク上でAnthropic API形式に対応するモデルのベースURLを使用する場合は、[VPCピアリング](../deployments/vpc_peering.md) または [PrivateLink](../deployments/privatelink.md) のいずれかを設定してください。
     
       :::
     
     - **Model**：`claude-3-sonnet-20240620` を選択します。
     
     - **Max Tokens**：`50` を入力します。
     
     - **Anthropic Version**：`2023-06-01` を入力します。
     
     - **API Key**：AnthropicのAPIキーを入力します。
     
     - **Output Result Alias**：`total_power` を入力します。
     
   - **保存** をクリックします。

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

   - シンクセクションから **Republish** ノードをドラッグし、Anthropicノードに接続します。
   - トピックを `devices/power_total` に設定します。
   - ペイロードを `${total_power}` に設定します。
   - **保存** をクリックします。

5. すべてのノードを接続し、右上の **保存** をクリックしてFlowを保存します。

   ![anthropic_node_flow](./_assets/anthropic_node_flow.png)

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

   ![anthropic_node_rule_page](./_assets/anthropic_node_rule_page.png)

## Flowのテスト

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

   Flowを素早くテストするには、デプロイメントメニューの **オンラインテスト** を使ってMQTTクライアントをシミュレートできます。あるいは、[MQTTX](https://mqttx.app/) ツールや実際のMQTTクライアントを使用しても構いません：

   - デプロイメントに接続します。
   - トピック `devices/power_total` をサブスクライブします。

2. テストを開始します。

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

   - **Edit Flow** をクリックし、続けて **Start Test** をクリックして画面下部にテストパネルを開きます。

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

     ```json
     {
       "device_id": "pmu-1008",
       "circuit_1": 120.5,
       "circuit_2": 98.7,
       "circuit_3": 103.2,
       "status": "nominal",
       "timestamp": "2025-06-06T10:00:00Z"
     }
     ```

3. 結果とノードの処理メトリクスを確認します。

   - Flowの正常な実行結果を確認できます。

     <img src="./_assets/anthropic_node_test_result.png" alt="anthropic_node_test_result" style="zoom:70%;" />

   - **オンラインテスト** ページに戻ると、AI生成の要約結果が以下のように受信できます：
   
     > 322.4
     
   - テスト結果が失敗した場合は、エラーメッセージが表示されます。
   
   - **Anthropic** ノードの稼働状況やメトリクスを確認するには、Flowデザイナーでノードをクリックして編集パネルを開き、**Metrics** タブをクリックしてください。
   
     ![anthropic_node_statistics](./_assets/anthropic_node_statistics.png)
