Create a webhook automation

This feature requires a Pro or Enterprise plan.

このページでは、webhook オートメーション の作成方法について説明します。Slack オートメーションを作成するには、代わりに Slack オートメーションの作成 を参照してください。

大まかに言うと、webhook オートメーションを作成するには、次の手順を実行します。

  1. 必要に応じて、アクセストークン、パスワード、SSH キーなど、オートメーションに必要な機密文字列ごとに W&B シークレットを作成 します。シークレットは、 Team の設定で定義されます。
  2. webhook を作成 して、エンドポイントと認証の詳細を定義し、インテグレーションに必要なシークレットへのアクセスを許可します。
  3. オートメーションを作成 して、監視する イベント と、Weights & Biases が送信するペイロードを定義します。ペイロードに必要なシークレットへのオートメーションアクセスを許可します。

webhook を作成する

Team の管理者は、 Team に webhook を追加できます。

  1. Weights & Biases にログインし、Team の Settings ページに移動します。

  2. Webhooks セクションで、New webhook をクリックします。

  3. webhook の名前を入力します。

  4. webhook のエンドポイント URL を入力します。

  5. webhook に Bearer トークンが必要な場合は、Access token をそれを含む シークレット に設定します。webhook オートメーションを使用すると、Weights & Biases は Authorization: Bearer HTTP ヘッダーをアクセストークンに設定し、${ACCESS_TOKEN} ペイロード変数 でトークンにアクセスできます。

  6. webhook のペイロードにパスワードまたはその他の機密文字列が必要な場合は、Secret をそれを含むシークレットに設定します。webhook を使用するオートメーションを設定すると、名前の先頭に $ を付けることで、ペイロード変数 としてシークレットにアクセスできます。

    webhook のアクセストークンがシークレットに保存されている場合は、次の手順も完了して、シークレットをアクセストークンとして指定する 必要 があります。

  7. Weights & Biases がエンドポイントに接続して認証できることを確認するには:

    1. 必要に応じて、テストするペイロードを指定します。ペイロードで webhook がアクセスできるシークレットを参照するには、名前の先頭に $ を付けます。このペイロードはテスト専用であり、保存されません。オートメーションのペイロードは、オートメーションを作成 するときに設定します。シークレットとアクセストークンが POST リクエストのどこに指定されているかを確認するには、webhook のトラブルシューティング を参照してください。
    2. Test をクリックします。Weights & Biases は、設定した資格情報を使用して webhook のエンドポイントへの接続を試みます。ペイロードを指定した場合は、Weights & Biases がそれを送信します。

    テストが成功しない場合は、webhook の設定を確認して、もう一度お試しください。必要に応じて、webhook のトラブルシューティング を参照してください。

これで、webhook を使用する オートメーションを作成 できます。

オートメーションを作成する

webhook を設定 したら、Registry または Project を選択し、次の手順に従って webhook をトリガーするオートメーションを作成します。

Registry 管理者は、その Registry でオートメーションを作成できます。Registry オートメーションは、今後追加されるものを含め、Registry 内のすべてのコレクションに適用されます。

  1. Weights & Biases にログインします。

  2. Registry の名前をクリックして詳細を表示します。

  3. Registry の範囲に設定されたオートメーションを作成するには、Automations タブをクリックし、Create automation をクリックします。Registry の範囲に設定されたオートメーションは、そのすべてのコレクション(今後作成されるものを含む)に自動的に適用されます。

    Registry 内の特定のコレクションのみを範囲とするオートメーションを作成するには、コレクションのアクション ... メニューをクリックし、Create automation をクリックします。または、コレクションを表示しながら、コレクションの詳細ページの Automations セクションにある Create automation ボタンを使用して、コレクションのオートメーションを作成します。

  4. 監視する Event を選択します。イベントに応じて表示される追加フィールドに入力します。たとえば、An artifact alias is added を選択した場合は、Alias regex を指定する必要があります。Next step をクリックします。

  5. webhook を所有する Team を選択します。

  6. Action typeWebhooks に設定し、使用する webhook を選択します。

  7. webhook のアクセストークンを設定した場合は、${ACCESS_TOKEN} ペイロード変数 でトークンにアクセスできます。webhook のシークレットを設定した場合は、名前の先頭に $ を付けることで、ペイロードでアクセスできます。webhook の要件は、webhook のサービスによって決まります。

  8. Next step をクリックします。

  9. オートメーションの名前を入力します。必要に応じて、説明を入力します。Create automation をクリックします。

