Aracılığıyla paylaş


.NET ile yapay zeka kullanarak görüntü oluşturma

Basit bir .NET 8 konsol sohbet uygulaması oluşturarak yapay zekayı kullanmaya başlayın. Uygulama yerel olarak çalışacak ve arkadaşlarınızla yürüyüşe davet edebilmeniz için posta kartı görüntüleri oluşturmak için OpenAI dall-e-3 modelini kullanacaksınız! OpenAI'ye erişmek ve Anlam Çekirdeği'ni kullanmayı öğrenmek için bu adımları izleyin.

Önkoşullar

  • .NET 8.0 SDK - .NET 8.0 SDK'sını yükleyin.
  • Bu örneği çalıştırabilmeniz için OpenAI'den bir API anahtarı.
  • Windows'da PowerShell v7+ gereklidir. Sürümünüzü doğrulamak için bir terminalde çalıştırın pwsh . Geçerli sürümü döndürmelidir. Hata döndürürse aşağıdaki komutu yürütür: dotnet tool update --global PowerShell.

Basit bir .NET 8 konsol sohbet uygulaması oluşturarak yapay zekayı kullanmaya başlayın. Uygulama yerel olarak çalışacak ve arkadaşlarınızla yürüyüşe davet edebilmeniz için posta kartı görüntüleri oluşturmak için OpenAI dall-e-3 modelini kullanacaksınız! Azure OpenAI sağlamak ve .NET Azure OpenAI SDK'sını kullanmayı öğrenmek için bu adımları izleyin.

Önkoşullar

  • .NET 8 SDK - .NET 8 SDK'sını yükleyin.
  • Azure aboneliği - Ücretsiz bir abonelik oluşturun.
  • Azure Geliştirici CLI'sı - Azure Geliştirici CLI'sını yükleyin veya güncelleştirin.
  • Azure OpenAI hizmetine erişim.
  • Windows'da PowerShell v7+ gereklidir. Sürümünüzü doğrulamak için bir terminalde çalıştırın pwsh . Geçerli sürümü döndürmelidir. Hata döndürürse aşağıdaki komutu yürütür: dotnet tool update --global PowerShell.

Örnek projeyi alma

Tüm hızlı başlangıçlar için örnek uygulamaları içeren GitHub deposunu kopyalayın:

git clone https://github.com/dotnet/ai-samples.git

Azure OpenAI hizmetini oluşturma

Örnek GitHub deposu, azd Azure OpenAI hizmetini ve modelini sizin için sağlamak için kullanabileceğiniz bir Azure Geliştirici CLI (azd) şablonu olarak yapılandırılmıştır.

  1. Terminal veya komut isteminden örnek deponun src\quickstarts\azure-openai dizinine gidin.

  2. azd up Azure OpenAI kaynaklarını sağlamak için komutunu çalıştırın. Azure OpenAI hizmetinin oluşturulması ve modelin dağıtılması birkaç dakika sürebilir.

    azd up
    

    azd ayrıca OpenAI erişim anahtarı gibi örnek uygulama için gerekli kullanıcı gizli dizilerini yapılandırıyor.

    Not

    Dağıtım sırasında azd up bir hatayla karşılaşırsanız sorun giderme bölümünü ziyaret edin.

Yürüyüş görüntüleri örneğini deneyin

  1. Depoyu kopyalama: dotnet/ai-samples

  2. OpenAI API anahtarınızı örnek uygulama için gizli dizi olarak yapılandırmak için aşağıdaki komutları çalıştırın:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-openai-key>
    
  3. dotnet run Uygulamayı çalıştırmak için komutunu kullanın:

    dotnet run
    
  1. Terminalden veya komut isteminden dizine azure-openai\05-HikeImages gidin.

  2. dotnet run Uygulamayı çalıştırmak için komutunu kullanın:

    dotnet run
    

    İpucu

    Hata iletisi alırsanız, Azure OpenAI kaynaklarının dağıtımı tamamlanmamış olabilir. Birkaç dakika bekleyin ve yeniden deneyin.

