使用本文档开始 REST API 的编排工作流项目。 请按照以下步骤尝试使用示例。
先决条件
- Azure 订阅 - 创建试用订阅。
在 Azure 门户中创建语言资源
从 Azure 门户创建新资源
转到 Azure 门户 创建新的 Azure 语言资源。
选择“继续创建资源”
创建包含以下详细信息的语言资源。
实例详细信息 所需的值 区域 支持的区域之一。 Name 语言资源的名称。 定价等级 支持的定价层之一。
获取资源密钥和终结点
在 Azure 门户中,转到资源概述页面。
在左侧菜单中,选择"密钥和终结点”。 终结点和密钥用于 API 请求。
创建业务流程工作流项目
创建语言资源后,就可以创建业务流程工作流项目了。 项目是一个基于数据构建自定义 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 |
拆分方法。 可能的值为 percentage 或 manual。 有关详细信息,请参阅如何训练模型。 |
percentage |
trainingSplitPercentage |
80 |
要包含在训练集中的已标记数据的百分比。 建议的值为 80。 |
80 |
testingSplitPercentage |
20 |
要包含在测试集中的已标记数据的百分比。 建议的值为 20。 |
20 |
注释
仅当 trainingSplitPercentage 设置为 testingSplitPercentage 时 Kind 和 percentage 才是必需的,并且两个百分比的总和应等于 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 成功的响应,这意味着项目被删除。