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

Azure AI 模型推理 API | Azure AI Studio

重要

本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

Azure AI 模型推理 API 公开了一组适用于基础模型的通用功能,可供开发人员以统一且一致的方式使用一组多样化的模型的预测结果。 开发人员可以与 Azure AI Studio 中部署的不同模型通信,而无需更改它们正在使用的基础代码。

好处

近年来,语言模型等基础模型确实取得了显著的进步。 这些进步彻底改变了包括自然语言处理和计算机视觉在内的各个领域,并帮助实现了聊天机器人、虚拟助理和语言翻译服务等应用。

虽然基础模型在特定领域中表现突出,但它们缺乏一组统一的功能。 某些模型更适合特定任务,甚至在同一任务中,有些模型可能采用一种方式来处理问题,而另一些模型则采用另一种方法。 开发人员可以这种多样性中获益,通过使用正确的模型处理正确的工作,可以:

  • 提高特定下游任务的性能。
  • 为更简单的任务使用更高效的模型。
  • 使用可在特定任务上更快地运行的小型模型。
  • 编写多个模型来开发智能体验。

通过采用统一的方式使用基础模型,开发人员可以实现所有这些好处,而无需牺牲可移植性或更改底层代码。

可用性

Azure AI 模型推理 API 可在以下模型中使用:

部署到无服务器 API 终结点的模型:

部署到托管推理的模型:

此 API 与 Azure OpenAI 模型部署兼容。

注意

Azure AI 模型推理 API 在托管推理(托管联机终结点)中可用于 2024 年 6 月 24 日之后部署的模型。 若要使用 API,如果模型已在此日期之前部署,请重新部署终结点。

功能

以下部分介绍 API 公开的一些功能。 有关此 API 的完整规范,请查看参考部分

方式

此 API 指示开发人员如何对以下形式使用预测:

  • 获取信息:返回有关在终结点下部署的模型的信息。
  • 文本嵌入:创建表示输入文本的嵌入矢量。
  • 文本补全:为提供的提示和参数创建补全项。
  • 聊天补全:为给定聊天对话创建模型回复。
  • 图像嵌入:创建表示输入文本和图像的嵌入矢量。

推理 SDK 支持

可以使用所选语言的简化推理客户端来使用运行 Azure AI 模型推理 API 的模型的预测。

使用包管理器(例如 pip)安装包 azure-ai-inference

pip install azure-ai-inference

然后,可以使用包来使用模型。 以下示例演示如何创建客户端来使用聊天补全:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

model = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

如果使用支持 Entra ID 的终结点,可以按如下所示创建客户端:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import AzureDefaultCredential

model = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureDefaultCredential(),
)

浏览我们的示例,并阅读 API 参考文档以开始使用。

可扩展性

Azure AI 模型推理 API 指定模型可以订阅的一组形式和参数。 但是,一些模型可能具有此 API 所指示的其他功能。 在这些情况下,此 API 支持开发人员将它们作为额外参数传递到有效负载中。

通过设置标头 extra-parameters: pass-through,API 将尝试直接向基础模型传递任何未知参数。 如果模型可以处理该参数,则请求完成。

以下示例演示了传递 Mistral-Large 支持的 safe_prompt 参数的请求,Azure AI 模型推理 API 中未指定该参数。

from azure.ai.inference.models import SystemMessage, UserMessage

response = model.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    model_extras={
        "safe_mode": True
    }
)

print(response.choices[0].message.content)

提示

使用 Azure AI 推理 SDK 时,使用 model_extras 会自动为你配置带有 extra-parameters: pass-through 的请求。

注意

extra-parameters 的默认值是 error,如果有效负载中指示了额外参数,则返回错误。 或者,可以将 extra-parameters: drop 设置为删除请求中的任何未知参数。 如果碰巧发送包含额外参数的请求,你知道模型不支持这些参数,但希望请求无论如何都能完成,请使用此功能。 一个典型的例子是指示 seed 参数。

具有不同功能集的模型

Azure AI 模型推理 API 指示一组常规功能,但每个模型都可以决定是否将其实现。 如果模型不支持特定参数,将返回特定的错误。

以下示例显示了聊天补全请求的响应,该请求指示参数 reponse_format 并希望得到 JSON 格式的答复。 在此示例中,由于模型不支持此类功能,因此向用户返回错误 422。

import json
from azure.ai.inference.models import SystemMessage, UserMessage, ChatCompletionsResponseFormatJSON
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are a helpful assistant."),
            UserMessage(content="How many languages are in the world?"),
        ],
        response_format=ChatCompletionsResponseFormatJSON()
    )
except HttpResponseError as ex:
    if ex.status_code == 422:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "detail" in response:
            for offending in response["detail"]:
                param = ".".join(offending["loc"])
                value = offending["input"]
                print(
                    f"Looks like the model doesn't support the parameter '{param}' with value '{value}'"
                )
    else:
        raise ex

提示

可以检查属性 details.loc(了解有问题的参数的位置)和 details.input(查看请求中传递的值)。

Content Safety

Azure AI 模型推理 API 支持 Azure AI 内容安全。 在启用 Azure AI 内容安全的情况下使用部署时,输入和输出会经过一系列分类模型,旨在检测和防止输出有害内容。 内容筛选(预览版)系统会在输入提示和输出补全中检测特定类别的潜在有害内容并对其采取措施。

以下示例显示了已触发内容安全的聊天完成请求的响应。

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise ex
    else:
        raise ex

使用入门

Azure AI 模型推理 API 目前在某些部署为无服务器 API 终结点和托管联机终结点的模型中受支持。 部署任何受支持的模型并使用完全相同的代码来利用其预测。

客户端库 azure-ai-inference 对 Azure AI Studio 和 Azure 机器学习工作室部署的 AI 模型进行推理,包括聊天补全。 它支持无服务器 API 终结点和托管计算终结点(以前称为托管联机终结点)。

浏览我们的示例,并阅读 API 参考文档以开始使用。