Azure AI Foundry 模型使客户能够通过单个终结点和凭据访问顶级的旗舰模型提供商的最强大的模型。 这意味着你可以在模型之间切换,并从应用程序中使用它们,并且一行代码都不需要修改。
本文解释了如何在服务内部组织模型,以及如何使用推理终结点来调用它们。
部署
Azure AI Foundry 使用 部署 概念提供模型。 部署是在特定配置下为模型提供名称的方法。 然后,你可以通过在请求中指示其名称来调用此类模型配置。
部署捕获:
- 模型名称
- 模型版本
- 预配/容量类型1
- 内容筛选配置1
- 速率限制配置1
1 配置可能因所选模型而异。
Azure AI Foundry 资源可以根据需要部署尽可能多的模型,除非对这些模型执行推理,否则它们不会产生成本。 部署是 Azure 资源,因此它们受 Azure 策略的约束。
若要详细了解如何创建部署,请参阅添加和配置模型部署。
端点
Azure AI Foundry 服务(前称 Azure AI 服务)根据您需要的工作类型提供多个终结点:
- Azure AI 推理端点(通常采用格式
https://<resource-name>.services.ai.azure.com/models
)
- Azure OpenAI 终结点(通常形式为
https://<resource-name>.openai.azure.com
)
Azure AI 推理终结点允许客户使用具有相同身份验证和架构的单个终结点来为资源中已部署的模型生成推理。 所有模型均支持此功能。 此终结点遵循 Azure AI 模型推理 API。
Azure OpenAI API 公开 OpenAI 模型的完整功能,并支持更多功能,例如助手、线程、文件和批处理推理。 通过此路径也可能公开非 OpenAI 模型。
若要详细了解如何应用 Azure OpenAI 终结点 ,请参阅 Azure AI Foundry 模型文档中的 Azure OpenAI。
使用 Azure AI 推理终结点
推理终结点通过将请求内的参数 name
与部署名称进行匹配,将请求路由到给定部署。 这意味着,部署在某些配置下充当给定模型的别名。 这种灵活性允许你在服务中多次部署给定的模型,但如果需要,可以在不同的配置下部署。
例如,如果你创建一个名为 Mistral-large
的部署,则可以如下所示调用此类部署:
使用包管理器(例如 pip)安装包 azure-ai-inference
:
pip install azure-ai-inference
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端来使用聊天补全:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
)
浏览我们的示例,并阅读 API 参考文档以开始使用。
使用 npm 安装包 @azure-rest/ai-inference
:
npm install @azure-rest/ai-inference
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端来使用聊天补全:
import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { AzureKeyCredential } from "@azure/core-auth";
const client = new ModelClient(
"https://<resource>.services.ai.azure.com/models",
new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);
浏览我们的示例,并阅读 API 参考文档以开始使用。
请使用以下命令安装 Azure AI 推理库:
dotnet add package Azure.AI.Inference --prerelease
导入下列命名空间:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端来使用聊天补全:
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
浏览我们的示例,并阅读 API 参考文档以开始使用。
将包添加到项目:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-inference</artifactId>
<version>1.0.0-beta.1</version>
</dependency>
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端来使用聊天补全:
ChatCompletionsClient client = new ChatCompletionsClientBuilder()
.credential(new AzureKeyCredential("{key}"))
.endpoint("https://<resource>.services.ai.azure.com/models")
.buildClient();
浏览我们的示例,并阅读 API 参考文档以开始使用。
使用参考部分来探索 API 设计以及可用的参数。 例如,聊天补全的参考部分详细介绍了如何使用路由 /chat/completions
根据聊天格式的指令生成预测。 请注意,URL 的根目录包含路径 /models
:
请求
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
api-key: <api-key>
Content-Type: application/json
对于聊天模型,可按如下所示创建请求:
from azure.ai.inference.models import SystemMessage, UserMessage
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="Explain Riemann's conjecture in 1 paragraph"),
],
model="mistral-large"
)
print(response.choices[0].message.content)
var messages = [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "Explain Riemann's conjecture in 1 paragraph" },
];
var response = await client.path("/chat/completions").post({
body: {
messages: messages,
model: "mistral-large"
}
});
console.log(response.body.choices[0].message.content)
requestOptions = new ChatCompletionsOptions()
{
Messages = {
new ChatRequestSystemMessage("You are a helpful assistant."),
new ChatRequestUserMessage("Explain Riemann's conjecture in 1 paragraph")
},
Model = "mistral-large"
};
response = client.Complete(requestOptions);
Console.WriteLine($"Response: {response.Value.Content}");
List<ChatRequestMessage> chatMessages = new ArrayList<>();
chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant"));
chatMessages.add(new ChatRequestUserMessage("Explain Riemann's conjecture in 1 paragraph"));
ChatCompletions chatCompletions = client.complete(new ChatCompletionsOptions(chatMessages));
for (ChatChoice choice : chatCompletions.getChoices()) {
ChatResponseMessage message = choice.getMessage();
System.out.println("Response:" + message.getContent());
}
请求
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
api-key: <api-key>
Content-Type: application/json
{
"messages": [
{
"role": "system",
"content": "You are a helpful assistant"
},
{
"role": "user",
"content": "Explain Riemann's conjecture in 1 paragraph"
}
],
"model": "mistral-large"
}
如果指定的模型名称与任何给定模型部署均不匹配,则会显示模型不存在的错误。 可以通过创建模型部署来控制哪些模型可供用户使用,如添加和配置模型部署中所述。
无密钥身份验证
部署到 Azure AI Services 中的 Azure AI Foundry 模型的模型支持使用 Microsoft Entra ID 进行无密钥授权。 无密钥授权可增强安全性、简化用户体验、降低作复杂性,并为新式开发提供可靠的合规性支持。 对于采用安全且可缩放的标识管理解决方案的组织来说,它是一个不错的选择。
若要使用无密钥身份验证, 请配置资源并向用户授予访问权限以执行推理。 配置后,可以按如下所示进行身份验证:
使用包管理器(例如 pip)安装包 azure-ai-inference
:
pip install azure-ai-inference
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端以通过 Entra ID 使用聊天补全:
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import DefaultAzureCredential
client = ChatCompletionsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=DefaultAzureCredential(),
credential_scopes=["https://cognitiveservices.azure.com/.default"],
)
使用 npm 安装包 @azure-rest/ai-inference
:
npm install @azure-rest/ai-inference
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端以通过 Entra ID 使用聊天补全:
import ModelClient from "@azure-rest/ai-inference";
import { isUnexpected } from "@azure-rest/ai-inference";
import { DefaultAzureCredential } from "@azure/identity";
const clientOptions = { credentials: { "https://cognitiveservices.azure.com" } };
const client = new ModelClient(
"https://<resource>.services.ai.azure.com/models",
new DefaultAzureCredential(),
clientOptions,
);
请使用以下命令安装 Azure AI 推理库:
dotnet add package Azure.AI.Inference --prerelease
安装 Azure.Identity
包:
dotnet add package Azure.Identity
导入下列命名空间:
using Azure;
using Azure.Identity;
using Azure.AI.Inference;
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端以通过 Entra ID 使用聊天补全:
TokenCredential credential = new DefaultAzureCredential();
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions();
BearerTokenAuthenticationPolicy tokenPolicy = new BearerTokenAuthenticationPolicy(credential, new string[] { "https://cognitiveservices.azure.com/.default" });
clientOptions.AddPolicy(tokenPolicy, HttpPipelinePosition.PerRetry);
ChatCompletionsClient client = new ChatCompletionsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
credential,
clientOptions.
);
将包添加到项目:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-inference</artifactId>
<version>1.0.0-beta.4</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.3</version>
</dependency>
然后,您可以使用这个包来调用模型。 以下示例演示如何创建客户端来使用聊天补全:
TokenCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
ChatCompletionsClient client = new ChatCompletionsClientBuilder()
.credential(defaultCredential)
.endpoint("https://<resource>.services.ai.azure.com/models")
.buildClient();
浏览我们的示例,并阅读 API 参考文档以开始使用。
使用参考部分探索 API 设计以及参数的可用性,并在标头 Authorization
中指定身份验证令牌。 例如,聊天补全的参考部分详细介绍了如何使用路由 /chat/completions
根据聊天格式的指令生成预测。 请注意,URL 的根目录包含路径 /models
:
请求
POST https://<resource>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
Authorization: Bearer <bearer-token>
Content-Type: application/json
令牌必须附带范围 https://cognitiveservices.azure.com/.default
进行颁发。
出于测试目的,为用户帐户获取有效令牌最容易的方法是使用 Azure CLI。 在控制台中,运行以下 Azure CLI 命令:
az account get-access-token --resource https://cognitiveservices.azure.com --query "accessToken" --output tsv
局限性
后续步骤