Soracom

Users

ドキュメント
Home ドキュメント SORACOM Flux (Public beta) Getting Started

SORACOM Harvest Files にアップロードした画像を GPT-4o で物体検知する

SORACOM Harvest Files にアップロード (ファイル作成およびファイル更新) した JPEG 形式の静止画に写っている「青いシャツを着た人」を GPT-4o で検知して、その人数を Slack に通知する SORACOM Flux アプリ (以下、Flux アプリ) を作成します。

操作を始める前に準備が必要です (クリックして確認してください)

(1) SORACOM アカウント (オペレーター) を作成する

SORACOM アカウント (オペレーター) を作成します。また、支払い方法の登録も必要です。詳しくは、STEP 1: SORACOM アカウント (オペレーター) を作成する を参照してください。

(2) Slack のアカウントを用意する

Slack のアカウントを用意してください。

準備完了

ステップ 1: Flux アプリを作成する

  1. ユーザーコンソールにログイン し、Flux アプリを作成するカバレッジタイプを選択します。

    たとえば、グローバルカバレッジの Harvest Files に静止画をアップロードしたときに Flux アプリが実行されるようにする場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  2. [メニュー][SORACOM FLUX][Flux アプリ] の順にクリックします。

  3. [+新しい Flux アプリを作成する] をクリックします。

  4. 以下の項目を設定します。

    項目説明
    [名前]Flux アプリの名前を入力します。
    [概要]Flux アプリの概要を入力します。

  5. [作成] をクリックします。

    Flux アプリが作成され、SORACOM Flux Studio の [STUDIO] タブが表示されます。

ステップ 2: SORACOM Harvest Files イベントソースと連結するチャネルを作成する

  1. SORACOM Flux Studio の [STUDIO] タブで、[+チャネルを作成する] をクリックします。

    「新しいチャネルを作成」画面が表示されます。

  2. [SORACOM Harvest Files][次へ] の順にクリックします。

    この Flux アプリでは、Harvest Files にアップロード (ファイル作成または更新) したときに、メッセージをチャネルに送信するように設定します。

    SORACOM Harvest Files イベントソースから、チャネルに送信されるメッセージについて詳しくは、SORACOM Harvest Files イベントソース を参照してください。

  3. 以下の項目を設定します。

    項目説明
    [名称]チャネルの名前を入力します。
    [概要]チャネルの概要を入力します。
    [イベントソース設定]

    Harvest Files でどのような変化が起きたときに、このチャネルにメッセージを送信するか、という条件を設定します。

    項目説明
    [有効]この条件の有効/無効を設定します。
    [ファイルパス (前方一致)]Harvest Files のファイルパスを入力します。ここで指定したパスと前方一致したファイルがイベントの対象です。
    [イベントタイプ]

    ファイルの変化の種類を選択します。ここでは、アップロード (ファイル作成または更新) を対象にするために、[ファイル作成][ファイル更新] にチェックを入れます。

    • [ファイル作成]: ファイルが新規にアップロードされた。
    • [ファイル更新]: 既存のファイルと同名のファイルがアップロードされた。
    • [ファイル削除]: ファイルが削除された。

  4. [チャネルを作成する] をクリックします。

    イベントソースに連結したチャネルが作成され、チャネルの詳細画面が表示されます。

  5. Esc キーを押すか、[×] (閉じる) をクリックします。

    SORACOM Flux Studio の [STUDIO] タブに戻ります。

ステップ 3: AI アクションとアウトプットを送信するチャネルを作成する

