IBM Cloud Docs
在 Watson Discovery 中构建外部 Webhook 扩充解决方案

在 Watson Discovery 中构建外部 Webhook 扩充解决方案

在本教程中,您可以使用样本应用程序通过 Watson Discovery来构建外部 Webhook 扩充解决方案。

IBM Cloud

仅当您正在使用受管部署时,才遵循本教程。

下图显示了外部扩充配置流。

显示外部增益配置流程
外部增益配置流程* 外部增益配置

下图显示了外部扩充过程流。

显示外部浓缩工艺流程* 外部浓缩工艺流程*
浓缩

有关外部扩充 API 的更多信息,请参阅 外部扩充 API

学习目标

完成教程后,您将学习如何使用以下样本应用程序:

  • Regex: 用于使用正则表达式进行实体抽取,文档分类和语句分类
  • Granite:使用 watsonx.ai Granite 模型从电子邮件中提取实体
  • Slate: 用于使用 watsonx.ai Slate 模型进行实体抽取,该模型使用从 Watson Discovery的实体抽取器工作空间导出的带标签数据进行微调。

持续时间

本教程大约需要2个小时才能完成。

先决条件

  1. 开始之前,必须使用 IBM Cloud 设置付费帐户,以获取 Watson Discovery Plus 或 Enterprise 套餐的实例。

    您可以免费使用 Plus 套餐来完成本教程,该套餐提供 30 天免费试用。 但是,要创建服务的 Plus 套餐实例,您必须具有付费帐户 (在其中提供信用卡详细信息)。 有关创建付费帐户的更多信息,请参阅 升级帐户。 要创建 Plus 套餐 Discovery 服务实例,请转至 IBM Cloud 目录中的 Discovery 资源 页面并创建 Plus 套餐服务实例。

    如果您决定停止使用 Plus 套餐并且不想为其付费,请在 30 天试用期结束之前删除 Plus 套餐服务实例。

  2. 您应该有权访问 Discovery doc-tutorial-download 存储库以下载样本应用程序和数据。

Granite 应用程序的其他先决条件

  1. 设置 Watson Machine Learning的实例。 有关定价套餐的更多信息,请参阅 Watson Machine Learning

  2. 为 IBM Cloud创建 API 密钥。 有关更多信息,请参阅 了解 API 密钥

Slate 应用程序的其他先决条件

  1. 设置 Watson Machine Learning的实例。 有关定价套餐的更多信息,请参阅 Watson Machine Learning

  2. 设置 Cloud Pak for Data 4.7.x 或更高版本的实例,并安装 Watson Studio 和 Watson Machine Learning。

  3. 为 IBM Cloud创建 API 密钥。 有关更多信息,请参阅 了解 API 密钥

  4. 为 IBM Cloud Pak for Data 创建 API 密钥。 有关更多信息,请参阅 开始使用 IBM Cloud包

使用正则表达式的正则表达式-实体抽取,文档分类和句子分类

在此样本中,我们使用 IBM Cloud Code Engine 作为应用 Webhook 扩充项的基础结构环境。 但是,您可以在任何其他环境中部署应用程序。

  1. 将 Webhook 扩充应用程序部署到 IBM Cloud Code Engine。

    1. 在 IBM Cloud Code Engine 创建一个项目。 有关更多信息,请参阅 创建项目

    2. 在项目中创建一个秘密。 有关更多信息,请参阅 创建私钥

      此私钥必须包含以下“键/值”对:

      • WD_API_URL:您的 Discovery 实例的API端点 URL。
      • WD_API_KEY: Discovery 实例的 API 密钥。
      • WEBHOOK_SECRET: 要与可用于向应用程序认证的请求一起传递的密钥。 例如,purple_unicorn
    3. 从样本存储库源代码部署应用程序。 有关更多信息,请参阅 从存储库源代码部署应用程序

      创建应用程序中,单击 指定构建详细信息,然后输入这些详细信息。

      • 对于源,请指定:

        • 示例代码库 URL 的代码提交地址:URL,位于 Discovery doc-tutorial-downloads 页面
        • 代码仓库访问权限:None
        • 分支名称: master
        • 上下文目录: discovery-data/webhook-enrichment-sample/regex
      • strategy: Dockerfile

      • 输出: 输入容器映像注册表信息

      • 打开 环境变量 (可选),然后添加以下环境变量:

        • 定义为: Reference to full secret
        • 私钥: 在上一步中在项目中创建的私钥的名称

      您可以将 最小实例数 设置为 1。

    4. 确保应用程序状态更改为 就绪

  2. 配置 Discovery Webhook 扩充项。 更多信息,请参阅 配置网络挂钩扩展

  3. 将文档采集到 Discovery 并查看结果。

    1. 将 nhtsa.csv 从 Discovery doc-tutorial-download 上载到集合。
    2. 在文档处理完成后,通过预览查询结果来查找 Webhook 扩充结果。

Granite- 通过使用 watsonx.ai 的基础模型提取实体

