你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

AML 技能

重要

对模型目录的索引器连接的支持在 补充使用条款下处于公共预览状态。 预览版 REST API 支持此功能。

使用 AML 技能通过 Microsoft Foundry 模型目录 或自定义 Azure 机器学习 (AML) 模型中的已部署基础嵌入模型扩展 AI 扩充。 数据在部署模型的地理位置进行处理。

在技能集中指定 AML 技能,然后将已部署的模型集成到 AI 扩充管道中。 AML 技能可用于执行内置技能不支持的处理或推理。 示例包括使用自己的模型生成嵌入内容,以及应用自定义机器学习逻辑来扩充内容。

对于 AML 联机终结点,请使用稳定的 API 版本或等效的 Azure SDK 来调用 AML 技能。 若要连接到模型目录,请使用预览 API 版本。

AML 技能用法

与其他技能一样,AML 技能具有输入和输出。 输入作为 JSON 对象发送到 Foundry 模型目录或 AML 联机终结点的无服务器部署。 输出应包括成功状态代码、JSON 有效负载和 AML 技能定义指定的参数。 任何其他响应都被视为错误,不会执行任何扩充。

索引器针对以下 HTTP 状态代码重试两次:

  • 503 Service Unavailable
  • 429 Too Many Requests

Foundry 中模型的 AML 技能

Azure AI 搜索提供 Microsoft Foundry 模型目录向量器,该目录向量器导入数据(新) 向导中也提供,用于查询时与模型目录的连接。 如果要将此向量器用于查询,AML 技能是用于使用模型目录中的模型生成嵌入的 索引对应 项。

在编制索引期间,AML 技能可以连接到模型目录,为索引生成向量。 在查询时,查询可以使用向量器连接到同一模型来向量化文本字符串。 应同时使用 AML 技能和 Microsoft Foundry 模型目录向量程序,以便使用相同的嵌入模型来编制索引和查询。 有关详细信息,请参阅 使用 Foundry 模型目录中的嵌入模型

建议使用 导入数据(新) 向导 生成技能集,其中包含用于在 Foundry 中部署的嵌入模型的 AML 技能。 该向导为输入、输出和映射生成 AML 技能定义,从而提供在编写任何代码之前测试模型的简单方法。

先决条件

@odata.type

Microsoft.Skills.Custom.AmlSkill

技能参数

参数区分大小写。 所使用的参数取决于 模型提供程序所需的身份验证(如果有)。

参数名称 说明
uri 密钥身份验证必需)来自 Microsoft Foundry 模型目录或 AML 联机终结点评分 URI 的无服务器部署的目标 URI。 仅允许 HTTPS URI 方案。 模型目录中支持的模型(仅限无服务器部署)包括:
  • Cohere-embed-v3-english
  • Cohere-embed-v3-多语言
  • Cohere-embed-v4
key 密钥身份验证必需)模型提供程序的 API 密钥。
resourceId 令牌身份验证必需)模型提供程序的 Azure 资源管理器资源 ID。 对于 AML 联机终结点,请使用 subscriptions/{guid}/resourceGroups/{resource-group-name}/Microsoft.MachineLearningServices/workspaces/{workspace-name}/onlineendpoints/{endpoint_name} 格式。
region (令牌 身份验证可选)在其中部署模型提供程序的区域。 如果区域与搜索服务的区域不同,则为必需。
timeout (可选)发出 API 调用的 HTTP 客户端的超时。 它必须格式化为 XSD“dayTimeDuration”值,该值是 ISO 8601 持续时间 值的受限子集。 例如,PT60S 表示 60 秒。 如果未设置,选择的是默认值 30 秒。 可以将超时设置为至少 1 秒,最多 230 秒。
degreeOfParallelism (可选)索引器与提供的终结点并行发出的调用数。 如果终结点在请求负载过高的情况下发生故障,则可减小此值。 如果终结点能够接受更多请求,并且你希望提高索引器的性能,则可增大此值。 如果未设置,则将使用默认值 5。 可以设置为 degreeOfParallelism 至少 1,最大设置为 10。

身份验证

AML 技能提供两个身份验证选项:

  • 基于密钥的身份验证。 你提供一个静态密钥,用于对来自 AML 技能的评分请求进行身份验证。 uri设置此连接的和key参数。

  • 基于令牌的身份验证。 基于 Foundry 中心的项目或 AML 联机终结点是使用基于令牌的身份验证部署的。 Azure AI 搜索服务必须在模型提供程序上具有 托管标识 和角色分配。 然后,AML 技能使用搜索服务标识对模型提供程序进行身份验证,无需静态密钥。 搜索服务标识必须具有 “所有者 ”或 “参与者 ”角色。 resourceId设置参数,如果搜索服务位于与模型提供程序不同的区域,请设置region参数。

技能输入

技能输入是文档破解期间创建的扩充文档的节点。 例如,它可能是根文档、规范化图像或 Blob 的内容。 此技能没有预定义的输入。 对于输入,应指定在 AML 技能执行时填充的一个或多个节点。

技能输出

技能输出是技能创建的扩充文档的新节点。 此技能没有预定义的输出。 对于输出,应提供可从 AML 技能的 JSON 响应填充的节点。

示例定义

  {
    "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
    "description": "A custom model that detects the language in a document.",
    "uri": "https://language-model.models.contoso.com/score",
    "context": "/document",
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "detected_language_code"
      }
    ]
  }

示例输入 JSON 结构

此 JSON 结构表示发送到基于 Foundry 中心的项目或 AML 联机终结点的有效负载。 该结构的顶层字段对应技能定义的 inputs 节中指定的“names”。 这些字段的值来自这些字段的“源”,这些字段可能来自文档中的某个字段或其他技能。

{
  "text": "Este es un contrato en Inglés"
}

示例输出 JSON 结构

输出对应于基于 Foundry 中心的项目或 AML 联机终结点的响应。 模型提供程序应仅返回 JSON 有效负载(通过查看 Content-Type 响应标头进行验证),并且应是一个对象,其字段是与“名称”匹配且 output 其值被视为扩充的对象。

{
    "detected_language_code": "es"
}

内联成形示例定义

  {
    "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
    "description": "A sample model that detects the language of sentence",
    "uri": "https://language-model.models.contoso.com/score",
    "context": "/document",
    "inputs": [
      {
        "name": "shapedText",
        "sourceContext": "/document",
        "inputs": [
            {
              "name": "content",
              "source": "/document/content"
            }
        ]
      }
    ],
    "outputs": [
      {
        "name": "detected_language_code"
      }
    ]
  }

内联成形 JSON 结构

{
  "shapedText": { "content": "Este es un contrato en Inglés" }
}

内联成形示例输出 JSON 结构

{
    "detected_language_code": "es"
}

错误案例

除了基于 Foundry 中心的项目或 AML 联机终结点不可用或发送不合格状态代码之外,以下情况被视为错误:

  • 模型提供程序返回成功状态代码,但响应指示它不是 application/json。 因此,响应无效,不会执行任何扩充。

  • 模型提供程序返回无效的 JSON。

如果模型提供程序不可用或返回 HTTP 错误,则会向索引器执行历史记录添加有关 HTTP 错误的任何可用详细信息的友好错误。

另请参阅