この Flux アプリでは、イベント (Harvest Files に JPEG 形式のファイルをアップロードしたこと) にあわせてリクエスト (青いシャツを着た人の人数を質問する) を生成 AI に送信するように設定します。具体的には、AI アクションと、AI アクションのアウトプットを送信するチャネル (例: AI Output チャネル) を作成します。

  1. ステップ 2: SORACOM Harvest Files イベントソースと連結するチャネルを作成する で作成したチャネルをクリックします。

  2. [アクション][+アクションを追加] の順にクリックします。

    「新しいアクションを作成」画面が表示されます。

  3. [AI][OK] の順にクリックします。

    「新しい AI アクションを作成する」画面が表示されます。

  4. 以下の項目を設定します。

    項目説明
    [名前]AI アクションの名前を入力します。
    [概要]AI アクションの概要を入力します。
    [有効]AI アクションを有効化する場合は「有効」にします。
    [CONDITION]

    AI アクションの実行条件を設定します。ここでは、Harvest Files に JPEG 形式の静止画 (contentTypeimage/jpeg) をアップロードしたことを実行条件にするために、[アクションの実行条件]payload.contentType == "image/jpeg" を入力します。

    • SORACOM Harvest Files イベントソースからチャネルに送信されるデータは Harvest Files イベントソース を参照してください。

    • アクションに関連するチャネルからのメッセージを扱う場合、payload. のように指定します。イベントやメッセージの値を使ってアクションを実行する条件を指定する場合は、[アクションの実行条件] の入力欄の下に表示される [] をクリックして説明を確認してください。

  5. 続けて、以下の項目を設定します。

    項目説明
    [CONFIG]

    AI アクションで利用する AI モデルや、AI モデルに送信するプロンプトなどを設定します。

    • [AI モデル]: 「Azure OpenAI (GPT-4o)」を選択します。

    • [プロンプト]: 以下の内容を入力します。

      添付の画像で、全体の人数と青いシャツを着た人の人数を教えて下さい。何人映っていますか?必ずJsonで、
      {"people":1, "people_with_blue_shirts": 1}
      のようなフォーマットで返してください。
      
    • [AI からの返答を JSON 形式にする]: チェックを入れます。

    • [AI に画像を読み込ませる]: チェックを入れて、入力欄に ${payload.presignedUrls.get} を入力します。

    [OUTPUT]

    AI アクションのレスポンスを、別のチャネルに送信するかどうかを設定します。

    • [アクションのアウトプットを別のチャネルに送信する]: 「有効」にします。
    • [送信先チャネル]: [新しくチャネルを作成する] を選択して、[チャネル名] に「AI Output」を入力します。

  6. [作成する]をクリックします。

    AI アクションが作成され、チャネルの詳細画面の [アクション] タブに戻ります。

  7. Esc キーを押すか、[×] (閉じる) をクリックします。

    SORACOM Flux Studio の [STUDIO] タブに戻ります。

ステップ 4: Slack 通知アクションを作成する

この Flux アプリでは、生成 AI のレスポンスに応じて、Slack にメッセージを送信するように設定します。具体的には、Slack 通知アクションを作成します。

  1. ステップ 3: AI アクションとアウトプットを送信するチャネルを作成する で作成されたチャネル (例: AI Output) をクリックします。

    チャネルの詳細画面が表示されます。

    ステップ 3 で作成されたチャネルのイベントソースは変更できません。

    チャネルの詳細画面の [イベントソース] タブに表示されたエントリポイントに、JSON 形式のデータを POST すると、任意のタイミングで Slack 通知アクションを実行できます。

  2. [アクション][+アクションを追加] の順にクリックします。

  3. [Slack 通知][OK] の順にクリックします。

    「新しいアクションを作成: Slack 通知」画面が表示されます。

  4. 以下の項目を設定します。

    項目説明
    [名前]Slack 通知アクションの名前を入力します。
    [概要]Slack 通知アクションの概要を入力します。
    [有効]Slack 通知アクションを有効化する場合は「有効」にします。
    [CONDITION]

    Slack 通知アクションの実行条件を設定します。ここでは、people が 0 より大きい値であることを実行条件にするために、[アクションの実行条件]payload.output.people > 0 を入力します。

    • ステップ 3 で作成した AI アクションのアウトプットを送信するチャネルに送信されるデータは、AI アクション を参照してください。
    • アクションに関連するチャネルからのメッセージを扱う場合、payload. のように指定します。イベントやメッセージの値を使ってアクションを実行する条件を指定する場合は、[アクションの実行条件] の入力欄の下に表示される [] をクリックして説明を確認してください。

  5. 続けて、以下の項目を設定します。

    項目説明
    [CONFIG]

    Slack 通知アクションで送信するメッセージや、Incoming Webhook インテグレーションの Webhook URL を設定します。

    • [URL]: 通知先の Slack チャンネルに紐づいた Webhook URL を入力します。Webhook URL を発行する手順について詳しくは、Slack App の Incoming Webhook の Webhook URL を発行する を参照してください。

    • [PAYLOAD]: 以下の内容を入力します。

      人が ${payload.output.people} 人います。そのうち、青いシャツの人が ${payload.output.people_with_blue_shirts} 人います!!
      
      <${event.payload.presignedUrls.get}|画像>
      
    • Slack 通知アクションが追加されたチャネルのデータ (この例では、AI アクションの実行結果) を扱う場合は、${payload.output.people} のように指定します。
    • Flux アプリが起動するトリガーのイベントソースのデータ (この例では、Harvest Files へアップロードした JPEG 形式の静止画) を扱う場合は、event. を付与して、${event.payload.presignedUrls.get} のように指定します。
    [OUTPUT]

    Slack 通知アクションのレスポンスを、別のチャネルに送信するかどうかを設定します。

    • [アクションのアウトプットを別のチャネルに送信する]: 「無効」にします。

  6. [作成する] をクリックします。

    Slack 通知アクションが作成され、チャネルの詳細画面の [アクション] タブに戻ります。

