Azure OpenAI Service, OpenAI'nin GPT-4o gibi modellerini Microsoft Azure altyapısı üzerinde sunar. Kurumsal güvenlik, Managed Identity desteği, veri izolasyonu ve Azure Monitor entegrasyonu gibi avantajlarıyla production ortamları için tercih edilen seçenektir.
Azure OpenAI vs OpenAI API: Ne Zaman Hangisi?
Azure OpenAI tercih edin: Kurumsal uyumluluk, Managed Identity, veri gizliliği garantisi, Azure SLA, mevcut Azure altyapısıyla entegrasyon gerektiğinde.
OpenAI API tercih edin: Hızlı prototipleme, en yeni model sürümlerine anında erişim, Azure bağımlılığı istemediğinizde.
Kurulum
// dotnet add package Azure.AI.OpenAI
// dotnet add package Azure.Identity
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
Bağlantı ve Chat Tamamlama
// API Key ile bağlantı (geliştirme ortamı)
var azureClient = new AzureOpenAIClient(
new Uri("https://your-resource.openai.azure.com/"),
new AzureKeyCredential("your-api-key"));
// Chat tamamlama — deployment adı OpenAI model adından farklı olabilir
var chatClient = azureClient.GetChatClient("gpt-4o-deployment");
var yanit = await chatClient.CompleteChatAsync(
"C# ile Azure AI servisleri arasındaki en iyi entegrasyon yöntemi nedir?");
Console.WriteLine(yanit.Value.Content[0].Text);
Managed Identity: Production'a Uygun Kimlik Doğrulama
// API key gerektirmez — Azure kaynağına otomatik erişim
var credential = new DefaultAzureCredential();
var azureClient = new AzureOpenAIClient(
new Uri("https://your-resource.openai.azure.com/"),
credential);
// DefaultAzureCredential sırasıyla şunları dener:
// 1. Geliştirmede: Visual Studio, VS Code, Azure CLI, Azure PowerShell
// 2. Production'da: Managed Identity (sistem veya kullanıcı atamalı)
// API key saklamaya gerek kalmaz
Program.cs: DI Kaydı
builder.Services.AddAzureOpenAIClient(options =>
{
options.Endpoint = new Uri(builder.Configuration["AzureOpenAI:Endpoint"]!);
if (builder.Environment.IsDevelopment())
options.Credential = new AzureKeyCredential(
builder.Configuration["AzureOpenAI:ApiKey"]!);
else
options.Credential = new ManagedIdentityCredential(); // production
})
.AddChatClient("gpt-4o-deployment")
.UseLogging()
.UseOpenTelemetry();
// appsettings.json
// {
// "AzureOpenAI": {
// "Endpoint": "https://your-resource.openai.azure.com/",
// "ApiKey": "sadece development için, production'da boş bırakın"
// }
// }
Embedding ve RAG için Azure OpenAI
// Embedding modeli için ayrı deployment
builder.Services
.AddAzureOpenAIClient(opts =>
{
opts.Endpoint = new Uri(config["AzureOpenAI:Endpoint"]!);
opts.Credential = new DefaultAzureCredential();
})
.AddEmbeddingGenerator<string, Embedding<float>>(
"text-embedding-3-small-deployment");
// Servis katmanında kullanım
public class BelgeServisi(
IChatClient chatClient,
IEmbeddingGenerator<string, Embedding<float>> embedder)
{
// RAG, özet veya sınıflandırma mantığı buraya gelir
}
İçerik Filtresi ve Hata Yönetimi
try
{
var yanit = await chatClient.CompleteChatAsync(kullaniciMesaji);
return yanit.Value.Content[0].Text;
}
catch (RequestFailedException ex) when (ex.Status == 400 && ex.ErrorCode == "content_filter")
{
// Azure içerik güvenliği politikası ihlali
logger.LogWarning("Mesaj içerik filtresi tarafından engellendi");
return "Bu içerik güvenlik politikamıza aykırı.";
}
catch (RequestFailedException ex) when (ex.Status == 429)
{
// Quota aşımı — yeniden dene mantığı ekleyin
logger.LogWarning("Azure OpenAI quota aşıldı: {Error}", ex.Message);
throw new ServiceUnavailableException("Servis kapasitesi dolu, kısa süre sonra tekrar deneyin.");
}
Azure Monitor ile Observability
// Application Insights ile tam entegrasyon
builder.Services.AddApplicationInsightsTelemetry();
builder.Logging.AddApplicationInsights();
// UseOpenTelemetry middleware AI istek/yanıt metriklerini otomatik kaydeder
builder.Services
.AddAzureOpenAIClient(...)
.AddChatClient("gpt-4o-deployment")
.UseOpenTelemetry(configure: opts =>
{
opts.EnableSensitiveData = false; // production'da prompt içeriğini loglamayın
});
// Azure Monitor'de takip edilebilecek metrikler:
// - Token kullanımı (giriş/çıkış)
// - Yanıt süresi (latency)
// - Hata oranları
// - Model başına maliyet tahmini
Azure OpenAI Service, kurumsal .NET uygulamaları için AI entegrasyonunun en güvenli ve yönetilebilir yoludur. Managed Identity sayesinde API key yönetimi ortadan kalkar; Azure Monitor entegrasyonu ile token maliyetleri, latency ve hata oranları gerçek zamanlı takip edilebilir. Microsoft.Extensions.AI ile birlikte kullanıldığında ise gerektiğinde sağlayıcı değişimi tek satır DI değişikliğine indirgenir.