Kodu keşfetme

Uygulama, OpenAI hizmetine istek göndermek ve almak için paketini kullanır Microsoft.SemanticKernel .

Program.cs dosyası tüm uygulama kodunu içerir. İlk birkaç kod satırı yapılandırma değerlerini ayarlar ve komutu kullanılarak dotnet user-secrets daha önce ayarlanmış olan OpenAI Anahtarını alır.

var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string key = config["OpenAIKey"];

Hizmet, OpenAITextToImageService istekleri ve yanıtları kolaylaştırır.

OpenAITextToImageService textToImageService = new(key, null);

Uygulama, Azure OpenAI hizmetine istek göndermek ve almak için paketini kullanır Microsoft.SemanticKernel .

Program.cs dosyası tüm uygulama kodunu içerir. Kod yük gizli dizilerinin ve yapılandırma değerlerinin ilk birkaç satırı, uygulama sağlama sırasında sizin için ayarlanmıştır dotnet user-secrets .

// Retrieve the local secrets saved during the Azure deployment
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];
string deployment = config["AZURE_OPENAI_GPT_NAME"];
string key = config["AZURE_OPENAI_KEY"];

Hizmet, AzureOpenAITextToImageService istekleri ve yanıtları kolaylaştırır.

AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, key, null);

Sistem istemi ekleyerek modele bağlam ve yönergeler sağlayın. İyi bir görüntü oluşturma istemi, görüntünün ne olduğunu, hangi renklerin kullanılacağını, istenen stili ve diğer tanımlayıcıları net bir şekilde açıklamayı gerektirir.

İşlev, GenerateImageAsync modele kullanıcı istemine, görüntü boyutuna ve kalite yapılandırmalarına göre bir yanıt oluşturmasını ister.

// Generate the image
string imageUrl = await textToImageService.GenerateImageAsync("""
    A postal card with a happy hiker waving and a beautiful mountain in the background.
    There is a trail visible in the foreground.
    The postal card has text in red saying: 'You are invited for a hike!'
    """, 1024, 1024);

Console.WriteLine($"The generated image is ready at:\n{imageUrl}");

Model tarafından oluşturulan görüntüleri kişiselleştirmek için istemi özelleştirin.

Kaynakları temizleme

Örnek uygulamaya veya kaynaklara artık ihtiyacınız kalmadığında, ilgili dağıtımı ve tüm kaynakları kaldırın.

azd down

Sorun giderme

Windows'ta, çalıştırdıktan azd upsonra aşağıdaki hata iletilerini alabilirsiniz:

postprovision.ps1 dijital olarak imzalanmamıştır. Betik sistemde yürütülmeyecek

Postprovision.ps1 betiği, uygulamada kullanılan .NET kullanıcı gizli dizilerini ayarlamak için yürütülür. Bu hatayı önlemek için aşağıdaki PowerShell komutunu çalıştırın:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Ardından komutunu yeniden çalıştırın azd up .

Başka bir olası hata:

'pwsh' bir iç veya dış komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmaz. UYARI: 'postprovision' kancası çıkış koduyla başarısız oldu: '1', Yol: '.\infra\post-script\postprovision.ps1'. : çıkış kodu: 1 ContinueOnError true olarak ayarlandığından yürütme devam edecek.

Postprovision.ps1 betiği, uygulamada kullanılan .NET kullanıcı gizli dizilerini ayarlamak için yürütülür. Bu hatayı önlemek için aşağıdaki PowerShell komutunu kullanarak betiği el ile çalıştırın:

.\infra\post-script\postprovision.ps1

.NET AI uygulamalarında artık kullanıcı gizli dizileri yapılandırılmıştır ve bunlar test edilebilir.

Sonraki adımlar