مشاركة عبر


لغات البرمجة المدعومة من Azure OpenAI

المتطلبات المسبقه

  • نموذج Azure OpenAI تم نشره
  • إحدى طرق المصادقة التالية:
    • Microsoft Entra ID (موصى به).
    • مفتاح API.

Source Code | Package (NuGet)

دعم إصدار API لواجهة Azure OpenAI

التثبيت

dotnet add package OpenAI

المصادقة

نهج مصادقة آمن بدون مفتاح هو استخدام Microsoft Entra ID (سابقا Azure Active Directory) عبر مكتبة الهوية Azure. لاستخدام المكتبة:

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، راجع مقالة "Get started مع 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}");

Embeddings

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())}]");

واجهة برمجة تطبيقات الاستجابات

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 انتهي وقت الطلب
  • 429 طلبات كثيرة جدا
  • 500 خطأ داخلي في الخادم
  • 502 بوابة غير صالحة
  • 503 خدمة غير متاحة
  • مهلة البوابة 504

Source code | Package (pkg.go.dev) | REST APIdocumentation المرجعية | وثائق مرجع الحزمة

دعم إصدار API لواجهة Azure OpenAI

التثبيت

تثبيت الوحدات النمطية 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 بدون مفاتيح.

Embeddings

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())
}

Source code |REST APIdocumentation المرجعية | Package Reference documentation | Maven Central

دعم إصدار API لواجهة Azure OpenAI

التثبيت

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 Identity:

<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) | مرجع |

دعم إصدار API لواجهة Azure OpenAI

التثبيت

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، راجع مقالة "Get started مع 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 انتهي وقت الطلب
  • حد معدل 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) | Reference |

‏‫ملاحظة‬

يتم الاحتفاظ بهذه المكتبة من قبل OpenAI. راجع history release لمتابعة أحدث التحديثات في المكتبة.

دعم إصدار API لواجهة Azure OpenAI

التثبيت

pip install openai

للحصول على أحدث إصدار:

pip install openai --upgrade

المصادقة

يمكنك استرجاع نقاط النهاية ومفاتيح واجهة برمجة التطبيقات لمواردك من بوابة Azure portal أو بوابة Microsoft Foundry:

  • سجل الدخول إلى Azure portal> واختر مصدرك >إدارة الموارد>Keys ونقطة النهاية.
  • سجل الدخول إلى بوابة Microsoft Foundry> اختر مصدرك.
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,
)

واجهة برمجة تطبيقات الاستجابات

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)) 

لمزيد من الأمثلة، راجع وثائق واجهة برمجة تطبيقات الاستجابات .

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)

لمزيد من الأمثلة، راجع وثائق واجهة برمجة تطبيقات الاستجابات .

دردشة

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

embeddings.create()

لا تدعم التضمين حاليا Microsoft Entra ID مع Azure OpenAI وواجهة الإصدار 1.

Fine-tuning

الضبط الدقيق مع مقالة كيفية استخدام 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
غير متوفر APIConnectionError

معرفات الطلب

لاسترداد معرف طلبك، يمكنك استخدام الخاصية _request_id ، التي تتوافق مع x-request-id رأس الاستجابة.

print(completion._request_id) 
print(legacy_completion._request_id)

إعادة المحاولات

يتم إيقاف الأخطاء التالية تلقائيا مرتين بشكل افتراضي مع التراجع الأسي القصير:

  • أخطاء الاتصال
  • 408 انتهي وقت الطلب
  • حد معدل 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، تأكد من أنك تم التحقق من الهوية أو المفتاح المقصود، وأنه access إلى مورد OpenAI Azure.
  • إذا ظهرت لك خطأ 404، تأكد من أن نقطة النهاية تستخدم مسار ...openai.azure.com/openai/v1/ وأنك استخدمت اسم نشر نموذج صالح.
  • إذا فشلت الطلبات بشكل غير متوقع، تحقق من قيود البروكسي وجدار الحماية، وأعد المحاولة باستخدام طلب أصغر لاستبعاد مشاكل حجم الحمولة.