Share via


빠른 시작: Azure OpenAI Service를 사용하여 이미지 생성

참고 항목

이미지 생성 API는 텍스트 프롬프트에서 이미지를 만듭니다. 기존 이미지를 편집하거나 변형을 만들지 않습니다.

이 가이드를 사용하여 브라우저에서 Azure OpenAI를 사용하여 이미지 생성을 시작합니다.

필수 조건

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

Azure OpenAI Studio로 이동

Azure OpenAI Studio를 찾아보고 Azure OpenAI 리소스와 연결된 자격 증명으로 로그인합니다. 로그인 워크플로 도중 또는 이후에 적절한 디렉터리, Azure 구독 및 Azure OpenAI 리소스를 선택합니다.

Azure OpenAI Studio 방문 페이지에서 DALL·E 플레이그라운드(미리 보기)를 선택하여 이미지 생성 API를 사용합니다. 페이지 위쪽의 설정을 선택하고 배포 드롭다운에 DALL-E 3 배포가 선택되어 있음을 확인합니다.

이미지 생성 사용해 보기

DALL·E 플레이그라운드(미리 보기)를 통해 코드 없는 접근 방식으로 Azure OpenAI 기능 탐색을 시작합니다. 텍스트 상자에 이미지 프롬프트를 입력하고 생성을 선택합니다. AI 생성 이미지가 준비되면 페이지에 표시됩니다.

참고 항목

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. Azure OpenAI가 프롬프트를 유해한 콘텐츠로 인식하면 생성된 이미지를 반환하지 않습니다. 자세한 내용은 콘텐츠 필터링을 참조하세요.

생성된 북극곰 이미지를 포함한 DALL-E 플레이그라운드(미리 보기)를 보여 주는 Azure OpenAI Studio 방문 페이지의 스크린샷.

DALL·E 플레이그라운드(미리 보기)에서는 설정에 따라 미리 채워진 Python 및 cURL 코드 샘플도 볼 수 있습니다. 페이지 위쪽 부근에서 코드 보기를 선택합니다. 이 코드를 사용하여 동일한 작업을 완료하는 애플리케이션을 작성할 수 있습니다.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 가이드에 따라 Python을 사용하여 Azure OpenAI Service 이미지 생성 REST API 호출을 시작합니다.

필수 조건

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

키 및 엔드포인트 검색

Azure OpenAI API를 성공적으로 호출하려면 Azure OpenAI 리소스에 대한 다음 정보가 필요합니다.

변수 속성
엔드포인트 api_base 엔드포인트 값은 Azure Portal에서 리소스에 대한 키 및 엔드포인트 아래에 있습니다. 또는 Azure OpenAI Studio>플레이그라운드>코드 보기에서 값을 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
Key api_key 키 값도 Azure Portal에서 리소스에 대한 키 및 엔드포인트 아래에 있습니다. Azure는 리소스에 대해 두 개의 키를 생성합니다. 둘 중 하나의 값을 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 탐색 창의 리소스 관리 아래에서 키 및 엔드포인트를 선택합니다. 엔드포인트 값과 액세스 키 값을 복사합니다. 키 1 또는 키 2 값을 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

Azure Portal의 Azure OpenAI 리소스에 대한 키 및 엔드포인트 페이지를 보여 주는 스크린샷.

새 Python 애플리케이션 만들기

