快速入门:业务流程工作流

使用本文档开始 REST API 的编排工作流项目。 请按照以下步骤尝试使用示例。

先决条件

在 Azure 门户中创建语言资源

从 Azure 门户创建新资源

  1. 转到 Azure 门户 创建新的 Azure 语言资源。

  2. 选择“继续创建资源”

  3. 创建包含以下详细信息的语言资源。

    实例详细信息 所需的值
    区域 支持的区域之一。
    Name 语言资源的名称。
    定价等级 支持的定价层之一。

获取资源密钥和终结点

  1. Azure 门户中,转到资源概述页面。

  2. 在左侧菜单中,选择"密钥和终结点”。 终结点和密钥用于 API 请求。

    显示 Azure 门户中的“密钥和终结点”页的屏幕截图

创建业务流程工作流项目

创建语言资源后,就可以创建业务流程工作流项目了。 项目是一个基于数据构建自定义 ML 模型的工作区。 你的项目只能由你和有权访问正在使用的 Azure 语言资源的其他人访问。

要学习本快速入门,请先完成 CLU 快速入门以创建要在业务流程工作流中使用的 CLU 项目。

使用以下 URL、标头和 JSON 正文提交 PATCH 请求,以创建新项目。

请求的 URL

创建 API 请求时,请使用以下 URL。 将占位符中的值替换为您自己的值。

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 myProject
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

Body

使用以下示例 JSON 作为正文。

{
  "projectName": "{PROJECT-NAME}",
  "language": "{LANGUAGE-CODE}",
  "projectKind": "Orchestration",
  "description": "Project description"
 }
Key Placeholder 价值 Example
projectName {PROJECT-NAME} 项目名称。 此值区分大小写。 EmailApp
language {LANGUAGE-CODE} 指定项目中所用语句的语言代码的字符串。 如果您的项目是多语言项目,请为大多数话语选择语言代码 en-us

生成架构

完成 CLU 快速入门并创建业务流程项目后,下一步是添加意向。

使用以下 URL、标头和 JSON 正文提交 POST 请求,以导入项目

请求的 URL

创建 API 请求时,请使用以下 URL。 将占位符中的值替换为您自己的值。

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:import?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 myProject
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

Body

注释

每个意向只能是一种类型(CLU、LUIS 和 qna 中的一种)

使用以下示例 JSON 作为正文。

{
  "projectFileVersion": "{API-VERSION}",
  "stringIndexType": "Utf16CodeUnit",
  "metadata": {
    "projectKind": "Orchestration",
    "settings": {
      "confidenceThreshold": 0
    },
    "projectName": "{PROJECT-NAME}",
    "description": "Project description",
    "language": "{LANGUAGE-CODE}"
  },
  "assets": {
    "projectKind": "Orchestration",
    "intents": [
      {
        "category": "string",
        "orchestration": {
          "kind": "luis",
          "luisOrchestration": {
            "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
            "appVersion": "string",
            "slotName": "string"
          },
          "cluOrchestration": {
            "projectName": "string",
            "deploymentName": "string"
          },
          "qnaOrchestration": {
            "projectName": "string"
          }
        }
      }
    ],
    "utterances": [
      {
        "text": "Trying orchestration",
        "language": "{LANGUAGE-CODE}",
        "intent": "string"
      }
    ]
  }
}

Key Placeholder 价值 Example
api-version {API-VERSION} 要调用的 API 的版本。 此处使用的版本必须与 URL 中的 API 版本相同。 2022-03-01-preview
projectName {PROJECT-NAME} 项目名称。 此值区分大小写。 EmailApp
language {LANGUAGE-CODE} 指定项目中所用语句的语言代码的字符串。 如果您的项目是多语言项目,请为大多数话语选择语言代码 en-us

训练模型

若要训练模型,需要启动训练作业。 成功训练作业的输出是已训练的模型。

使用以下 URL、标头和 JSON 正文创建 POST 请求以提交训练作业。

请求的 URL

创建 API 请求时,请使用以下 URL。 将占位符中的值替换为您自己的值。

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 EmailApp
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

请求主体

在请求中使用以下对象。 完成训练后,该模型将被命名为 MyModel

{
  "modelLabel": "{MODEL-NAME}",
  "trainingMode": "standard",
  "trainingConfigVersion": "{CONFIG-VERSION}",
  "evaluationOptions": {
    "kind": "percentage",
    "testingSplitPercentage": 20,
    "trainingSplitPercentage": 80
  }
}
Key Placeholder 价值 Example
modelLabel {MODEL-NAME} 模型名称。 Model1
trainingMode standard 训练模式。 业务流程中只有一种可用的训练模式,即 standard standard
trainingConfigVersion {CONFIG-VERSION} 训练配置模型版本。 默认情况下将使用最新的模型版本 2022-05-01
kind percentage 拆分方法。 可能的值为 percentagemanual。 有关详细信息,请参阅如何训练模型 percentage
trainingSplitPercentage 80 要包含在训练集中的已标记数据的百分比。 建议的值为 80 80
testingSplitPercentage 20 要包含在测试集中的已标记数据的百分比。 建议的值为 20 20

注释

仅当 trainingSplitPercentage 设置为 testingSplitPercentageKindpercentage 才是必需的,并且两个百分比的总和应等于 100。

发送 API 请求后,会收到指示 202 成功的响应。 在响应标头中,提取 operation-location 格式如下的值:

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}

可以使用此 URL 获取训练作业状态。

获取定型状态

训练可能需要 10 到 30 分钟。 可以使用以下请求持续轮询训练作业的状态,直到成功完成训练作业。

使用以下 GET 请求来获取模型在训练过程中的状态。 将占位符中的值替换为您自己的值。

