В этой статье объясняется, как создавать текстовые ответы для моделей Foundry, таких как модели Microsoft ИИ, DeepSeek и Grok, используя API для ответов. Полный список моделей Foundry, поддерживающих использование API ответов, см. в разделе "Поддерживаемые модели Foundry".
Необходимые условия
Чтобы использовать API ответов с развернутыми моделями в приложении, вам потребуется:
Подписка Azure. Если вы используете модели GitHub, вы можете обновить интерфейс и создать подписку Azure в процессе. Прочитайте Переход с моделей GitHub на модели Microsoft Foundry, если это ваш случай.
Проект Foundry. Этот тип проекта управляется ресурсом Foundry. Если у вас нет проекта Foundry, см. раздел Создание проекта для Microsoft Foundry.
URL конечной точки проекта Foundry, который имеет формат https://YOUR-RESOURCE-NAME.services.ai.azure.com/api/projects/YOUR_PROJECT_NAME.
Развертывание модели Foundry, например модели DeepSeek-R1-0528, используемой в этой статье. Если у вас еще нет развертывания, см. Добавление и настройка моделей Foundry для развертывания модели в вашем ресурсе.
Используйте стартовый комплект модели ИИ
Фрагменты кода, приведенные в этой статье, относятся к начальном набору моделей ИИ. Используйте этот начальный комплект как быстрый способ начать работу с полной облачной инфраструктурой и кодом, необходимыми для вызова Foundry Models, используя стабильную библиотеку OpenAI с API ответов.
Создание текста с помощью API ответов
Используйте код в этом разделе, чтобы выполнять вызовы API для работы с моделями Foundry. В примерах кода вы создаете клиент для использования модели, а затем отправляете его базовый запрос.
Совет
При развертывании модели на портале Foundry вы назначите ему имя развертывания. Используйте это имя развертывания (а не идентификатор каталога моделей) в параметре model вызовов API.
Установите библиотеки, включая клиентская библиотека Azure Identity:
pip install azure-identity
pip install -U openai
Используйте следующий код, чтобы настроить клиентский объект OpenAI в маршруте проекта, указать развертывание и создать ответы.
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import OpenAI
project_endpoint = "https://YOUR-RESOURCE-NAME.services.ai.azure.com/api/projects/YOUR_PROJECT_NAME"
# Build the base URL: project_endpoint + /openai/v1 (no api-version needed)
base_url = project_endpoint.rstrip("/") + "/openai/v1"
# get_bearer_token_provider returns a callable; call it to get automatic refresh of the token string
credential = DefaultAzureCredential()
token_provider = get_bearer_token_provider(credential, "https://ai.azure.com/.default")
client = OpenAI(
base_url=base_url,
api_key=token_provider(),
)
response = client.responses.create(
model="DeepSeek-R1-0528", # Replace with your deployment name, not the model ID
input="What are the top 3 benefits of cloud computing? Be concise.",
max_output_tokens=500,
)
print(f"Response: {response.output_text}")
print(f"Status: {response.status}")
print(f"Output tokens: {response.usage.output_tokens}")
Установите клиентскую библиотеку идентификации Azure:
dotnet add package Azure.Identity
dotnet add package OpenAI
Используйте следующий код, чтобы настроить клиентский объект OpenAI в маршруте проекта, указать развертывание и создать ответы.
using Azure.Identity;
using OpenAI;
using OpenAI.Responses;
var deploymentName = "DeepSeek-R1-0528"; // Replace with your deployment name, not the model ID
var project_endpoint = "https://YOUR-RESOURCE-NAME.services.ai.azure.com/api/projects/YOUR_PROJECT_NAME";
// Get EntraID token for keyless auth
var credential = new DefaultAzureCredential();
var token = await credential.GetTokenAsync(
new Azure.Core.TokenRequestContext(["https://ai.azure.com/.default"])
);
// Standard OpenAI client — no AzureOpenAI wrapper (no api-version needed with /v1 path)
var baseUrl = project_endpoint.TrimEnd('/') + "/openai/v1";
var client = new OpenAIClient(
new ApiKeyCredential(token.Token),
new OpenAIClientOptions { Endpoint = new Uri(baseUrl) });
// GetResponsesClient takes no parameter; model goes in CreateResponseOptions
var responseClient = client.GetResponsesClient(deploymentName);
var result = await responseClient.CreateResponseAsync(new CreateResponseOptions(
[ResponseItem.CreateUserMessageItem("What are the top 3 benefits of cloud computing? Be concise.")])
{ MaxOutputTokenCount = 500 }
);
Console.WriteLine($"Response: {result.Value.GetOutputText()}");
Console.WriteLine($"Status: {result.Value.Status}");
Console.WriteLine($"Output tokens: {result.Value.Usage.OutputTokenCount}");
Установите клиентскую библиотеку идентификации Azure перед тем как использовать DefaultAzureCredential.
npm install @azure/identity
npm install openai
Используйте следующий код, чтобы настроить клиентский объект OpenAI в маршруте проекта, указать развертывание и создать ответы.
import OpenAI from "openai";
import { DefaultAzureCredential } from "@azure/identity";
async function getToken(): Promise<string> {
const credential = new DefaultAzureCredential();
const tokenResponse = await credential.getToken(
"https://ai.azure.com/.default"
);
return tokenResponse.token;
}
async function main() {
const projectEndpoint = "https://YOUR-RESOURCE-NAME.services.ai.azure.com/api/projects/YOUR_PROJECT_NAME";
const deploymentName = "DeepSeek-R1-0528"; // Replace with your deployment name, not the model ID
const baseURL = projectEndpoint.replace(/\/+$/, "") + "/openai/v1";
const token = await getToken();
const client = new OpenAI({
baseURL,
apiKey: token,
});
const response = await client.responses.create({
model: deploymentName,
input: "What are the top 3 benefits of cloud computing? Be concise.",
max_output_tokens: 500,
});
console.log(`Response: ${response.output_text}`);
console.log(`Status: ${response.status}`);
console.log(`Output tokens: ${response.usage?.output_tokens}`);
}
main();
Для проверки подлинности с помощью Microsoft Entra ID требуется некоторая начальная настройка. Сначала установите клиентную библиотеку Azure Identity. Дополнительные сведения о том, как установить эту библиотеку, см. в клиентской библиотеке Azure Identity для Java.
Добавьте клиентскую библиотеку Azure Identity:
<dependencies>
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-java</artifactId>
<version>4.22.0</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.4</version>
</dependency>
</dependencies>
После настройки выберите, какой тип учетных данных использовать для azure.identity. Например, используется DefaultAzureCredential для проверки подлинности клиента.
DefaultAzureCredential — это самый простой вариант, так как он находит лучшие учетные данные для использования в своей среде выполнения.
Используйте следующий код, чтобы настроить клиентский объект OpenAI в маршруте проекта, указать развертывание и создать ответы.
import com.azure.core.credential.TokenRequestContext;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.responses.ResponseCreateParams;
public class Sample {
public static void main(String[] args) {
String endpoint = "https://YOUR-RESOURCE-NAME.services.ai.azure.com/api/projects/YOUR_PROJECT_NAME";
String deploymentName = "DeepSeek-R1-0528"; // Replace with your deployment name, not the model ID
// Get EntraID token for keyless auth
var credential = new DefaultAzureCredentialBuilder().build();
var context = new TokenRequestContext().addScopes("https://ai.azure.com/.default");
String token = credential.getToken(context).block().getToken();
// Standard OpenAI client — no Azure wrapper
// Java SDK uses /openai/v1 path (no api-version needed; SDK manages versioning internally)
String baseUrl = endpoint.replaceAll("/+$", "") + "/openai/v1";
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl(baseUrl)
.apiKey(token)
.build();
var response = client.responses().create(
ResponseCreateParams.builder()
.model(deploymentName)
.input("What are the top 3 benefits of cloud computing? Be concise.")
.maxOutputTokens(500)
.build()
);
System.out.printf("Response: %s%n", response.outputText());
System.out.printf("Status: %s%n", response.status());
response.usage().ifPresent(u ->
System.out.printf("Output tokens: %d%n", u.outputTokens()));
}
}
Перед запуском примера установите необходимые модули Go.
go get github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1
go get github.com/openai/openai-go/v3 v3.22.0
Используйте следующий код, чтобы настроить клиентский объект OpenAI в маршруте проекта, указать развертывание и создать ответы.
package main
import (
"context"
"fmt"
"os"
"strings"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
"github.com/openai/openai-go/v3/responses"
)
func main() {
projectEndpoint := "https://YOUR-RESOURCE-NAME.services.ai.azure.com/api/projects/YOUR_PROJECT_NAME"
deploymentName := "DeepSeek-R1-0528" // Replace with your deployment name, not the model ID
ctx := context.Background()
// Get EntraID token for keyless auth
credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create credential: %v\n", err)
os.Exit(1)
}
token, err := credential.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string{"https://ai.azure.com/.default"},
})
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to get token: %v\n", err)
os.Exit(1)
}
// Standard OpenAI client — no Azure wrapper (no api-version needed with /v1 path)
baseURL := strings.TrimRight(projectEndpoint, "/") + "/openai/v1"
client := openai.NewClient(
option.WithBaseURL(baseURL),
option.WithAPIKey(token.Token),
)
resp, err := client.Responses.New(ctx, responses.ResponseNewParams{
Model: deploymentName,
Input: responses.ResponseNewParamsInputUnion{
OfString: openai.String("What are the top 3 benefits of cloud computing? Be concise."),
},
MaxOutputTokens: openai.Int(500),
})
if err != nil {
fmt.Fprintf(os.Stderr, "API error: %v\n", err)
os.Exit(1)
}
fmt.Printf("Response: %s\n", resp.OutputText())
fmt.Printf("Status: %s\n", resp.Status)
fmt.Printf("Output tokens: %d\n", resp.Usage.OutputTokens)
}
Ответ включает созданный текст вместе с метаданными модели и использования.
Поддерживаемые модели Foundry
Несколько моделей Foundry поддерживаются для работы с API Responses.
Просмотр поддерживаемых моделей на портале Foundry
Чтобы просмотреть полный список поддерживаемых моделей на портале Foundry:
- Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry включен. Эти действия относятся к Foundry (new).
- Выберите "Обнаружить " в правой верхней части навигации, а затем " Модели " на левой панели.
- Откройте раскрывающийся список "Возможности" и выберите поддерживаемый фильтр агента .
Список поддерживаемых моделей
В этом разделе перечислены некоторые модели Foundry, поддерживаемые для использования с API ответов. Список поддерживаемых моделей Azure OpenAI см. в разделе Доступные модели Azure OpenAI.
Модели продаются непосредственно компанией Azure:
-
MAI-DS-R1: Детерминированное, точностное рассуждение.
-
grok-4: Гранично масштабное рассуждение для решения сложных многошаговых задач.
-
grok-4-fast-reasoning: ускоренное агентивное рассуждение, оптимизированное для автоматизации рабочих процессов.
-
grok-4-fast-non-reasoning: высокая пропускная способность, низкая задержка и системная маршрутизация.
-
grok-3: строгое обоснование сложных рабочих процессов на уровне системы.
-
grok-3-mini: упрощенная модель, оптимизированная для интерактивных вариантов использования с большим объемом.
-
Ллома-3.3-70B-Instruct: универсальная модель для корпоративных вопросов и ответов, поддержки принятия решений и системной оркестрации.
-
Llama-4-Maverick-17B-128E-Instruct-FP8: модель, оптимизированная под FP8, обеспечивающая быстрое и экономичное выполнение вывода.
-
DeepSeek-V3-0324: многомодальное понимание текста и изображений.
-
DeepSeek-V3.1: улучшенное многомодальное рассуждение и прикреплённое извлечение.
-
DeepSeek-R1-0528: расширенные развернутые формы и многошаговые умозаключения.
-
gpt-oss-120b: модель open-ecosystem, которая поддерживает прозрачность и воспроизводимость.
Устранение распространенных ошибок
| Ошибка |
Причина |
Разрешение |
| 401 Несанкционированный доступ |
Недействительные или истекшие учетные данные |
Убедитесь, что для ресурса DefaultAzureCredential назначена роль пользователя Cognitive Services OpenAI. |
| 404 Не найдено |
Неверное имя конечной точки или развертывания |
Убедитесь, что URL-адрес конечной точки включает /api/projects/YOUR_PROJECT_NAME и имя развертывания соответствует порталу Foundry. |
| Модель 400 не поддерживается |
Модель не поддерживает API ответов |
Проверьте список поддерживаемых моделей и убедитесь, что развертывание использует совместимую модель. |
Связанное содержимое