quickstart.py라는 새 Python 파일을 만듭니다. 선호하는 편집기 또는 IDE에서 새 파일을 엽니다.

  1. quickstart.py의 내용을 다음 코드로 바꿉니다. 해당 필드에 엔드포인트 URL 및 키를 입력합니다. prompt의 값을 원하는 텍스트로 변경합니다.

    또한 DALL-E 3 모델을 배포한 경우 URL의 <dalle3>를 선택한 배포 이름으로 바꿔야 합니다. 기본 모델 이름과 동일한 배포 이름을 선택하지 않으면 모델 이름을 입력할 때 오류가 발생합니다. 오류가 발생하면 엔드포인트와 /openai/deployments 사이의 구분에서 /이 두 배로 늘어나지 않았는지 다시 확인하세요.

    import requests
    import time
    import os
    api_base = '<your_endpoint>'  # Enter your endpoint here
    api_key = '<your_key>'        # Enter your API key here
    
    api_version = '2024-02-01'
    url = f"{api_base}/openai/deployments/<dalle3>/images/generations?api-version={api_version}"
    headers= { "api-key": api_key, "Content-Type": "application/json" }
    body = {
        # Enter your prompt text here
        "prompt": "A multi-colored umbrella on the beach, disposable camera",
        "size": "1024x1024", # supported values are “1792x1024”, “1024x1024” and “1024x1792” 
        "n": 1, #The number of images to generate. Only n=1 is supported for DALL-E 3.
        "quality": "hd", # Options are “hd” and “standard”; defaults to standard 
        "style": "vivid" # Options are “natural” and “vivid”; defaults to “vivid”
    }
    submission = requests.post(url, headers=headers, json=body)
    
    image_url = submission.json()['data'][0]['url']
    
    print(image_url)
    

    스크립트는 동기 이미지 생성 API 호출을 만듭니다.

    Important

    완료되면 코드에서 키를 제거하고 공개적으로 키를 게시하지 마세요. 프로덕션의 경우 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자세한 내용은 Azure Key Vault를 참조하세요.

  2. python 명령을 사용하여 애플리케이션을 실행합니다.

    python quickstart.py
    

    응답을 얻기 위해 잠시 기다립니다.

출력

성공적인 이미지 생성 API 호출의 출력은 다음 예제와 같습니다. url 필드에는 생성된 이미지를 다운로드할 수 있는 URL가 포함되어 있습니다. URL은 24시간 동안 활성 상태로 유지됩니다.

{ 
    "created": 1698116662, 
    "data": [ 
        { 
            "url": "<URL_to_generated_image>",
            "revised_prompt": "<prompt_that_was_used>" 
        }
    ]
} 

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. 서비스에서 프롬프트를 유해한 콘텐츠로 인식하면 이미지를 생성하지 않습니다. 자세한 내용은 콘텐츠 필터링을 참조하세요. 오류 응답의 예는 DALL-E 방법 가이드를 참조하세요.

시스템은 작업 상태를 Failed로 반환하고 error.code메시지의 값은 contentFilter로 설정됩니다. 예를 들면 다음과 같습니다.

{
    "created": 1698435368,
    "error":
    {
        "code": "contentFilter",
        "message": "Your task failed as a result of our safety system."
    }
}

생성된 이미지 자체가 필터링될 수도 있습니다. 이 경우 오류 메시지는 Generated image was filtered as a result of our safety system.로 설정됩니다. 예를 들면 다음과 같습니다.

{
    "created": 1698435368,
    "error":
    {
        "code": "contentFilter",
        "message": "Generated image was filtered as a result of our safety system."
    }
}

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 가이드를 사용하여 Python용 Azure OpenAI SDK를 사용하여 이미지 생성을 시작합니다.

라이브러리 소스 코드 | 패키지 | 샘플

필수 조건

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

설정

키 및 엔드포인트 검색

Azure OpenAI API를 성공적으로 호출하려면 Azure OpenAI 리소스에 대한 다음 정보가 필요합니다.

변수 속성
엔드포인트 api_base 엔드포인트 값은 Azure Portal에서 리소스에 대한 키 및 엔드포인트 아래에 있습니다. 또는 Azure OpenAI Studio>플레이그라운드>코드 보기에서 값을 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
Key api_key 키 값도 Azure Portal에서 리소스에 대한 키 및 엔드포인트 아래에 있습니다. Azure는 리소스에 대해 두 개의 키를 생성합니다. 둘 중 하나의 값을 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 탐색 창의 리소스 관리 아래에서 키 및 엔드포인트를 선택합니다. 엔드포인트 값과 액세스 키 값을 복사합니다. 키 1 또는 키 2 값을 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

Azure Portal의 Azure OpenAI 리소스에 대한 키 및 엔드포인트 페이지를 보여 주는 스크린샷.

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

새 Python 애플리케이션 만들기

명령 프롬프트를 열고 프로젝트 폴더를 찾아봅니다. quickstart.py라는 새 Python 파일을 만듭니다.

Python SDK 설치

다음 명령을 사용하여 OpenAI Python SDK를 설치합니다.

pip install openai

다음 라이브러리도 설치합니다.

pip install requests
pip install pillow 

DALL-E를 사용하여 이미지 생성

선호하는 편집기 또는 IDE에서 _quickstart.py를 엽니다.