Weights & Biases 管理者は、Project でオートメーションを作成できます。

  1. Weights & Biases にログインし、Project ページに移動します。

  2. サイドバーで、Automations をクリックします。

  3. Create automation をクリックします。

  4. 監視する Event を選択します。

    1. イベントに応じて表示される追加フィールドに入力します。たとえば、An artifact alias is added を選択した場合は、Alias regex を指定する必要があります。

    2. 必要に応じて、コレクションフィルターを指定します。それ以外の場合、オートメーションは、今後追加されるものを含め、Project 内のすべてのコレクションに適用されます。

    Next step をクリックします。

  5. webhook を所有する Team を選択します。

  6. Action typeWebhooks に設定し、使用する webhook を選択します。

  7. webhook にペイロードが必要な場合は、ペイロードを作成して Payload フィールドに貼り付けます。webhook のアクセストークンを設定した場合は、${ACCESS_TOKEN} ペイロード変数 でトークンにアクセスできます。webhook のシークレットを設定した場合は、名前の先頭に $ を付けることで、ペイロードでアクセスできます。webhook の要件は、webhook のサービスによって決まります。

  8. Next step をクリックします。

  9. オートメーションの名前を入力します。必要に応じて、説明を入力します。Create automation をクリックします。

オートメーションの表示と管理

  • Registry のオートメーションは、Registry の Automations タブから管理します。
  • コレクションのオートメーションは、コレクションの詳細ページの Automations セクションから管理します。

これらのページのいずれかから、Registry 管理者は既存のオートメーションを管理できます。

  • オートメーションの詳細を表示するには、その名前をクリックします。
  • オートメーションを編集するには、アクション ... メニューをクリックし、Edit automation をクリックします。
  • オートメーションを削除するには、アクション ... メニューをクリックし、Delete automation をクリックします。確認が必要です。

Weights & Biases 管理者は、Project の Automations タブから Project のオートメーションを表示および管理できます。

  • オートメーションの詳細を表示するには、その名前をクリックします。
  • オートメーションを編集するには、アクション ... メニューをクリックし、Edit automation をクリックします。
  • オートメーションを削除するには、アクション ... メニューをクリックし、Delete automation をクリックします。確認が必要です。

ペイロードリファレンス

これらのセクションを使用して、webhook のペイロードを作成します。webhook とそのペイロードのテストの詳細については、webhook のトラブルシューティング を参照してください。

ペイロード変数

このセクションでは、webhook のペイロードの作成に使用できる変数について説明します。

変数 詳細
${project_name} アクションをトリガーした変更を所有する Project の名前。
${entity_name} アクションをトリガーした変更を所有する Entity または Team の名前。
${event_type} アクションをトリガーしたイベントのタイプ。
${event_author} アクションをトリガーしたユーザー。
${artifact_collection_name} Artifact バージョンがリンクされている Artifact コレクションの名前。
${artifact_metadata.<KEY>} アクションをトリガーした Artifact バージョンからの任意のトップレベル メタデータ キーの値。<KEY> をトップレベル メタデータ キーの名前に置き換えます。トップレベル メタデータ キーのみが、webhook のペイロードで使用できます。
${artifact_version} アクションをトリガーした Artifact バージョンの Wandb.Artifact 表現。
${artifact_version_string} アクションをトリガーした Artifact バージョンの string 表現。
${ACCESS_TOKEN} アクセストークンが設定されている場合は、webhook で設定されたアクセストークンの値。アクセストークンは、Authorization: Bearer HTTP ヘッダーで自動的に渡されます。
${SECRET_NAME} 設定されている場合は、webhook で設定されたシークレットの値。SECRET_NAME をシークレットの名前に置き換えます。

ペイロードの例

このセクションには、一般的なユースケースの webhook ペイロードの例が含まれています。この例では、ペイロード変数 の使用方法を示します。

Weights & Biases からリポジトリディスパッチを送信して、GitHub アクションをトリガーします。たとえば、on キーのトリガーとしてリポジトリディスパッチを受け入れる GitHub ワークフローファイルがあるとします。

