Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Необходимые условия
- Развернутая модель Azure OpenAI
- Один из следующих методов проверки подлинности:
- Microsoft Entra ID (рекомендуется).
- Ключ API.
поддержка версий Azure OpenAI API
- API общедоступной версии 1 (GA) теперь разрешает доступ к операциям как общедоступной, так и предварительной версии. Дополнительные сведения см. в руководстве по жизненному циклу версий API.
Установка
dotnet add package OpenAI
Проверки подлинности
Безопасный подход к аутентификации без ключей — использовать Microsoft Entra ID (ранее Azure Active Directory) через библиотеку Azure Identity. Чтобы использовать библиотеку, выполните следующие действия.
dotnet add package Azure.Identity
Используйте нужный тип учетных данных из библиотеки. Например, DefaultAzureCredential:
using Azure.Identity;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel.Primitives;
#pragma warning disable OPENAI001
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
ChatClient client = new(
model: "gpt-4.1-nano",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions() {
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
ChatCompletion completion = client.CompleteChat("Tell me about the bitter lesson.");
Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");
Для получения дополнительной информации об аутентификации Azure OpenAI без ключей см. статью "Начало работы с блоком безопасности Azure OpenAI". Краткое руководство.
Чат
Пример запроса завершения чата в модель рассуждений.
using OpenAI;
using OpenAI.Chat;
using System.ClientModel.Primitives;
#pragma warning disable OPENAI001 //currently required for token based authentication
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
ChatClient client = new(
model: "o4-mini",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
ChatCompletionOptions options = new ChatCompletionOptions
{
ReasoningEffortLevel = ChatReasoningEffortLevel.Low,
MaxOutputTokenCount = 100000
};
ChatCompletion completion = client.CompleteChat(
new DeveloperChatMessage("You are a helpful assistant"),
new UserChatMessage("Tell me about the bitter lesson")
);
Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");
Эмбеддинги
using OpenAI;
using OpenAI.Embeddings;
using System.ClientModel;
string apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY")
?? throw new InvalidOperationException("AZURE_OPENAI_API_KEY environment variable is not set");
EmbeddingClient client = new(
"text-embedding-3-large",
credential: new ApiKeyCredential(apiKey),
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
string input = "This is a test";
OpenAIEmbedding embedding = client.GenerateEmbedding(input);
ReadOnlyMemory<float> vector = embedding.ToFloats();
Console.WriteLine($"Embeddings: [{string.Join(", ", vector.ToArray())}]");
API для ответов
using OpenAI;
using OpenAI.Responses;
using System.ClientModel.Primitives;
using Azure.Identity;
#pragma warning disable OPENAI001 //currently required for token based authentication
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
OpenAIResponseClient client = new(
model: "o4-mini",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
OpenAIResponse response = await client.CreateResponseAsync(
userInputText: "What's the optimal strategy to win at poker?",
new ResponseCreationOptions()
{
ReasoningOptions = new ResponseReasoningOptions()
{
ReasoningEffortLevel = ResponseReasoningEffortLevel.High,
},
});
Console.WriteLine(response.GetOutputText());
Стриминг
using OpenAI;
using OpenAI.Responses;
using System.ClientModel.Primitives;
using Azure.Identity;
#pragma warning disable OPENAI001 //currently required for token based authentication
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
#pragma warning disable OPENAI001
OpenAIResponseClient client = new(
model: "o4-mini",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
await foreach (StreamingResponseUpdate update
in client.CreateResponseStreamingAsync(
userInputText: "What's the optimal strategy to win at poker?",
new ResponseCreationOptions()
{
ReasoningOptions = new ResponseReasoningOptions()
{
ReasoningEffortLevel = ResponseReasoningEffortLevel.High,
},
}))
{
if (update is StreamingResponseOutputItemAddedUpdate itemUpdate
&& itemUpdate.Item is ReasoningResponseItem reasoningItem)
{
Console.WriteLine($"[Reasoning] ({reasoningItem.Status})");
}
else if (update is StreamingResponseOutputTextDeltaUpdate delta)
{
Console.Write(delta.Delta);
}
}
СЕРВЕР MCP
using OpenAI;
using OpenAI.Responses;
using System.ClientModel.Primitives;
using Azure.Identity;
#pragma warning disable OPENAI001 //currently required for token based authentication
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
OpenAIResponseClient client = new(
model: "o4-mini",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
ResponseCreationOptions options = new();
options.Tools.Add(ResponseTool.CreateMcpTool(
serverLabel: "microsoft_learn",
serverUri: new Uri("https://learn.microsoft.com/api/mcp"),
toolCallApprovalPolicy: new McpToolCallApprovalPolicy(GlobalMcpToolCallApprovalPolicy.NeverRequireApproval)
));
OpenAIResponse response = (OpenAIResponse)client.CreateResponse([
ResponseItem.CreateUserMessageItem([
ResponseContentPart.CreateInputTextPart("Search for information about Azure Functions")
])
], options);
Console.WriteLine(response.GetOutputText());
Обработка ошибок
Коды ошибок
| Код состояния | Тип ошибки |
|---|---|
| 400 | Bad Request Error |
| 401 | Authentication Error |
| 403 | Permission Denied Error |
| 404 | Not Found Error |
| 422 | Unprocessable Entity Error |
| 429 | Rate Limit Error |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
| 504 | Gateway Timeout |
Повторные попытки
Клиентские классы автоматически повторяют следующие ошибки до трех раз с помощью экспоненциального отката:
- Ошибка 408: Время ожидания запроса (Request Timeout)
- 429 слишком много запросов
- Ошибка внутреннего сервера 500
- Недопустимый шлюз 502
- Служба 503 недоступна
- Ошибка 504: время ожидания шлюза истекло
Исходный код | Пакет (pkg.go.dev) | Справочная документация | по REST APIСправочная документация по пакетам
поддержка версий Azure OpenAI API
- API общедоступной версии 1 (GA) теперь разрешает доступ к операциям как общедоступной, так и предварительной версии. Дополнительные сведения см. в руководстве по жизненному циклу версий API.
Установка
Установите модули openai и azidentity с помощью команды go get.
go get -u 'github.com/openai/openai-go'
# optional
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Проверки подлинности
Модуль azidentity используется для проверки подлинности Microsoft Entra ID с Azure OpenAI.
package main
import (
"context"
"fmt"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/azure"
"github.com/openai/openai-go/v3/option"
)
func main() {
// Create an Azure credential
tokenCredential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
panic(fmt.Sprintf("Failed to create credential: %v", err))
}
// Create a client with Azure OpenAI endpoint and token credential
client := openai.NewClient(
option.WithBaseURL("https://YOUR-RESOURCE_NAME.openai.azure.com/openai/v1/"),
azure.WithTokenCredential(tokenCredential),
)
// Make a completion request
chatCompletion, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Explain what the bitter lesson is?"),
},
Model: "o4-mini", // Use your deployed model name on Azure
})
if err != nil {
panic(err.Error())
}
fmt.Println(chatCompletion.Choices[0].Message.Content)
}
Дополнительные сведения о проверке подлинности без ключей для Azure OpenAI см. в разделе Использование Azure OpenAI без ключей.
Эмбеддинги
package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
// Get API key from environment variable
apiKey := os.Getenv("AZURE_OPENAI_API_KEY")
if apiKey == "" {
panic("AZURE_OPENAI_API_KEY environment variable is not set")
}
// Create a client with Azure OpenAI endpoint and API key
client := openai.NewClient(
option.WithBaseURL("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"),
option.WithAPIKey(apiKey),
)
ctx := context.Background()
text := "The attention mechanism revolutionized natural language processing"
// Make an embedding request
embedding, err := client.Embeddings.New(ctx, openai.EmbeddingNewParams{
Input: openai.EmbeddingNewParamsInputUnion{OfString: openai.String(text)},
Model: "text-embedding-3-small", // Use your deployed model name on Azure
})
if err != nil {
panic(err.Error())
}
// Print embedding information
fmt.Printf("Model: %s\n", embedding.Model)
fmt.Printf("Number of embeddings: %d\n", len(embedding.Data))
fmt.Printf("Embedding dimensions: %d\n", len(embedding.Data[0].Embedding))
fmt.Printf("Usage - Prompt tokens: %d, Total tokens: %d\n", embedding.Usage.PromptTokens, embedding.Usage.TotalTokens)
// Print first few values of the embedding vector
fmt.Printf("First 10 embedding values: %v\n", embedding.Data[0].Embedding[:10])
}
Ответы
package main
import (
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/azure"
"github.com/openai/openai-go/v3/option"
"github.com/openai/openai-go/v3/responses"
)
func main() {
// Create Azure token credential
tokenCredential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
panic(err)
}
// Create client with Azure endpoint and token credential
client := openai.NewClient(
option.WithBaseURL("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"),
azure.WithTokenCredential(tokenCredential),
)
ctx := context.Background()
question := "Tell me about the attention is all you need paper"
resp, err := client.Responses.New(ctx, responses.ResponseNewParams{
Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(question)},
Model: "o4-mini",
})
if err != nil {
panic(err)
}
println(resp.OutputText())
}
Исходный код |Справочная документация | по REST APIСправочная документация по | пакетамMaven Central
поддержка версий Azure OpenAI API
- API общедоступной версии 1 (GA) теперь разрешает доступ к операциям как общедоступной, так и предварительной версии. Дополнительные сведения см. в руководстве по жизненному циклу версий API.
Установка
Gradle
implementation("com.openai:openai-java:4.0.1")
Maven
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-java</artifactId>
<version>4.0.1</version>
</dependency>
Проверки подлинности
Для проверки подлинности с помощью Microsoft Entra ID требуется некоторая начальная настройка:
Добавьте пакет удостоверений Azure:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.18.0</version>
</dependency>
После установки вы можете выбрать, какой тип учетных данных из azure.identity использовать. Например, для проверки подлинности клиента можно использовать DefaultAzureCredential: задайте значения идентификатора клиента, идентификатора клиента и секрета клиента приложения Microsoft Entra ID в качестве переменных среды: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET.
Авторизоваться проще всего с помощью DefaultAzureCredential. Он находит лучшие учетные данные для использования в своей работающей среде, хотя использование DefaultAzureCredential рекомендуется только для тестирования, а не для рабочей среды.
Credential tokenCredential = BearerTokenCredential.create(
AuthenticationUtil.getBearerTokenSupplier(
new DefaultAzureCredentialBuilder().build(),
"https://ai.azure.com/.default"));
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/")
.credential(tokenCredential)
.build();
Дополнительные сведения о проверке подлинности без ключей для Azure OpenAI см. в разделе Использование Azure OpenAI без ключей.
Ответы
package com.example;
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.ChatModel;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;
import com.azure.core.credential.AzureKeyCredential;
public class OpenAITest {
public static void main(String[] args) {
// Get API key from environment variable for security
String apiKey = System.getenv("OPENAI_API_KEY");
String resourceName = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1";
String modelDeploymentName = "gpt-4.1"; //replace with you model deployment name
try {
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl(resourceName)
.apiKey(apiKey)
.build();
ResponseCreateParams params = ResponseCreateParams.builder()
.input("Tell me about the bitter lesson?")
.model(modelDeploymentName)
.build();
Response response = client.responses().create(params);
System.out.println("Response: " + response);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Исходный код | Пакет (npm) | Ссылки |
поддержка версий Azure OpenAI API
- API общедоступной версии 1 (GA) теперь разрешает доступ к операциям как общедоступной, так и предварительной версии. Дополнительные сведения см. в руководстве по жизненному циклу версий API.
Установка
npm install openai
Проверки подлинности
npm install @azure/identity
Однако для проверки подлинности OpenAI клиента необходимо использовать getBearerTokenProvider функцию из @azure/identity пакета. Эта функция создает поставщика токенов, который OpenAI внутренне используется для получения токенов для каждого запроса. Поставщик токенов создается следующим образом:
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { OpenAI } from "openai";
const tokenProvider = getBearerTokenProvider(
new DefaultAzureCredential(),
'https://ai.azure.com/.default');
const client = new OpenAI({
baseURL: "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
apiKey: tokenProvider
});
Для получения дополнительной информации об аутентификации Azure OpenAI без ключей см. статью "Начало работы с блоком безопасности Azure OpenAI". Краткое руководство.
Ответы
responses.create
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { OpenAI } from "openai";
const tokenProvider = getBearerTokenProvider(
new DefaultAzureCredential(),
'https://ai.azure.com/.default');
const client = new OpenAI({
baseURL: "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
apiKey: tokenProvider
});
const response = await client.responses.create({
model: 'gpt-4.1-nano', //model deployment name
instructions: 'You are a helpful AI agent',
input: 'Tell me about the bitter lesson?',
});
console.log(response.output_text);
Стриминг
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { OpenAI } from "openai";
const tokenProvider = getBearerTokenProvider(
new DefaultAzureCredential(),
'https://ai.azure.com/.default');
const client = new OpenAI({
baseURL: "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
apiKey: tokenProvider
});
const stream = await client.responses.create({
model: 'gpt-4.1-nano', // model deployment name
input: 'Provide a brief history of the attention is all you need paper.',
stream: true,
});
for await (const event of stream) {
if (event.type === 'response.output_text.delta' && event.delta) {
process.stdout.write(event.delta);
}
}
СЕРВЕР MCP
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { OpenAI } from "openai";
const tokenProvider = getBearerTokenProvider(
new DefaultAzureCredential(),
'https://ai.azure.com/.default');
const client = new OpenAI({
baseURL: "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
apiKey: tokenProvider
});
const resp = await client.responses.create({
model: "gpt-5",
tools: [
{
type: "mcp",
server_label: "microsoft_learn",
server_description: "Microsoft Learn MCP server for searching and fetching Microsoft documentation.",
server_url: "https://learn.microsoft.com/api/mcp",
require_approval: "never",
},
],
input: "Search for information about Azure Functions",
});
console.log(resp.output_text);
Чат
chat.completions.create
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { OpenAI } from "openai";
const tokenProvider = getBearerTokenProvider(
new DefaultAzureCredential(),
'https://ai.azure.com/.default');
const client = new OpenAI({
baseURL: "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
apiKey: tokenProvider
});
const messages = [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Tell me about the attention is all you need paper' }
];
// Make the API request with top-level await
const result = await client.chat.completions.create({
messages,
model: 'gpt-4.1-nano', // model deployment name
max_tokens: 100
});
// Print the full response
console.log('Full response:', result);
// Print just the message content from the response
console.log('Response content:', result.choices[0].message.content);
Обработка ошибок
Коды ошибок
| Код состояния | Тип ошибки |
|---|---|
| 400 | Bad Request Error |
| 401 | Authentication Error |
| 403 | Permission Denied Error |
| 404 | Not Found Error |
| 422 | Unprocessable Entity Error |
| 429 | Rate Limit Error |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
| 504 | Gateway Timeout |
Повторные попытки
Следующие ошибки автоматически повторяются дважды по умолчанию с краткой экспоненциальной задержкой.
- Ошибки подключения
- Ошибка 408: Время ожидания запроса (Request Timeout)
- Ограничение скорости 429
-
>=500 внутренних ошибок
Используйте maxRetries для установки или отключения поведения повторных попыток.
// Configure the default for all requests:
const client = new OpenAI({
maxRetries: 0, // default is 2
});
// Or, configure per-request:
await client.chat.completions.create({ messages: [{ role: 'user', content: 'How can I get the name of the current day in Node.js?' }], model: '' }, {
maxRetries: 5,
});
Исходный код | библиотекиПакет (PyPi) | Ссылки |
Примечание
Эта библиотека поддерживается OpenAI. Ознакомьтесь с историей версий, чтобы отслеживать последние обновления библиотеки.
поддержка версий Azure OpenAI API
- API общедоступной версии 1 (GA) теперь разрешает доступ к операциям как общедоступной, так и предварительной версии. Дополнительные сведения см. в руководстве по жизненному циклу версий API.
Установка
pip install openai
Для последней версии:
pip install openai --upgrade
Проверки подлинности
Конечные точки и ключи API для ресурсов можно получить на портале Azure или на портале Microsoft Foundry:
- Войдите на портал Azure>, выберите свой ресурс, затем >Управление ресурсами> и Ключи и конечная точка.
- Войдите на портал Microsoft Foundry portal > выберите ресурс.
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://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
API для ответов
responses.create()
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://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
response = client.responses.create(
model="gpt-4.1-nano",
input= "This is a test"
)
print(response.model_dump_json(indent=2))
Для получения дополнительных примеров см. документацию по API ответов.
responses.create() с помощью инструмента MCP-сервера
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://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
resp = client.responses.create(
model="gpt-5",
tools=[
{
"type": "mcp",
"server_label": "microsoft_learn",
"server_description": "Microsoft Learn MCP server for searching and fetching Microsoft documentation.",
"server_url": "https://learn.microsoft.com/api/mcp",
"require_approval": "never",
},
],
input="Search for information about Azure Functions",
)
print(resp.output_text)
Для получения дополнительных примеров см. документацию по API ответов.
Чат
chat.completions.create()
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://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
completion = client.chat.completions.create(
model="gpt-4o", # Replace with your model deployment name.
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "When was Microsoft founded?"}
]
)
#print(completion.choices[0].message)
print(completion.model_dump_json(indent=2))
chat.completions.create() — потоковая передача
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://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
completion = client.chat.completions.create(
model="gpt-4o", # Replace with your model deployment name.
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "When was Microsoft founded?"}
],
stream=True
)
for chunk in completion:
if chunk.choices and chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end='',)
chat.completions.create() — вход изображения
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://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{
"type": "image_url",
"image_url": {
"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-foundry/openai/media/how-to/generated-seattle.png",
}
},
],
}
],
max_tokens=300,
)
print(completion.model_dump_json(indent=2))
Эмбеддинги
embeddings.create()
Встраивания в настоящее время не поддерживают Microsoft Entra ID с Azure OpenAI и API версии 1.
Точная настройка
Статья-инструкция по тонкой настройке с использованием Python
Обработка ошибок
# from openai import OpenAI
# client = OpenAI()
import openai
try:
client.fine_tuning.jobs.create(
model="gpt-4o",
training_file="file-test",
)
except openai.APIConnectionError as e:
print("The server could not be reached")
print(e.__cause__) # an underlying Exception, likely raised within httpx.
except openai.RateLimitError as e:
print("A 429 status code was received; we should back off a bit.")
except openai.APIStatusError as e:
print("Another non-200-range status code was received")
print(e.status_code)
print(e.response)
Коды ошибок
| Код состояния | Тип ошибки |
|---|---|
| 400 | BadRequestError |
| 401 | AuthenticationError |
| 403 | PermissionDeniedError |
| 404 | NotFoundError |
| 422 | UnprocessableEntityError |
| 429 | RateLimitError |
| >=500 | InternalServerError |
| N/A | APIConnectionError |
Идентификаторы запросов
Чтобы получить идентификатор запроса, можно использовать _request_id свойство, соответствующее заголовку x-request-id ответа.
print(completion._request_id)
print(legacy_completion._request_id)
Повторные попытки
Следующие ошибки автоматически удаляются дважды по умолчанию с кратким экспоненциальным обратным выходом:
- Ошибки подключения
- Ошибка 408: Время ожидания запроса (Request Timeout)
- Ограничение скорости 429
-
>=500 внутренних ошибок
Используйте max_retries для установки или отключения поведения повторных попыток.
# For all requests
from openai import OpenAI
client = OpenAI(
max_retries=0
)
# max retires for specific requests
client.with_options(max_retries=5).chat.completions.create(
messages=[
{
"role": "user",
"content": "When was Microsoft founded?",
}
],
model="gpt-4o",
)
Устранение неполадок
- Если вы получаете ошибку
401или403, убедитесь, что вы выполнили проверку подлинности с использованием нужного удостоверения или ключа и что они имеют доступ к ресурсу Azure OpenAI. - Если вы получите ошибку, убедитесь, что конечная
404точка использует...openai.azure.com/openai/v1/путь и используйте допустимое имя развертывания модели. - Если запросы непредвиденно завершаются ошибкой, проверьте наличие ограничений прокси-сервера и брандмауэра и повторите попытку с меньшим запросом, чтобы исключить проблемы с размером полезных данных.