quickstart.py의 내용을 다음 코드로 바꿉니다.

from openai import AzureOpenAI
import os
import requests
from PIL import Image
import json

client = AzureOpenAI(
    api_version="2024-02-01",  
    api_key=os.environ["AZURE_OPENAI_API_KEY"],  
    azure_endpoint=os.environ['AZURE_OPENAI_ENDPOINT']
)

result = client.images.generate(
    model="dalle3", # the name of your DALL-E 3 deployment
    prompt="a close-up of a bear walking throughthe forest",
    n=1
)

json_response = json.loads(result.model_dump_json())

# Set the directory for the stored image
image_dir = os.path.join(os.curdir, 'images')

# If the directory doesn't exist, create it
if not os.path.isdir(image_dir):
    os.mkdir(image_dir)

# Initialize the image path (note the filetype should be png)
image_path = os.path.join(image_dir, 'generated_image.png')

# Retrieve the generated image
image_url = json_response["data"][0]["url"]  # extract image URL from response
generated_image = requests.get(image_url).content  # download the image
with open(image_path, "wb") as image_file:
    image_file.write(generated_image)

# Display the image in the default image viewer
image = Image.open(image_path)
image.show()
  1. 해당 필드에 엔드포인트 URL 및 키를 입력합니다.
  2. prompt의 값을 원하는 텍스트로 변경합니다.
  3. model 값을 배포된 DALL-E 3 모델의 이름으로 변경합니다.

Important

완료되면 코드에서 키를 제거하고 공개적으로 키를 게시하지 마세요. 프로덕션의 경우 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자세한 내용은 Azure Key Vault를 참조하세요.

python 명령을 사용하여 애플리케이션을 실행합니다.

python quickstart.py

응답을 얻기 위해 잠시 기다립니다.

출력

Azure OpenAI는 출력 이미지를 지정된 디렉터리의 generated_image.png 파일에 저장합니다. 또한 스크립트는 기본 이미지 뷰어에도 이미지를 표시합니다.

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. 서비스에서 프롬프트를 유해한 콘텐츠로 인식하면 이미지를 생성하지 않습니다. 자세한 내용은 콘텐츠 필터링을 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 가이드를 사용하여 C#용 Azure OpenAI SDK를 사용하여 이미지 생성을 시작합니다.

라이브러리 원본 코드 | 패키지(NuGet) | 샘플

필수 조건

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure OpenAI Studio>플레이그라운드>코드 보기에서 값을 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

새 .NET Core 애플리케이션 만들기

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 dotnet new 명령을 사용하여 azure-openai-quickstart라는 새 콘솔 앱을 만듭니다. 이 명령은 program.cs라는 단일 C# 원본 파일을 사용하여 간단한 "Hello World" 프로젝트를 만듭니다.

dotnet new console -n azure-openai-quickstart

새로 만든 앱 폴더로 디렉터리를 변경합니다. 다음을 통해 애플리케이션을 빌드할 수 있습니다.

dotnet build

빌드 출력에 경고나 오류가 포함되지 않아야 합니다.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

OpenAI .NET SDK 설치

다음을 사용하여 클라이언트 라이브러리 설치:

dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.6

DALL-E를 사용하여 이미지 생성

프로젝트 디렉터리에서 program.cs 파일을 열고, 다음 코드로 바꿉니다.

using System;
using System.IO;
using System.Threading.Tasks;
using Azure.AI.OpenAI;

namespace Azure.AI.OpenAI.Tests.Samples
{
    public partial class GenerateImages
    {
        // add an async Main method:
        public static async Task Main(string[] args)
        {
            string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
            string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

            OpenAIClient client = new(new Uri(endpoint), new AzureKeyCredential(key));

            Response<ImageGenerations> imageGenerations = await client.GetImageGenerationsAsync(
                new ImageGenerationOptions()
                {
                    Prompt = "a happy monkey eating a banana, in watercolor",
                    Size = ImageSize.Size256x256,
                });

            // Image Generations responses provide URLs you can use to retrieve requested images
            Uri imageUri = imageGenerations.Value.Data[0].Url;
            
            // Print the image URI to console:
            Console.WriteLine(imageUri);
        }
    }
}

다음 명령을 사용하여 애플리케이션 디렉터리에서 애플리케이션을 빌드하고 실행합니다.