在本示例中,我们使用 watsonx.ai Granite 模型从电子邮件中提取实体。 我们使用 IBM Cloud Code Engine 作为应用 webhook 浓缩的基础架构环境。 但是,您可以在任何其他环境中部署应用程序。

  1. 将 Webhook 扩充应用程序部署到 IBM Cloud Code Engine。

    1. 在 IBM Cloud Code Engine 创建一个项目。 有关更多信息,请参阅 创建项目

    2. 在项目中创建一个秘密。 有关更多信息,请参阅 创建私钥

      此私钥必须包含以下“键/值”对:

      • 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。
    3. 从样本存储库源代码部署应用程序。 有关更多信息,请参阅 从存储库源代码部署应用程序

      创建应用程序中,单击 指定构建详细信息,然后输入这些详细信息。

      • 对于源,请指定:

        • 示例代码库 URL 的代码提交地址:URL,位于 Discovery doc-tutorial-downloads 页面
        • 代码仓库访问权限:None
        • 分支名称: master
        • 上下文目录: discovery-data/webhook-enrichment-sample/granite
      • strategy: Dockerfile

      • 输出: 输入容器映像注册表信息

      • 打开 环境变量 (可选),然后添加以下环境变量:

        • 定义为: Reference to full secret
        • 私钥: 在上一步中在项目中创建的私钥的名称

      您可以将 最小实例数 设置为 1。

    4. 确保应用程序状态更改为 就绪

  2. 配置 Discovery Webhook 扩充项。 更多信息,请参阅 配置网络挂钩扩展

  3. 将文档采集到 Discovery 并查看结果。

    1. 将 email.txt 从 Discovery doc-tutorial-download 上载到集合。
    2. 在文档处理完成后,通过预览查询结果来查找 Webhook 扩充结果。

Slate-使用 Watsonx.ai Slate 模型进行实体抽取,该模型使用从 Watson Discovery的实体抽取器工作空间导出的带标签数据进行微调。

Slate 模型具有针对非生成用例的最佳性价比权衡。 为了进行微调,它需要特定于任务的带标签数据。 您可以在 Watson Discovery中准备标注数据,在 Watson Studio中微调 Slate 模型,并在 Watson Machine Learning中部署模型。 部署经过微调的模型后,可以在 Watson Discovery中创建 Webhook 扩充,以丰富使用该模型的文档。

  1. 在 Watson Discovery中准备带标签的数据。

    1. 创建实体抽取器工作空间和标签数据。 有关更多信息,请参阅 定义定制实体

    2. 从实体抽取器工作空间下载带标签的数据。 有关更多信息,请参阅 导出实体抽取器的带标签数据

      在本教程中,您可以在后续步骤中使用 Discovery doc-tutorial-download 中的样本延迟数据。

  2. 在 Watson Studio 中微调 slate 模型,并将该模型部署到 Watson Machine Learning。

    1. 在 Watson Studio 创建一个项目。 有关更多信息,请参阅 创建项目

    2. 在 Watson Machine Learning中创建部署空间。 有关更多信息,请参阅 创建部署空间

    3. 在项目中创建环境模板。 有关更多信息,请参阅 创建环境模板。 您可以使用以下选项进行创建:

      • 类型:Default
      • 硬件配置
        • 预留 vCPU: 2
        • 保留 RAM (GB): 8
      • 软件版本: 运行时 23.1 on Python 3.10
    4. 使用环境模板作为 Notebook 文件中的运行时,在项目中创建 Notebook。 有关 cxreating a notebook 的更多信息,请参阅 创建 Notebook。 笔记本文件位于 Discovery doc-tutorial-download

    5. 在 Notebook 中上载带标签的数据。 有关更多信息,请参阅 从本地文件装入数据

    6. 通过逐步运行 Notebook 并替换某些变量来微调和部署 Slate 模型。

  3. 将 Webhook 扩充应用程序部署到 IBM Cloud Code Engine。

    1. 在 IBM Cloud Code Engine 创建一个项目。 有关更多信息,请参阅 创建项目

    2. 在项目中创建一个秘密。 有关更多信息,请参阅 创建私钥

      此私钥必须包含以下“键/值”对:

      • WD_API_URL:您的 Discovery 实例的API端点 URL。
      • WD_API_KEY: Discovery 实例的 API 密钥。
      • WEBHOOK_SECRET: 要与可用于向应用程序认证的请求一起传递的密钥。 例如,purple_unicorn
      • SCORING_API_HOSTNAME: Watson Machine Learning 评分部署的 API 主机名,用于提供微调的 slate 模型。
      • SCORING_DEPLOYMENT_ID: Watson Machine Learning 评分部署的标识,用于提供经过微调的 Slate 模型。
      • SCORING_API_TOKEN: 不记名授权中用于使用 Watson Machine Learning 评分部署的 API 令牌,用于提供经过微调的 Slate 模型。 你可以使用以下命令获取令牌:
      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
      )
      
  4. 从样本存储库源代码部署应用程序。 有关更多信息,请参阅 从存储库源代码部署应用程序

    1. 创建应用程序中,单击 指定构建详细信息,然后输入这些详细信息。

      • 对于源,请指定:

        • 示例代码库 URL 的代码提交地址:URL,位于 Discovery doc-tutorial-downloads 页面
        • 代码仓库访问权限:None
        • 分支名称: master
        • 上下文目录: discovery-data/webhook-enrichment-sample/slate
      • strategy: Dockerfile

      • 输出: 输入容器映像注册表信息

      • 打开 环境变量 (可选),然后添加以下环境变量:

        • 定义为: Reference to full secret
        • 私钥: 在上一步中在项目中创建的私钥的名称

      您可以将 最小实例数 设置为 1。

    2. 确保应用程序状态更改为 就绪

  5. 配置 Discovery Webhook 扩充项。 更多信息,请参阅 配置网络挂钩扩展

  6. 将文档采集到 Discovery 并查看结果。

    1. 将年度报告页面从 Discovery doc-tutorial-download 上载到集合。
    2. 在文档处理完成后,通过预览查询结果来查找 Webhook 扩充结果。

配置 Webhook 扩充项

  1. 创建项目。

  2. 使用 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'
    
  3. 在项目中创建集合,并将 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'