(動作確認) JPEG 形式の静止画を Harvest Files にアップロードして Slack にメッセージが届くことを確認する

「青いシャツを着た人」が映っている JPEG 形式の静止画を Harvest Files にアップロードして動作を確認しましょう。

JPEG 形式の静止画を Harvest Files にアップロードする

ステップ 2: SORACOM Harvest Files イベントソースと連結するチャネルを作成する で指定した条件を満たすように、Harvest Files にファイルをアップロードします。Harvest Files にファイルをアップロードする手順については、SORACOM Harvest Files にファイルをアップロードする を参照してください。

SORACOM Relay も利用できます

メディア転送サービス SORACOM Relay を使用すると SORACOM に接続した RTSP 対応ネットワークカメラの映像から動体検知した静止画を SORACOM Harvest Files に保存できます。

Slack 通知が届いていることを確認する

[URL] に入力した Webhook URL に紐づくチャンネルに、メッセージが届いていることを確認してください。

  • Harvest Files にアップロードした JPEG 形式の静止画に、人が映っていた場合にだけメッセージが届きます。

  • それ以外の場合は、メッセージが届かないことを確認してください。たとえば、以下のような場合はメッセージは届きません。

    • Harvest Files に PNG 形式の静止画をアップロードした。
    • Harvest Files にアップロードした JPEG 形式の静止画に、人が映っていない。

Flux アプリの実行履歴を確認する

SORACOM Flux Studio の [実行履歴] タブでも、実行履歴を確認できます。

  1. ユーザーコンソールにログイン し、Flux アプリを作成したカバレッジタイプを選択します。

    たとえば、グローバルカバレッジに Flux アプリを作成した場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  2. [メニュー][SORACOM FLUX][Flux アプリ] の順にクリックします。

  3. 作成した Flux アプリをクリックします。

  4. [実行履歴] をクリックします。

    チャネルごとに、[MESSAGE][CONTEXT]、そのチャネルから実行されたアクションの [入力][出力] が表示されます。詳しくは、実行履歴 (ログ) を参照してください。

SAM ユーザーの権限について

SORACOM では、アクセス管理 (SORACOM Access Management: SAM) を利用して、権限を制限したアカウント (SAM ユーザー) を作成できます。

SAM ユーザーが、このページの説明に従って Flux アプリを体験する際に必要な SAM パーミッション権限の例は以下のとおりです。

{
  "statements": [
    {
      "api": "Flux:*",
      "effect": "allow"
    },
    {
      "effect": "allow",
      "api": "FileEntry:listFiles",
      "condition": "pathVariable('path') matches 'flux'"
    },
    {
      "effect": "allow",
      "api": "FileEntry:getFile",
      "condition": "pathVariable('path') matches 'flux/.'"
    },
    {
      "effect": "allow",
      "api": "FileEntry:putFile",
      "condition": "pathVariable('path') matches 'flux/.*'"
    }
  ]
}

この例は、わかりやすさを優先した設定です。そのため権限をさらに減らしても、このページの操作が必ずしもできなくなるとは限りません。お客様の要件にあわせて権限を設定してください。