dotnet build
dotnet run

출력

생성된 이미지의 URL이 콘솔에 인쇄됩니다.

https://dalleproduse.blob.core.windows.net/private/images/552c5522-af4a-4877-a19c-400fac04a422/generated_00.png?se=2023-08-17T16%3A54%3A40Z&sig=XGCIx9r0WvWTJ0LL%2FJGymo2WYp4FDbSQNNrGRUnnUzI%3D&ske=2023-08-19T01%3A10%3A14Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-12T01%3A10%3A14Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02

참고 항목

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. 서비스가 메시지를 유해한 콘텐츠로 인식하면 생성된 이미지를 반환하지 않습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

이 가이드를 사용하여 Java용 Azure OpenAI SDK를 사용하여 이미지 생성을 시작합니다.

라이브러리 원본 코드 | 아티팩트(Maven) | 샘플

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • 원하는 Azure 구독의 Azure OpenAI Service에 부여된 액세스 권한. 현재 이 서비스에 대한 액세스 권한은 애플리케이션에서만 부여됩니다. https://aka.ms/oai/access에서 양식을 작성하여 Azure OpenAI Service에 대한 액세스를 신청할 수 있습니다.

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure OpenAI Studio>플레이그라운드>코드 보기에서 값을 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

새 Java 애플리케이션 만들기

새 Gradle 프로젝트를 만듭니다.

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

mkdir myapp && cd myapp

작업 디렉터리에서 gradle init 명령을 실행합니다. 이 명령은 build.gradle.kts를 포함하여 런타임에 애플리케이션을 만들고 구성하는 데 사용되는 Gradle용 필수 빌드 파일을 만듭니다.

gradle init --type basic

DSL을 선택하라는 메시지가 표시되면 Kotlin을 선택합니다.

Java SDK 설치

이 빠른 시작에서는 Gradle 종속성 관리자를 사용합니다. 다른 종속성 관리자에 대한 클라이언트 라이브러리 및 정보는 Maven 중앙 리포지토리에서 찾을 수 있습니다.

build.gradle.kts를 찾고, 원하는 IDE 또는 텍스트 편집기에서 엽니다. 그런 다음, 다음 빌드 구성을 복사합니다. 이 구성은 프로젝트를 진입점이 OpenAI빠른 시작 클래스인 Java 애플리케이션으로 정의합니다. Azure AI Vision 라이브러리를 가져옵니다.

plugins {
    java
    application
}
application { 
    mainClass.set("OpenAIQuickstart")
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(group = "com.azure", name = "azure-ai-openai", version = "1.0.0-beta.3")
    implementation("org.slf4j:slf4j-simple:1.7.9")
}

DALL-E를 사용하여 이미지 생성

  1. Java 파일을 만듭니다.

    작업 디렉터리에서 다음 명령을 실행하여 프로젝트 원본 폴더를 만듭니다.

    mkdir -p src/main/java
    

    새 폴더로 이동하여 OpenAIQuickstart.java라는 파일을 만듭니다.

  2. 선호하는 편집기 또는 IDE에서 OpenAIQuickstart.java 파일을 열고 다음 코드를 붙여넣습니다.

    import com.azure.ai.openai.OpenAIAsyncClient;
    import com.azure.ai.openai.OpenAIClientBuilder;
    import com.azure.ai.openai.models.ImageGenerationOptions;
    import com.azure.ai.openai.models.ImageLocation;
    import com.azure.core.credential.AzureKeyCredential;
    import com.azure.core.models.ResponseError;
    
    import java.util.concurrent.TimeUnit;
    
    /**
     * Sample demonstrates how to get the images for a given prompt.
     */
    public class OpenAIQuickstart {
    
        /**
         * Runs the sample algorithm and demonstrates how to get the images for a given prompt.
         *
         * @param args Unused. Arguments to the program.
         */
        public static void main(String[] args) throws InterruptedException {
    
            // Get key and endpoint from environment variables:
            String azureOpenaiKey = System.getenv("AZURE_OPENAI_API_KEY");
            String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
    
            OpenAIAsyncClient client = new OpenAIClientBuilder()
                .endpoint(endpoint)
                .credential(new AzureKeyCredential(azureOpenaiKey))
                .buildAsyncClient();
    
            ImageGenerationOptions imageGenerationOptions = new ImageGenerationOptions(
                "A drawing of the Seattle skyline in the style of Van Gogh");
            client.getImages(imageGenerationOptions).subscribe(
                images -> {
                    for (ImageLocation imageLocation : images.getData()) {
                        ResponseError error = imageLocation.getError();
                        if (error != null) {
                            System.out.printf("Image generation operation failed. Error code: %s, error message: %s.%n",
                                error.getCode(), error.getMessage());
                        } else {
                            System.out.printf(
                                "Image location URL that provides temporary access to download the generated image is %s.%n",
                                imageLocation.getUrl());
                        }
                    }
                },
                error -> System.err.println("There was an error getting images." + error),
                () -> System.out.println("Completed getImages."));
    
            // The .subscribe() creation and assignment is not a blocking call. For the purpose of this example, we sleep
            // the thread so the program does not end before the send operation is complete. Using .block() instead of
            // .subscribe() will turn this into a synchronous call.
            TimeUnit.SECONDS.sleep(10);
        }
    }
    
  3. 프로젝트 루트 폴더로 돌아가서 다음을 사용하여 앱을 빌드합니다.

    gradle build
    

    그런 다음, gradle run 명령을 사용하여 실행합니다.

    gradle run
    