请求的 URL

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Placeholder 价值 Example
{YOUR-ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 EmailApp
{JOB-ID} 用于查找模型训练状态的 ID。 它位于 location 提交训练作业时收到的标头值中。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

响应正文

发送请求后,会收到以下响应。 继续轮询该端点,直到状态参数变为“已成功”。

{
  "result": {
    "modelLabel": "{MODEL-LABEL}",
    "trainingConfigVersion": "{TRAINING-CONFIG-VERSION}",
    "estimatedEndDateTime": "2022-04-18T15:47:58.8190649Z",
    "trainingStatus": {
      "percentComplete": 3,
      "startDateTime": "2022-04-18T15:45:06.8190649Z",
      "status": "running"
    },
    "evaluationStatus": {
      "percentComplete": 0,
      "status": "notStarted"
    }
  },
  "jobId": "xxxxxx-xxxxx-xxxxxx-xxxxxx",
  "createdDateTime": "2022-04-18T15:44:44Z",
  "lastUpdatedDateTime": "2022-04-18T15:45:48Z",
  "expirationDateTime": "2022-04-25T15:44:44Z",
  "status": "running"
}
Key 价值 Example
modelLabel 模型名称 Model1
trainingConfigVersion 训练配置版本。 默认使用最新版本 2022-05-01
startDateTime 开始训练的时间 2022-04-14T10:23:04.2598544Z
status 训练作业的状态 running
estimatedEndDateTime 预计的训练作业完成时间 2022-04-14T10:29:38.2598544Z
jobId 训练作业 ID xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
createdDateTime 训练作业创建日期和时间 2022-04-14T10:22:42Z
lastUpdatedDateTime 训练作业上次更新日期和时间 2022-04-14T10:23:45Z
expirationDateTime 训练作业过期日期和时间 2022-04-14T10:22:42Z

部署你的模型

一般情况下,在训练模型后,你会查看其评估详细信息。 在本快速入门中,你只需部署模型,并调用预测 API 来查询结果。

提交部署作业

使用以下 URL、标头和 JSON 正文创建 PUT 请求,开始部署业务流程工作流模型

请求的 URL

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 myProject
{DEPLOYMENT-NAME} 部署名称。 此值区分大小写。 staging
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

请求主体

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Key Placeholder 价值 Example
trainedModelLabel {MODEL-NAME} 分配给您部署的模型名称。 只能分配已成功训练的模型。 此值区分大小写。 myModel

发送 API 请求后,会收到指示 202 成功的响应。 在响应标头中,提取 operation-location 格式如下的值:

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}

可使用此 URL 获取部署作业状态。

获取部署作业状态

使用以下 GET 请求来获取部署作业的状态。 将占位符中的值替换为您自己的值。

请求的 URL

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 myProject
{DEPLOYMENT-NAME} 部署名称。 此值区分大小写。 staging
{JOB-ID} 用于查找模型训练状态的 ID。 它位于 location 头信息中,这是您从 API 收到的响应,针对您的模型部署请求而提供。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

响应正文

发送请求后,会收到以下响应。 继续轮询该端点,直到状态参数变为“已成功”。

{
    "jobId":"{JOB-ID}",
    "createdDateTime":"{CREATED-TIME}",
    "lastUpdatedDateTime":"{UPDATED-TIME}",
    "expirationDateTime":"{EXPIRATION-TIME}",
    "status":"running"
}

查询模型

部署模型后,可以开始使用该模型通过预测 API 进行预测。

部署成功后,可以开始查询已部署的模型以进行预测。

使用以下 URL、标头和 JSON 正文创建 POST 请求,开始测试业务流程工作流模型

请求的 URL

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

请求主体

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "text": "Text1",
      "participantId": "1",
      "id": "1"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "directTarget": "qnaProject",
    "targetProjectParameters": {
      "qnaProject": {
        "targetProjectKind": "QuestionAnswering",
        "callingOptions": {
          "context": {
            "previousUserQuery": "Meet Surface Pro 4",
            "previousQnaId": 4
          },
          "top": 1,
          "question": "App Service overview"
        }
      }
    }
  }
}

响应正文

发送请求后,你会收到以下预测响应!

{
  "kind": "ConversationResult",
  "result": {
    "query": "App Service overview",
    "prediction": {
      "projectKind": "Orchestration",
      "topIntent": "qnaTargetApp",
      "intents": {
        "qnaTargetApp": {
          "targetProjectKind": "QuestionAnswering",
          "confidenceScore": 1,
          "result": {
            "answers": [
              {
                "questions": [
                  "App Service overview"
                ],
                "answer": "The compute resources you use are determined by the *App Service plan* that you run your apps on.",
                "confidenceScore": 0.7384000000000001,
                "id": 1,
                "source": "https://learn.microsoft.com/azure/app-service/overview",
                "metadata": {},
                "dialog": {
                  "isContextOnly": false,
                  "prompts": []
                }
              }
            ]
          }
        }
      }
    }
  }
}

清理资源

如果你不再需要项目,可以使用 API 删除该项目。

使用以下 URL、标头和 JSON 正文创建 DELETE 请求,以删除对话语言理解项目

请求的 URL

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}?api-version={API-VERSION}
Placeholder 价值 Example
{ENDPOINT} 用于对 API 请求进行身份验证的终结点。 https://<your-custom-subdomain>.cognitiveservices.azure.cn
{PROJECT-NAME} 项目名称。 此值区分大小写。 myProject
{API-VERSION} 要调用的 API 的版本 2023-04-01

Headers

使用以下标头对请求进行身份验证。

Key 价值
Ocp-Apim-Subscription-Key 资源的键。 用于对 API 请求进行身份验证。

发送 API 请求后,会收到指示 202 成功的响应,这意味着项目被删除。

后续步骤