Watson Discovery で外部 Webhook エンリッチ・ソリューションを作成します
このチュートリアルでは、サンプル・アプリケーションを使用して、 Watson Discoveryを使用して外部 Webhook エンリッチ・ソリューションを作成できます。
IBM Cloud
このチュートリアルは、管理対象デプロイメントを使用している場合にのみ実行してください。
以下のイメージは、外部エンリッチ構成フローを示しています。

次の図は、外部エンリッチ・プロセス・フローを示しています。

外部エンリッチ API について詳しくは、 外部エンリッチ API を参照してください。
学習目標
チュートリアルを終了する前に、以下のサンプル・アプリケーションの使用方法を学習します。
Regex
: 正規表現を使用したエンティティー抽出、文書分類、およびセンテンス分類の場合Granite
:watsonx.ai Graniteモデルを使用して電子メールからエンティティを抽出しますSlate
: Watson Discoveryのエンティティー抽出ワークスペースからエクスポートされたラベル付きデータで微調整された watsonx.ai Slate モデルを使用したエンティティー抽出の場合。
期間
このチュートリアルは、約2時間で完了します。
前提条件
-
始める前に、 IBM Cloud で有料アカウントをセットアップして、 Watson Discovery プラス・プランまたはエンタープライズ・プランのインスタンスを取得する必要があります。
プラス・プランを使用すると、このチュートリアルを無料で完了できます。プラス・プランでは、30 日間の試用版が無料で提供されます。 ただし、サービスのプラス・プラン・インスタンスを作成するには、有料アカウント (クレジット・カードの詳細を指定するアカウント) が必要です。 有料アカウントの作成について詳しくは、 アカウントのアップグレードを参照してください。 プラス・プラン Discovery サービス・インスタンスを作成するには、 IBM Cloud カタログの Discovery リソース・ ページに移動し、プラス・プラン・サービス・インスタンスを作成します。
Plusプランの利用を停止し、料金を支払いたくない場合は、30日間のトライアル期間が終了する前に、Plusプランのサービスインスタンスを削除してください。
-
サンプル・アプリケーションとデータをダウンロードするには、 Discovery doc-tutorial-downloads リポジトリーにアクセスできる必要があります。
Graniteアプリケーションの追加前提条件
-
Watson Machine Learningのインスタンスをセットアップします。 料金プランについて詳しくは、 Watson Machine Learningを参照してください。
-
IBM Cloud用の API キーを作成します。 詳しくは、 API キーについてを参照してください。
Slate アプリケーションの追加の前提条件
-
Watson Machine Learningのインスタンスをセットアップします。 料金プランについて詳しくは、 Watson Machine Learningを参照してください。
-
Cloud Pak for Data 4.7.x 以降のインスタンスをセットアップし、 Watson Studio および Watson Machine Learningをインストールします。
-
IBM Cloud用の API キーを作成します。 詳しくは、 API キーについてを参照してください。
-
IBM Cloud Pak for Data のAPIキーを作成します。 詳細については、IBM Cloud Paks を参照してください。
Regex-正規表現を使用したエンティティー抽出、文書分類、およびセンテンス分類
このサンプルでは、Webhook エンリッチを適用するためのインフラストラクチャー環境として IBM Cloud Code Engine を使用します。 ただし、他の環境にアプリケーションをデプロイすることはできます。
-
Webhook エンリッチ・アプリケーションを IBM Cloud Code Engineにデプロイします。
-
IBM Cloud Code Engine でプロジェクトを作成します。 詳しくは、 プロジェクトの作成を参照してください。
-
プロジェクトに秘密を作成します。 詳しくは、 秘密の作成を参照してください。
このシークレットには、以下のキーと値のペアが含まれている必要があります。
WD_API_URL
: Discovery インスタンスの API エンドポイント URL。WD_API_KEY
: ご使用の Discovery インスタンスの API キー。WEBHOOK_SECRET
: アプリケーションでの認証に使用できる、要求と共に渡す鍵。 例えば、purple_unicorn
などです。
-
サンプル・リポジトリー・ソース・コードからアプリケーションをデプロイします。 詳しくは、 リポジトリー・ソース・コードからのアプリのデプロイを参照してください。
*「アプリケーションの作成」*で、 「ビルドの詳細を指定」 をクリックし、以下の詳細を入力します。
-
ソースの場合は、以下を指定します。
- サンプルコードリポジトリ URL のコードレポジトリ URL : Discovery doc-tutorial-downloadsページ
- コードリポジトリへのアクセス:
None
- 支店名:
master
- コンテキスト・ディレクトリー:
discovery-data/webhook-enrichment-sample/regex
-
strategy:
Dockerfile
-
出力: コンテナー・イメージ・レジストリー情報を入力します
-
「環境変数 (オプション)」 を開き、以下の環境変数を追加します。
- 以下のように定義します。
Reference to full secret
- シークレット: 前のステップでプロジェクトに作成したシークレットの名前
- 以下のように定義します。
「インスタンスの最小数」 を 1 に設定できます。
-
-
アプリケーションの状況が 「準備完了」 に変更されていることを確認します。
-
-
Discovery Webhook エンリッチを構成します。 詳細については 、「ウェブフック強化の設定 」を参照してください。
-
文書を Discovery に取り込み、結果を確認します。
- nhtsa.csv を Discovery doc-tutorial-downloads からコレクションにアップロードします。
- 文書処理の完了後に照会結果をプレビューして、Webhook エンリッチ結果を見つけます。
Granite- watsonx.aiの基盤モデルを使用したエンティティ抽出
このサンプルでは、watsonx.ai Granite モデルを使って、メールからエンティティを抽出しています。 私たちは、IBM Cloud Code Engineを、Webhookエンリッチメントを適用するためのインフラ環境として使用しています。 ただし、他の環境にアプリケーションをデプロイすることはできます。
-
Webhook エンリッチ・アプリケーションを IBM Cloud Code Engineにデプロイします。
-
IBM Cloud Code Engine でプロジェクトを作成します。 詳しくは、 プロジェクトの作成を参照してください。
-
プロジェクトに秘密を作成します。 詳しくは、 秘密の作成を参照してください。
このシークレットには、以下のキーと値のペアが含まれている必要があります。
WD_API_URL
: Discovery インスタンスの API エンドポイント URL。WD_API_KEY
: ご使用の Discovery インスタンスの API キー。WEBHOOK_SECRET
: アプリケーションでの認証に使用できる、要求と共に渡す鍵。 例えば、purple_unicorn
などです。IBM_CLOUD_API_KEY
: IBM Cloudの API キー。 これは、 Watson Machine Learning API にアクセスするために使用されます。WML_ENDPOINT_URL
: お客様の Watson Machine Learning のAPIエンドポイント URL。 詳細については 、 Machine Learning のドキュメントを参照してください。WML_INSTANCE_CRN
: Watson Machine Learning のインスタンスの CRN。ibmcloud
コマンドibmcloud resources
を使用して、インスタンスと CRN を見つけることができます。
-
サンプル・リポジトリー・ソース・コードからアプリケーションをデプロイします。 詳しくは、 リポジトリー・ソース・コードからのアプリのデプロイを参照してください。
*「アプリケーションの作成」*で、 「ビルドの詳細を指定」 をクリックし、以下の詳細を入力します。
-
ソースの場合は、以下を指定します。
- サンプルコードリポジトリ URL のコードレポジトリ URL : Discovery doc-tutorial-downloadsページ
- コードリポジトリへのアクセス:
None
- 支店名:
master
- コンテキスト・ディレクトリー:
discovery-data/webhook-enrichment-sample/granite
-
strategy:
Dockerfile
-
出力: コンテナー・イメージ・レジストリー情報を入力します
-
「環境変数 (オプション)」 を開き、以下の環境変数を追加します。
- 以下のように定義します。
Reference to full secret
- シークレット: 前のステップでプロジェクトに作成したシークレットの名前
- 以下のように定義します。
「インスタンスの最小数」 を 1 に設定できます。
-
-
アプリケーションの状況が 「準備完了」 に変更されていることを確認します。
-
-
Discovery Webhook エンリッチを構成します。 詳細については 、「ウェブフック強化の設定 」を参照してください。
-
文書を Discovery に取り込み、結果を確認します。
- Discovery doc-tutorial-downloads からコレクションに email.txt をアップロードします。
- 文書処理の完了後に照会結果をプレビューして、Webhook エンリッチ結果を見つけます。
Watson Discoveryのエンティティー抽出ワークスペースからエクスポートされたラベル付きデータで微調整された Watsonx.ai Slate モデルを使用した Slate エンティティー抽出。
スレート・モデルには、生成されないユース・ケースで最高のコスト・パフォーマンス・トレードオフがあります。 微調整のためには、タスク固有のラベル付きデータが必要です。 Watson Discoveryでラベル付きデータを準備し、 Watson Studioで Slate モデルを微調整し、 Watson Machine Learningでモデルをデプロイできます。 微調整されたモデルをデプロイすると、 Watson Discoveryでそのモデルを使用して文書をエンリッチする Webhook エンリッチメントを作成できます。
-
Watson Discoveryでラベル付きデータを準備します。
-
エンティティー抽出プログラム・ワークスペースを作成し、データにラベルを付けます。 詳しくは、 カスタム・エンティティーの定義 を参照してください。
-
エンティティー抽出ワークスペースからラベル付きデータをダウンロードします。 詳しくは、 エンティティー抽出のラベル付きデータのエクスポート を参照してください。
このチュートリアルでは、 Discovery doc-tutorial-downloads からのサンプル・ラベル付きデータを後続のステップで使用できます。
-
-
Watson Studio で slate モデルを微調整し、そのモデルを Watson Machine Learningにデプロイします。
-
Watson Studio でプロジェクトを作成します。 詳しくは、 プロジェクトの作成を参照してください。
-
Watson Machine Learningでデプロイメント・スペースを作成します。 詳しくは、 デプロイメント・スペースの作成 を参照してください。
-
プロジェクトに環境テンプレートを作成します。 詳しくは、 環境テンプレートの作成を参照してください。 以下のオプションで作成できます
- タイプ:
Default
- ハードウェア構成
- リザーブ vCPU: 2
- RAM 予約 (GB): 8
- ソフトウェアのバージョン: Runtime 23.1 on Python 3.10
- タイプ:
-
ノートブック・ファイルからランタイムとして環境テンプレートを使用して、プロジェクト内にノートブックを作成します。 ノートブックの cxreating について詳しくは、 ノートブックの作成を参照してください。 ノートブック・ファイルは Discovery doc-tutorial-downloadsにあります。
-
ノートブックでラベル付きデータをアップロードします。 詳しくは、 ローカル・ファイルからのデータのロードを参照してください。
-
ノートブックをステップバイステップで実行し、特定の変数を置き換えることで、Slate モデルを微調整してデプロイします。
-
-
Webhook エンリッチ・アプリケーションを IBM Cloud Code Engineにデプロイします。
-
IBM Cloud Code Engine でプロジェクトを作成します。 詳しくは、 プロジェクトの作成を参照してください。
-
プロジェクトに秘密を作成します。 詳しくは、 秘密の作成を参照してください。
このシークレットには、以下のキーと値のペアが含まれている必要があります。
WD_API_URL
: Discovery インスタンスの API エンドポイント URL。WD_API_KEY
: ご使用の Discovery インスタンスの API キー。WEBHOOK_SECRET
: アプリケーションでの認証に使用できる、要求と共に渡す鍵。 例えば、purple_unicorn
などです。SCORING_API_HOSTNAME
: 微調整されたスレート・モデルを提供する Watson Machine Learning スコアリング・デプロイメントの API ホスト名。SCORING_DEPLOYMENT_ID
: 微調整された slate モデルを提供する Watson Machine Learning スコアリング・デプロイメントの ID。SCORING_API_TOKEN
: 微調整された Slate モデルに役立つ Watson Machine Learning スコアリング・デプロイメントを使用するためのベアラー許可で使用される API トークン。 以下のコマンドを使用するとトークンを取得できます
curl -X POST {auth} \ SCORING_API_TOKEN=$( curl -k -X POST 'https://{hostname of your cp4d instance}/icp4d-api/v1/authorize' \ --header "Content-Type: application/json" -d "{\"username\":\"admin\",\"api_key\":\"{api key of your cp4d instance}\"}" \ | jq .token )
-
-
サンプル・リポジトリー・ソース・コードからアプリケーションをデプロイします。 詳しくは、 リポジトリー・ソース・コードからのアプリのデプロイを参照してください。
-
*「アプリケーションの作成」*で、 「ビルドの詳細を指定」 をクリックし、以下の詳細を入力します。
-
ソースの場合は、以下を指定します。
- サンプルコードリポジトリ URL のコードレポジトリ URL : Discovery doc-tutorial-downloadsページ
- コードリポジトリへのアクセス:
None
- 支店名:
master
- コンテキスト・ディレクトリー:
discovery-data/webhook-enrichment-sample/slate
-
strategy:
Dockerfile
-
出力: コンテナー・イメージ・レジストリー情報を入力します
-
「環境変数 (オプション)」 を開き、以下の環境変数を追加します。
- 以下のように定義します。
Reference to full secret
- シークレット: 前のステップでプロジェクトに作成したシークレットの名前
- 以下のように定義します。
「インスタンスの最小数」 を 1 に設定できます。
-
-
アプリケーションの状況が 「準備完了」 に変更されていることを確認します。
-
-
Discovery Webhook エンリッチを構成します。 詳細については 、「ウェブフック強化の設定 」を参照してください。
-
文書を Discovery に取り込み、結果を確認します。
- Discovery doc-tutorial-downloads から年間レポートのページをコレクションにアップロードします。
- 文書処理の完了後に照会結果をプレビューして、Webhook エンリッチ結果を見つけます。
Webhook エンリッチの構成
-
プロジェクトを作成する。
-
Discovery API を使用して Webhook エンリッチを作成します。
curl -X POST {auth} \ --header 'Content-Type: multipart/form-data' \ --form 'enrichment={"name":"my-first-webhook-enrichment", \ "type":"webhook", \ "options":{"url":"{your_code_engine_app_domain}/webhook", \ "secret":"{your_webhook_secret}", \ "location_encoding":"utf-32"}}' \ '{url}/v2/projects/{project_id}/enrichments?version=2023-03-31'
-
プロジェクト内にコレクションを作成し、そのコレクションに Webhook エンリッチを適用します。
curl -X POST {auth} \ --header 'Content-Type: application/json' \ --data '{"name":"my-collection", \ "enrichments":[{"enrichment_id":"{enrichment_id}", \ "fields":["text"]}]}' \ '{url}/v2/projects/{project_id}/collections?version=2023-03-31'