출력

생성된 이미지의 URL이 콘솔에 인쇄됩니다.

Image location URL that provides temporary access to download the generated image is https://dalleproduse.blob.core.windows.net/private/images/d2ea917f-8802-4ad6-8ef6-3fb7a15c8482/generated_00.png?se=2023-08-25T23%3A11%3A28Z&sig=%2BKa5Mkb9U88DfvxoBpyAjamYRzwb7aVCEucM6XJC3wQ%3D&ske=2023-08-31T15%3A27%3A47Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-24T15%3A27%3A47Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02.
Completed getImages.

참고 항목

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. 서비스가 메시지를 유해한 콘텐츠로 인식하면 생성된 이미지를 반환하지 않습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

이 가이드를 사용하여 JavaScript용 Azure OpenAI SDK를 사용하여 이미지 생성을 시작합니다.

라이브러리 원본 코드 | 패키지(npm) | 샘플

필수 조건

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure OpenAI Studio>플레이그라운드>코드 보기에서 값을 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

노드 애플리케이션 만들기

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다. 그런 다음 npm init 명령을 실행하여 package.json 파일이 있는 노드 애플리케이션을 만듭니다.

npm init

클라이언트 라이브러리 설치

npm을 사용하여 JavaScript용 Azure OpenAI 클라이언트 라이브러리를 설치합니다.

npm install @azure/openai

종속성이 있는 앱의 package.json 파일이 업데이트됩니다.

DALL-E를 사용하여 이미지 생성

ImageGeneration.js라는 이름의 새 파일을 만들고 원하는 코드 편집기에서 엽니다. 다음 코드를 ImageGeneration.js 파일에 복사합니다.

const { OpenAIClient, AzureKeyCredential } = require("@azure/openai");

// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] ;
const azureApiKey = process.env["AZURE_OPENAI_API_KEY"] ;

// The prompt to generate images from
const prompt = "a monkey eating a banana";
const size = "256x256";

// The number of images to generate
const n = 2;

async function main() {
    console.log("== Batch Image Generation ==");
  
    const client = new OpenAIClient(endpoint, new AzureKeyCredential(azureApiKey));
    const deploymentName = "dall-e";
    const results = await client.getImages(deploymentName, prompt, { n, size });
  
    for (const image of results.data) {
      console.log(`Image generation result URL: ${image.url}`);
    }
    //console.log(`Image generation result URL: ${results.result.status}`);
}

main().catch((err) => {
console.error("The sample encountered an error:", err);
});

다음 명령을 사용하여 스크립트를 실행합니다.

node _ImageGeneration.js

출력

생성된 이미지의 URL이 콘솔에 인쇄됩니다.

== Batch Image Generation ==
Image generation result URL: https://dalleproduse.blob.core.windows.net/private/images/5e7536a9-a0b5-4260-8769-2d54106f2913/generated_00.png?se=2023-08-29T19%3A12%3A57Z&sig=655GkWajOZ9ALjFykZF%2FBMZRPQALRhf4UPDImWCQoGI%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02
Image generation result URL: https://dalleproduse.blob.core.windows.net/private/images/5e7536a9-a0b5-4260-8769-2d54106f2913/generated_01.png?se=2023-08-29T19%3A12%3A57Z&sig=B24ymPLSZ3HfG23uojOD9VlRFGxjvgcNmvFo4yPUbEc%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02