on:
repository_dispatch:
  types: BUILD_AND_DEPLOY

リポジトリのペイロードは、次のようになります。

{
  "event_type": "BUILD_AND_DEPLOY",
  "client_payload": 
  {
    "event_author": "${event_author}",
    "artifact_version": "${artifact_version}",
    "artifact_version_string": "${artifact_version_string}",
    "artifact_collection_name": "${artifact_collection_name}",
    "project_name": "${project_name}",
    "entity_name": "${entity_name}"
    }
}

レンダリングされたテンプレート文字列の内容と配置は、オートメーションが設定されているイベントまたはモデルバージョンによって異なります。${event_type} は、LINK_ARTIFACT または ADD_ARTIFACT_ALIAS のいずれかとしてレンダリングされます。以下に、マッピングの例を示します。

${event_type} --> "LINK_ARTIFACT" or "ADD_ARTIFACT_ALIAS"
${event_author} --> "<wandb-user>"
${artifact_version} --> "wandb-artifact://_id/QXJ0aWZhY3Q6NTE3ODg5ODg3""
${artifact_version_string} --> "<entity>/model-registry/<registered_model_name>:<alias>"
${artifact_collection_name} --> "<registered_model_name>"
${project_name} --> "model-registry"
${entity_name} --> "<entity>"

テンプレート文字列を使用して、Weights & Biases から GitHub Actions およびその他のツールにコンテキストを動的に渡します。これらのツールが Python スクリプトを呼び出すことができる場合は、Weights & Biases API を使用して、登録されたモデル Artifacts を利用できます。

このペイロードの例は、webhook を使用して Teams チャンネルに通知する方法を示しています。

{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"summary": "New Notification",
"sections": [
  {
    "activityTitle": "Notification from WANDB",
    "text": "This is an example message sent via Teams webhook.",
    "facts": [
      {
        "name": "Author",
        "value": "${event_author}"
      },
      {
        "name": "Event Type",
        "value": "${event_type}"
      }
    ],
    "markdown": true
  }
]
}

テンプレート文字列を使用して、実行時に Weights & Biases データをペイロードに挿入できます(上記の Teams の例に示すように)。

Slack API ドキュメント で強調表示されている手順に従って、Slack アプリを設定し、受信 webhook インテグレーションを追加します。Bot User OAuth Token で指定されたシークレットが、Weights & Biases webhook のアクセストークンであることを確認してください。

以下は、ペイロードの例です。

{
    "text": "New alert from WANDB!",
"blocks": [
    {
            "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": "Registry event: ${event_type}"
        }
    },
        {
            "type":"section",
            "text": {
            "type": "mrkdwn",
            "text": "New version: ${artifact_version_string}"
        }
        },
        {
        "type": "divider"
    },
        {
            "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": "Author: ${event_author}"
        }
        }
    ]
}

webhook のトラブルシューティング

Weights & Biases App UI を使用してインタラクティブに、または Bash スクリプトを使用してプログラムで webhook のトラブルシューティングを行います。新しい webhook を作成するとき、または既存の webhook を編集するときに、webhook のトラブルシューティングを行うことができます。

Team 管理者は、Weights & Biases App UI を使用して webhook をインタラクティブにテストできます。

  1. Weights & Biases Team の Settings ページに移動します。
  2. Webhooks セクションまでスクロールします。
  3. webhook の名前の横にある水平方向の 3 つのドキュメント(ミートボールアイコン)をクリックします。
  4. Test を選択します。
  5. 表示される UI パネルから、表示されるフィールドに POST リクエストを貼り付けます。 Webhook ペイロードのテストのデモ
  6. Test webhook をクリックします。Weights & Biases App UI 内で、Weights & Biases はエンドポイントからの応答を投稿します。 Webhook のテストのデモ

デモンストレーションについては、ビデオ Weights & Biases での Webhook のテスト をご覧ください。

このシェルスクリプトは、トリガーされたときに Weights & Biases が webhook オートメーションに送信するリクエストと同様の POST リクエストを生成する 1 つの方法を示しています。

以下のコードをコピーしてシェルスクリプトに貼り付け、webhook のトラブルシューティングを行います。次の独自の値(バリュー)を指定します。

  • ACCESS_TOKEN
  • SECRET
  • PAYLOAD
  • API_ENDPOINT
webhook_test.sh