你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
当前查看:Foundry(经典)门户版本 - 切换到 Foundry 门户新版本
Foundry 资源提供对模型、代理和工具的统一访问。 本文介绍如何为您的具体场景选择合适的 SDK 和终结点。
| SDK | 它的用途是 | 端点 |
|---|---|---|
| Foundry SDK | 通过兼容 OpenAI 的接口来提供 Foundry 独有的功能。 包括通过响应 API(非聊天补全 API)访问 Foundry 直接模型。 | https://<resource-name>.services.ai.azure.com/api/projects/<project-name> |
| OpenAI SDK | 最新的 OpenAI SDK 中的模型和功能,涵盖完整的 OpenAI API 接口内容,包括嵌入功能。 通过聊天完成 API(而不是响应)提供的 Foundry 直接模型。 | https://<resource-name>.openai.azure.com/openai/v1 |
| Foundry Tools SDK | 预生成解决方案(视觉、语音、内容安全等)。 | 特定于工具的终结点(因服务而异)。 |
| 代理框架 | 代码中的多代理编排。 与云无关。 | 借助 Foundry SDK 调用项目端点。 |
选择 SDK:
- 构建包含代理、评估或 Foundry 特定功能的应用时,请使用Foundry SDK
- 当需要最大限度的 OpenAI 兼容性时、生成嵌入时或通过聊天补全使用 Foundry 直接模型,使用 OpenAI SDK
- 当使用特定 AI 服务(视觉、语音、语言等)时,使用 Foundry Tools SDK
- 在代码中生成多代理系统时使用 代理框架 (本地业务流程)
注意
资源类型: Foundry 资源提供前面列出的所有终结点。 Azure OpenAI 资源仅提供 /openai/v1 终结点。
此处的 Authentication: 示例使用 Microsoft Entra ID (DefaultAzureCredential)。 API 密钥适用于 /openai/v1. 将密钥作为 api_key 传递,而非令牌提供程序。
先决条件
-
具有活动订阅的Azure帐户。 如果没有订阅,请创建一个 free Azure 帐户,其中包括免费试用订阅。
具有以下Azure RBAC 角色之一来创建和管理 Foundry 资源:
- Azure AI 用户(开发最低特权角色)
- Azure AI Project Manager(用于管理 Foundry 项目)
- 参与者 或 所有者 (对于订阅级权限)
有关每个角色的权限的详细信息,请参阅 Microsoft Foundry 的基于角色的访问控制。
按照 准备开发环境中所述安装所需的语言运行时、全局工具和 VS Code 扩展。
重要
在开始之前,请确保开发环境已准备就绪。
本文重点介绍 特定于方案的步骤 ,例如 SDK 安装、身份验证和运行示例代码。
验证先决条件
在继续之前,请确认:
- Azure订阅处于活动状态:
az account show - 具有所需的 RBAC 角色:检查 Azure 门户→ Foundry 资源 → 访问控制 (IAM)
- 安装的语言运行时:
- Python:
python --version(≥3.8)
- Python:
- 安装的语言运行时:
- Node.js:
node --version(≥18)
- Node.js:
- 安装的语言运行时:
- .NET:
dotnet --version(≥6.0)
- .NET:
- 安装的语言运行时:
- Java:
java --version(≥11)
- Java:
Foundry SDK
Foundry SDK 连接到单个项目终结点,该终结点提供对最常用的 Foundry 功能的访问权限:
https://<resource-name>.services.ai.azure.com/api/projects/<project-name>
注意
如果组织使用自定义子域,请在终结点 URL 中替换为<resource-name><your-custom-subdomain>。
此方法简化了应用程序配置。 不需要管理多个终结点,而只需配置一个终结点。
安装 SDK
注意
本文适用于 Foundry 项目。 此处显示的代码不适用于 基于中心的项目。 有关详细信息,请参阅 项目类型。
注意
SDK 版本: 本文介绍如何安装 1.x SDK。 请确保遵循的示例与已安装的包匹配。 切换到新的 Foundry 门户文档以查看 2.x 的文章。
| SDK 版本 | 门户版本 | 地位 | Python 包 |
|---|---|---|---|
| 2.x | 铸造厂(新) | 稳定 | azure-ai-projects>=2.0.0 |
| 1.x | Foundry(经典版) | 稳定 | azure-ai-projects==1.0.0 |
Python 版的 Azure AI Projects 客户端库 是一个统一的库,它通过连接到单个项目终结点,使多个客户端库能够一起使用。
运行以下命令,为 Foundry 经典项目安装 1.x 包。
pip install openai azure-identity azure-ai-projects==1.0.0
| SDK 版本 | 门户版本 | 地位 | Java包 |
|---|---|---|---|
| 2.0.0 | 铸造厂(新) | 稳定 | azure-ai-projectsazure-ai-agents |
| SDK 版本 | 门户版本 | 地位 | JavaScript 包 |
|---|---|---|---|
| 2.0.1 | 铸造厂(新) | 稳定 | @azure/ai-projects |
| 1.0.1 | Foundry 经典 | 稳定 | @azure/ai-projects |
| SDK 版本 | 门户版本 | 地位 | .NET包 |
|---|---|---|---|
| 2.0.0-beta.1 (预览版) | 铸造厂(新) | 预览 | Azure.AI.ProjectsAzure.AI.Projects.OpenAI |
| 1.1.0 (GA) | Foundry 经典 | 稳定 | Azure.AI.Projects |
Azure AI Projects 客户端库适用于 Java, 是一个统一的库,可以通过连接到单个项目终结点来整合使用多个客户端库。
重要
Java azure-ai-projects 包没有 1.x GA 版本。 Java部分中的代码示例直接使用 azure-ai-inference 包,该包即将弃用,将于 2026 年 5 月 30 日停用。
对于 2.x Projects SDK,请访问新的 Foundry 门户文档。
将这些依赖项添加到 Maven pom.xml 中(适用于 Foundry 经典项目)。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-inference</artifactId>
<version>1.0.0-beta.6</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.18.2</version>
</dependency>
适用于 JavaScript 的 Azure AI Projects 客户端库是一个统一库,可通过连接到单个项目终结点将多个客户端库一起使用。
运行以下命令,为 Foundry 经典项目安装 1.x JavaScript 包。
npm install @azure/ai-projects@1.0.1 @azure/identity
适用于 .NET 的 Azure AI Projects 客户端库 是一个统一的库,通过连接到单个项目终结点,可以将多个客户端库一起使用。
运行以下命令,为 Foundry 经典项目添加 1.x Azure AI SDK 包。
# Add 1.x Azure AI SDK packages
dotnet add package Azure.Identity
dotnet add package Azure.AI.Projects --version 1.1.0
dotnet add package Azure.AI.Agents.Persistent --version 1.1.0
dotnet add package Azure.AI.Inference
使用 Foundry SDK
SDK 公开两种客户端类型,因为 Foundry 和 OpenAI 具有不同的 API 形状:
- 项目客户端 – 用于 Foundry 自有操作,而 OpenAI 没有等效项。 示例:列出连接、检索项目属性、启用跟踪。
-
OpenAI 兼容的客户端 - 用于基于 OpenAI 概念构建的 Foundry 功能。 响应 API、代理、评估和微调都使用 OpenAI 样式的请求/响应模式。 此客户端还提供对 Foundry 直接模型(在 Foundry 中托管的非Azure-OpenAI 模型)的访问权限。 项目的终结点在
/openai路由上处理此网络流量。
大多数应用都使用这两个客户端。 使用项目客户端进行安装和配置,然后使用 OpenAI 兼容的客户端运行代理、评估和调用模型(包括 Foundry 直接模型)。
创建项目客户端:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
project_client = AIProjectClient(
endpoint="https://<resource-name>.services.ai.azure.com/api/projects/<project-name>",
credential=DefaultAzureCredential(),
)
从项目创建与 OpenAI 兼容的客户端:
models = project_client.get_openai_client(api_version="2024-10-21")
chat_responses = models.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "What is the size of France in square miles?"},
],
)
print(chat_responses.choices[0].message.content)
创建项目客户端:
package com.azure.ai.foundry.samples;
import com.azure.ai.inference.ChatCompletionsClient;
import com.azure.ai.inference.ChatCompletionsClientBuilder;
import com.azure.ai.inference.models.ChatCompletions;
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.credential.TokenCredential;
import com.azure.core.exception.HttpResponseException;
import com.azure.core.util.logging.ClientLogger;
import com.azure.identity.DefaultAzureCredentialBuilder;
String prompt = "What best practices should I follow when asking an AI model to review Java code?";
String endpoint = "https://<resource-name>.services.ai.azure.com/api/projects/<project-name>";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
ChatCompletionsClient client = new ChatCompletionsClientBuilder()
.credential(credential)
.endpoint(endpoint)
.buildClient();
```**Create and use an OpenAI-compatible client from your project:**
```java
ChatCompletions completions = client.complete(prompt);
String content = completions.getChoice().getMessage().getContent();
System.out.println("\nResponse from AI assistant:\n" + content);
创建项目客户端:
const endpoint = "https://<resource-name>.services.ai.azure.com/api/projects/<project-name>";
const deployment = "gpt-4o";
const project = new AIProjectClient(endpoint, new DefaultAzureCredential());
从项目创建与 OpenAI 兼容的客户端:
const client = await project.getAzureOpenAIClient({
// The API version should match the version of the Azure OpenAI resource
apiVersion: "2024-12-01-preview"
});
const chatCompletion = await client.chat.completions.create({
model: deployment,
messages: [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "What is the speed of light?" },
],
});
console.log(chatCompletion.choices[0].message.content);
创建项目客户端:
using System.ClientModel.Primitives;
using Azure.AI.OpenAI;
using Azure.AI.Projects;
using Azure.Identity;
using OpenAI.Chat;
string endpoint = "https://<resource-name>.services.ai.azure.com/api/projects/<project-name>";
AIProjectClient projectClient = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential());
从项目创建与 OpenAI 兼容的客户端:
ClientConnection connection = projectClient.GetConnection(typeof(AzureOpenAIClient).FullName!);
if (!connection.TryGetLocatorAsUri(out Uri uri) || uri is null)
{
throw new InvalidOperationException("Invalid URI.");
}
uri = new Uri($"https://{uri.Host}");
const string modelDeploymentName = "gpt-4o";
AzureOpenAIClient azureOpenAIClient = new AzureOpenAIClient(uri, new DefaultAzureCredential());
ChatClient chatClient = azureOpenAIClient.GetChatClient(deploymentName: modelDeploymentName);
Console.WriteLine("Complete a chat");
ChatCompletion result = chatClient.CompleteChat("List all the rainbow colors");
Console.WriteLine(result.Content[0].Text);
使用 Foundry SDK 可以执行的操作
- Access Foundry 模型,包括 Azure OpenAI
- 使用 Foundry 代理服务
- 运行云评估
- 启用应用跟踪
- 微调模型
- 获取 Foundry 工具、本地编排等的终结点和密钥
故障 排除
身份验证错误
如果看到 DefaultAzureCredential failed to retrieve a token:
Verify Azure CLI 已经过身份验证:
az account show az login # if not logged in检查 RBAC 角色分配:
- 确认在 Foundry 项目中至少拥有 Azure AI 用户角色
- 请参阅 分配 Azure 角色
用于生产环境中的托管标识:
- 请确保为托管标识分配了适当的角色
- 请参阅 配置托管标识
终结点配置错误
如果看到 Connection refused 或 404 Not Found:
- 验证资源和项目名称 是否与实际部署匹配
-
检查终结点 URL 格式:应为
https://<resource-name>.services.ai.azure.com/api/projects/<project-name> -
对于自定义子域:将
<resource-name>替换为自定义子域
SDK 版本不匹配
如果代码示例失败并显示AttributeError或ModuleNotFoundError:
检查 SDK 版本:
pip show azure-ai-projects # Python npm list @azure/ai-projects # JavaScript dotnet list package # .NET使用正确的版本标志重新安装:请参阅上述每种语言部分中的安装命令
OpenAI SDK
如果需要完整的 OpenAI API 图面和最大客户端兼容性,请使用 OpenAI SDK。 此终结点提供对 Azure OpenAI 模型和 Foundry 直接模型(通过聊天补全 API)的访问。 它不提供对 Foundry 特定功能(如代理和评估)的访问权限。
以下代码片段演示如何直接使用 Azure OpenAI /openai/v1 终结点。
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://ai.azure.com/.default"
)
client = OpenAI(
base_url = "https://<resource-name>.openai.azure.com/openai/v1/",
api_key=token_provider,
)
response = client.responses.create(
model="model_deployment_name",
input= "What is the size of France in square miles?"
)
print(response.model_dump_json(indent=2))
有关详细信息,请参阅 Azure OpenAI 支持的编程语言。 预期输出:
{
"id": "resp_abc123",
"object": "response",
"created": 1234567890,
"model": "gpt-5.2",
"output_text": "France has an area of approximately 213,011 square miles (551,695 square kilometers)."
}
有关详细信息,请参阅 Azure OpenAI 支持的编程语言
重要
本文中标记为(预览)的项目目前以公共预览版提供。 此预览版在没有服务级别协议的情况下提供,不建议将其用于生产工作负荷。 某些功能可能不受支持,或者可能具有受限功能。 有关详细信息,请参阅 Microsoft Azure 预览版的使用条款。
以下代码片段演示如何直接使用 Azure OpenAI /openai/v1 终结点。
import com.azure.ai.openai.OpenAIClient;
import com.azure.ai.openai.OpenAIClientBuilder;
import com.azure.ai.openai.models.ChatChoice;
import com.azure.ai.openai.models.ChatCompletions;
import com.azure.ai.openai.models.ChatCompletionsOptions;
import com.azure.ai.openai.models.ChatRequestAssistantMessage;
import com.azure.ai.openai.models.ChatRequestMessage;
import com.azure.ai.openai.models.ChatRequestSystemMessage;
import com.azure.ai.openai.models.ChatRequestUserMessage;
import com.azure.ai.openai.models.ChatResponseMessage;
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.util.Configuration;
import java.util.ArrayList;
import java.util.List;
String endpoint = "https://<resource-name>.openai.azure.com/openai/v1";
String deploymentName = "gpt-5.2";
TokenCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
OpenAIClient client = new OpenAIClientBuilder()
.credential(defaultCredential)
.endpoint("{endpoint}")
.buildClient();
List<ChatRequestMessage> chatMessages = new ArrayList<>();
chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant."));
chatMessages.add(new ChatRequestUserMessage("What is the speed of light?"));
ChatCompletions chatCompletions = client.getChatCompletions(deploymentName, new ChatCompletionsOptions(chatMessages));
System.out.printf("Model ID=%s is created at %s.%n", chatCompletions.getId(), chatCompletions.getCreatedAt());
for (ChatChoice choice : chatCompletions.getChoices()) {
ChatResponseMessage message = choice.getMessage();
System.out.printf("Index: %d, Chat Role: %s.%n", choice.getIndex(), message.getRole());
System.out.println("Message:");
System.out.println(message.getContent());
有关使用 OpenAI SDK 的详细信息,请参阅 Azure OpenAI 支持的编程语言。
import { AzureOpenAI } from "openai";
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
const deployment = "gpt-4o";
const endpoint = "https://<resource-name>.openai.azure.com";
const scope = "https://ai.azure.com/.default";
const apiVersion = "2024-04-01-preview";
const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
const options = { azureADTokenProvider, deployment, apiVersion, endpoint };
const client = new AzureOpenAI(options);
const result = await client.chat.completions.create({
model: deployment,
messages: [
{ role: "system", content: "You are a helpful assistant" },
{ role: "user", content: "What is the speed of light?" },
],
});
console.log(result.choices[0].message.content);
有关使用 OpenAI SDK 的详细信息,请参阅 Azure OpenAI 支持的编程语言。
- 安装 OpenAI 包:运行以下命令,将 OpenAI 客户端库添加到.NET项目。
dotnet add package OpenAI ```When it succeeds, the .NET CLI confirms that it installed the `OpenAI` package. This snippet configures `DefaultAzureCredential`, builds `OpenAIClientOptions`, and creates a `ChatClient` for the Azure OpenAI v1 endpoint. ```csharp using System.ClientModel.Primitives; using Azure.Identity; using OpenAI; using OpenAI.Chat; #pragma warning disable OPENAI001 const string directModelEndpoint = "https://<resource-name>.openai.azure.com/openai/v1/"; const string modelDeploymentName = "gpt-5.2"; BearerTokenPolicy tokenPolicy = new( new DefaultAzureCredential(), "https://ai.azure.com/.default"); OpenAIClient openAIClient = new( authenticationPolicy: tokenPolicy, options: new OpenAIClientOptions() { Endpoint = new($"{directModelEndpoint}"), }); ChatClient chatClient = openAIClient.GetChatClient(modelDeploymentName); ChatCompletion completion = await chatClient.CompleteChatAsync( [ new SystemChatMessage("You are a helpful assistant."), new UserChatMessage("How many feet are in a mile?") ]); Console.WriteLine(completion.Content[0].Text); #pragma warning restore OPENAI001
有关使用 OpenAI SDK 的详细信息,请参阅 Azure OpenAI 支持的编程语言。
使用代理框架进行本地编排
Microsoft Agent Framework 是一种开源 SDK,用于在代码(例如,.NET和Python)中使用与云提供程序无关的接口生成多代理系统。
若要在本地定义和协调代理,请使用 Agent Framework。 如果希望这些代理针对 Foundry 模型运行,或者希望代理框架协调在 Foundry 中托管的代理,请将其与 Foundry SDK 配对。
有关详细信息,请参阅 Microsoft Agent Framework 概述。
Foundry Tools SDK
Foundry 工具(以前Azure AI 服务)是具有专用 SDK 的预构建点解决方案。 使用以下端点来使用 Foundry 工具。
应使用哪个终结点?
根据需求选择终结点:
使用 Azure AI 服务终结点访问计算机视觉、内容安全、文档智能、语言、翻译和令牌工场工具。
Foundry Tools 终结点:https://<your-resource-name>.cognitiveservices.azure.com/
注意
终结点使用资源名称或自定义子域。 如果您的组织设置了自定义子域,请在所有终结点示例中将your-resource-name替换为your-custom-subdomain。
如果您的工作负载使用即将停用的 Azure AI 语言服务功能(例如情感分析、关键短语提取、汇总、实体链接、CLU 或 CQA),请计划迁移到 Microsoft Foundry 的替代方案。 对于新开发,请考虑使用 Foundry SDK 或 OpenAI 兼容接口,如本文前面所述。 请参阅 从 Language Studio 迁移到 Microsoft Foundry。
对于 Speech and Translation Foundry Tools,请使用以下表中的终结点。 将占位符替换为资源信息。
语音端点
| 铸造工具 | 端点 |
|---|---|
| 语音转文本 (标准) | https://<YOUR-RESOURCE-REGION>.stt.speech.microsoft.com |
| 语音合成(神经网络) | https://<YOUR-RESOURCE-REGION>.tts.speech.microsoft.com |
| 定制声音 | https://<YOUR-RESOURCE-NAME>.cognitiveservices.azure.com/ |
翻译终结点
| 铸造工具 | 端点 |
|---|---|
| 文本翻译 | https://api.cognitive.microsofttranslator.com/ |
| 文档翻译 | https://<YOUR-RESOURCE-NAME>.cognitiveservices.azure.com/ |
语言端点
| 铸造工具 | 端点 |
|---|---|
| 文本分析 | https://<YOUR-RESOURCE-NAME>.cognitiveservices.azure.com |
重要
2027 年 3 月 20 日,Azure Language Studio 将停用并迁移到 Microsoft Foundry;Microsoft Foundry 中将提供所有功能和未来的增强功能。
2029 年 3 月 31 日,以下Azure语言功能将停用(终止支持)。 在该日期之前,用户应迁移现有工作负载并将新项目载入 Microsoft Foundry 模型,以增强自然语言理解和简化的应用程序集成:
- 关键短语提取
- 情绪分析和观点挖掘
- 自定义文本分类
- 对话式语言理解 (CLU)
- 自定义问答 (CQA)
- 编排工作流
- 摘要生成(包括抽取式和生成式,适用于文档及对话)
- 实体链接
继续支持的核心功能:语言检测、PII 检测、健康文本分析、预生成 NER 和自定义 NER。
有关迁移选项,请参阅 Migrate 从 Language Studio 到 Microsoft Foundry。