참고 항목

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. 서비스가 메시지를 유해한 콘텐츠로 인식하면 생성된 이미지를 반환하지 않습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

이 가이드를 사용하여 Go용 Azure OpenAI SDK를 사용하여 이미지 생성을 시작합니다.

라이브러리 소스 코드 | 패키지 | 샘플

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • 원하는 Azure 구독에서 DALL-E에 액세스 권한이 부여되었습니다. 현재 이 서비스에 대한 액세스 권한은 애플리케이션에서만 부여됩니다. https://aka.ms/oai/access에서 양식을 작성하여 Azure OpenAI에 대한 액세스를 신청할 수 있습니다. 기존 Azure OpenAI 고객은 DALL-E에 액세스하려면 양식을 다시 입력해야 합니다. 문제가 있는 경우 이 리포지토리에서 문제를 엽니다.

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure OpenAI Studio>플레이그라운드>코드 보기에서 값을 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

새 Go 애플리케이션 만들기

명령 프롬프트를 열고 프로젝트 폴더로 이동합니다. 새 파일 sample.go를 만듭니다.

Go SDK 설치

다음 명령을 사용하여 OpenAI Go SDK를 설치합니다.

go get github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai@latest

dep를 사용하는 경우에는 리포지토리 내에서 다음을 실행합니다.

dep ensure -add github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai

DALL-E를 사용하여 이미지 생성

기본 코드 편집기에서 sample.go를 엽니다.

스크립트에 다음 코드를 추가합니다.

package main

import (
	"context"
	"fmt"
	"net/http"
	"os"

	"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
	"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
)

func main() {
	azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY")

	// Ex: "https://<your-azure-openai-host>.openai.azure.com"
	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")

	if azureOpenAIKey == "" || azureOpenAIEndpoint == "" {
		fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n")
		return
	}

	keyCredential, err := azopenai.NewKeyCredential(azureOpenAIKey)

	if err != nil {
		// handle error
	}

	client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil)

	if err != nil {
		// handle error
	}

	resp, err := client.CreateImage(context.TODO(), azopenai.ImageGenerationOptions{
		Prompt:         to.Ptr("a painting of a cat in the style of Dali"),
		ResponseFormat: to.Ptr(azopenai.ImageGenerationResponseFormatURL),
	}, nil)

	if err != nil {
		// handle error
	}

	for _, generatedImage := range resp.Data {
		// the underlying type for the generatedImage is dictated by the value of
		// ImageGenerationOptions.ResponseFormat. In this example we used `azopenai.ImageGenerationResponseFormatURL`,
		// so the underlying type will be ImageLocation.

		resp, err := http.Head(*generatedImage.URL)

		if err != nil {
			// handle error
		}

		fmt.Fprintf(os.Stderr, "Image generated, HEAD request on URL returned %d\nImage URL: %s\n", resp.StatusCode, *generatedImage.URL)
	}
}

go run 명령을 사용하여 스크립트를 실행합니다.

go run sample.go

출력

생성된 이미지의 URL이 콘솔에 인쇄됩니다.

Image generated, HEAD request on URL returned 200
Image URL: https://dalleproduse.blob.core.windows.net/private/images/d7b28a5c-ca32-4792-8c2a-6a5d8d8e5e45/generated_00.png?se=2023-08-29T17%3A05%3A37Z&sig=loqntaPypYVr9VTT5vpbsjsCz31g1GsdoQi0smbGkks%3D&ske=2023-09-02T18%3A53%3A23Z&skoid=09ba021e-c417-441c-b203-c81e5dcd7b7f&sks=b&skt=2023-08-26T18%3A53%3A23Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02

참고 항목

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. 서비스가 메시지를 유해한 콘텐츠로 인식하면 생성된 이미지를 반환하지 않습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 가이드에 따라 PowerShell을 사용하여 Azure OpenAI Service 이미지 생성 API 호출을 시작합니다.

참고 항목

이미지 생성 API는 텍스트 프롬프트에서 이미지를 만듭니다. 기존 이미지를 편집하거나 변형을 만들지 않습니다.

