다음을 통해 공유


.NET에서 AI를 사용하여 이미지 생성

이 빠른 시작에서는 텍스트 프롬프트를 기반으로 이미지를 생성하도록 특별히 설계된 OpenAI 또는 Azure OpenAI DALLe AI 모델을 사용하여 이미지를 생성하는 .NET 콘솔 앱을 만드는 방법을 알아봅니다.

필수 조건

  • .NET 8.0 SDK - .NET 8.0 SDK를 설치합니다.
  • 이 샘플을 실행할 수 있는 OpenAI의 API 키입니다.
  • Windows에서는 PowerShell v7+이 필요합니다. 버전의 유효성을 검사하려면 터미널에서 pwsh(을)를 실행합니다. 현재 버전을 반환해야 합니다. 오류가 반환되면 다음 명령을 실행합니다. dotnet tool update --global PowerShell.

필수 조건

메모

의미 체계 커널 사용하여 이 문서의 작업을 수행할 수도 있습니다. 의미 체계 커널은 AI 에이전트를 빌드하고 최신 AI 모델을 .NET 앱에 통합할 수 있는 간단한 오픈 소스 SDK입니다.

샘플 리포지토리 복제

앞의 섹션의 단계를 사용하여 고유한 앱을 만들거나 모든 빠른 시작에 대해 완료된 샘플 앱이 포함된 GitHub 리포지토리를 복제할 수 있습니다. Azure OpenAI를 사용하려는 경우 샘플 리포지토리는 Azure OpenAI 리소스를 프로비전할 수 있는 Azure 개발자 CLI 템플릿으로도 구성됩니다.

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

앱 만들기

다음 단계를 완료하여 AI 모델에 연결할 .NET 콘솔 앱을 만듭니다.

  1. 컴퓨터의 빈 디렉터리에서 dotnet new 명령을 사용하여 새 콘솔 앱을 만듭니다.

    dotnet new console -o ImagesAI
    
  2. 디렉터리를 앱 폴더로 변경합니다.

    cd ImagesAI
    
  3. 필요한 패키지를 설치합니다.

    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. Visual Studio Code 또는 선택한 편집기에서 앱을 엽니다.

    code .
    

AI 서비스 만들기

샘플 GitHub 리포지토리는 Azure OpenAI 서비스 및 모델을 프로비전하는 데 사용할 수 있는 azd Azure 개발자 CLI(azd) 템플릿으로 구성됩니다.

  1. 터미널 또는 명령 프롬프트에서 샘플 리포지토리의 디렉터리로 이동합니다 src\quickstarts\azure-openai .

  2. 명령을 azd up 실행하여 Azure OpenAI 리소스를 프로비전합니다. Azure OpenAI 서비스를 만들고 모델을 배포하는 데 몇 분 정도 걸릴 수 있습니다.

    azd up
    

    azd 또한 Azure OpenAI 엔드포인트 및 모델 이름과 같은 샘플 앱에 필요한 사용자 비밀을 구성합니다.

앱 구성

  1. 터미널 또는 명령 프롬프트에서 .NET 프로젝트의 루트로 이동합니다.

  2. 다음 명령을 실행하여 OpenAI API 키를 샘플 앱의 암호로 구성합니다.

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-openai-key>
    dotnet user-secrets set ModelName <your-openai-model-name>
    

앱 코드 추가

  1. Program.cs 파일에서 다음 코드를 추가하여 AI 모델에 연결하고 인증합니다.

    using Microsoft.Extensions.Configuration;
    using OpenAI.Images;
    using System.ClientModel;
    using Azure.AI.OpenAI;
    using Azure.Identity;
    
    // Retrieve the local secrets saved during the Azure deployment. If you skipped the deployment
    // because you already have an Azure OpenAI available, edit the following lines to use your information,
    // e.g. string openAIEndpoint = "https://cog-demo123.openai.azure.com/";
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"];
    string deployment = config["AZURE_OPENAI_DALLE_NAME"];
    
    // Create the Azure OpenAI ImageClient
    ImageClient client =
        new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
            .GetImageClient(deployment);
    
    // Generate the image
    GeneratedImage generatedImage = await client.GenerateImageAsync("""
        A postal card with an 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!'
        """, new ImageGenerationOptions { Size = GeneratedImageSize.W1024xH1024 });
    
    Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
    

    메모

    DefaultAzureCredential 로컬 도구에서 인증 자격 증명을 검색합니다. azd 템플릿을 사용하여 Azure OpenAI 리소스를 프로비전하지 않는 경우 Visual Studio 또는 Azure CLI에 로그인하는 데 사용한 계정에 Azure AI Developer 역할을 할당해야 합니다. 자세한 내용은 .NET사용하여 Azure AI 서비스에 인증을 참조하세요.

    // Licensed to the .NET Foundation under one or more agreements.
    // The .NET Foundation licenses this file to you under the MIT license.
    // See the LICENSE file in the project root for more information.
    using Microsoft.Extensions.Configuration;
    using OpenAI.Images;
    // Retrieve the local secrets that were set from the command line, using:
    // dotnet user-secrets init
    // dotnet user-secrets set OpenAIKey <your-openai-key>
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string key = config["OpenAIKey"];
    string modelName = config["ModelName"];
    
    // Create the OpenAI ImageClient
    ImageClient client = new(modelName, key);
    
    // Generate the image
    GeneratedImage generatedImage = await client.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!'
        """,
        new ImageGenerationOptions 
        {
            Size = GeneratedImageSize.W1024xH1024 
        });
    
    Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
    

    앞의 코드는 다음과 같습니다.

    • AI 모델에 연결하기 위해 프로젝트 사용자 비밀에서 필수 구성 값을 읽습니다.
    • AI 모델에 연결할 ImageClient를 생성합니다.
    • 원하는 이미지를 설명하는 프롬프트를 모델에 보냅니다.
    • 생성된 이미지의 URL을 콘솔 출력에 인쇄합니다.
  2. dotnet run 명령을 사용하여 앱을 실행합니다.

    dotnet run
    

    콘솔 출력의 이미지 URL로 이동하여 생성된 이미지를 봅니다. 프롬프트의 텍스트 콘텐츠를 사용자 지정하여 새 이미지를 만들거나 원본을 수정합니다.

리소스 정리

샘플 애플리케이션이나 리소스가 더 이상 필요하지 않으면 해당 배포와 모든 리소스를 제거합니다.

azd down

다음 단계