필수 구성 요소

참고 항목

현재 Azure OpenAI Service 에 액세스하려면 신청서를 제출해야 합니다. 액세스를 신청하려면 이 양식을 작성하세요. 도움이 필요한 경우 이 리포지토리에서 문제를 열어 Microsoft에 문의하세요.

키 및 엔드포인트 검색

Azure OpenAI API를 성공적으로 호출하려면 Azure OpenAI 리소스에 대한 다음 정보가 필요합니다.

변수 속성
엔드포인트 api_base 엔드포인트 값은 Azure Portal에서 리소스에 대한 키 및 엔드포인트 아래에 있습니다. 또는 Azure OpenAI Studio>플레이그라운드>코드 보기에서 값을 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
Key api_key 키 값도 Azure Portal에서 리소스에 대한 키 및 엔드포인트 아래에 있습니다. Azure는 리소스에 대해 두 개의 키를 생성합니다. 둘 중 하나의 값을 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 탐색 창의 리소스 관리 아래에서 키 및 엔드포인트를 선택합니다. 엔드포인트 값과 액세스 키 값을 복사합니다. 키 1 또는 키 2 값을 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

Azure Portal의 Azure OpenAI 리소스에 대한 키 및 엔드포인트 페이지를 보여 주는 스크린샷.

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

환경 변수

$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'

새 PowerShell 스크립트 만들기

  1. quickstart.ps1이라는 새 PowerShell 파일을 만듭니다. 선호하는 편집기 또는 IDE에서 새 파일을 엽니다.

  2. quickstart.ps1의 내용을 다음 코드로 바꿉니다. 해당 필드에 엔드포인트 URL 및 키를 입력합니다. prompt의 값을 원하는 텍스트로 변경합니다.

    # Azure OpenAI metadata variables
    $openai = @{
      api_key     = $Env:AZURE_OPENAI_API_KEY
      api_base    = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
      api_version = '2023-06-01-preview' # this may change in the future
    }
    
    # Text to describe image
    $prompt = 'A painting of a dog'
    
    # Header for authentication
    $headers = [ordered]@{
      'api-key' = $openai.api_key
    }
    
    # Adjust these values to fine-tune completions
    $body = [ordered]@{
       prompt = $prompt
       size   = '1024x1024'
       n      = 1
    } | ConvertTo-Json
    
     # Call the API to generate the image and retrieve the response
    $url = "$($openai.api_base)/openai/images/generations:submit?api-version=$($openai.api_version)"
    
    $submission = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json' -ResponseHeadersVariable submissionHeaders
    
     $operation_location = $submissionHeaders['operation-location'][0]
     $status = ''
     while ($status -ne 'succeeded') {
         Start-Sleep -Seconds 1
         $response = Invoke-RestMethod -Uri $operation_location -Headers $headers
         $status   = $response.status
     }
    
    # Set the directory for the stored image
    $image_dir = Join-Path -Path $pwd -ChildPath 'images'
    
    # If the directory doesn't exist, create it
    if (-not(Resolve-Path $image_dir -ErrorAction Ignore)) {
        New-Item -Path $image_dir -ItemType Directory
    }
    
    # Initialize the image path (note the filetype should be png)
    $image_path = Join-Path -Path $image_dir -ChildPath 'generated_image.png'
    
    # Retrieve the generated image
    $image_url = $response.result.data[0].url  # extract image URL from response
    $generated_image = Invoke-WebRequest -Uri $image_url -OutFile $image_path  # download the image
    return $image_path
    

    Important

    프로덕션의 경우 Azure Key Vault를 사용한 PowerShell 비밀 관리와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

  3. PowerShell을 사용하여 스크립트를 실행합니다.

    ./quickstart.ps1
    

    생성된 이미지가 준비될 때까지 스크립트가 반복됩니다.

출력

PowerShell은 Azure OpenAI에서 이미지를 요청하고 출력 이미지를 지정된 디렉터리의 generated_image.png 파일에 저장합니다. 편의를 위해 파일의 전체 경로는 스크립트의 끝에 반환됩니다.

이미지 생성 API에는 콘텐츠 조정 필터가 제공되어 있습니다. 서비스에서 프롬프트를 유해한 콘텐츠로 인식하면 이미지를 생성하지 않습니다. 자세한 내용은 콘텐츠 필터링을 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계