OpenAI의 이미지 생성 모델은 사용자가 제공한 텍스트 프롬프트와 선택적 이미지로부터 이미지를 만듭니다. 이 문서에서는 이러한 모델을 사용하는 방법, 옵션을 구성하는 방법, Azure의 고급 이미지 생성 기능을 활용하는 방법을 설명합니다.
Prerequisites
- Azure 구독. 무료로 하나를 만들 수 있습니다.
- 지원되는 지역에서 만든 Azure OpenAI 리소스입니다. 지역 가용성을 참조하세요.
- Azure OpenAI 리소스를 사용하여
dall-e-3
또는gpt-image-1
시리즈 모델을 배포합니다. 배포에 대한 자세한 내용은 Azure OpenAI를 사용하여 리소스 만들기 및 모델 배포를 참조하세요.- GPT-image-1 모델은 최신 모델이며 DALL-E 3보다 많은 향상된 기능을 제공합니다. 제한된 액세스 권한으로 사용할 수 있습니다. 이 양식으로 액세스를 신청합니다.
개요
- 이미지 생성 API 또는 응답 API를 통해 이미지 생성 사용
- 이미지 플레이그라운드에서 이미지 생성 실험
- 콘텐츠 필터링을 살펴보고 [여기](url:에서 선택 해제하세요.
- 이미지 생성 토큰 에 대해 알아보기
측면 | GPT-Image-1 | DALL·E 3 |
---|---|---|
입력/출력 형식 및 형식 | 텍스트 + 이미지 입력을 허용합니다. 는 base64에서만 이미지를 출력합니다(URL 옵션 없음). | 텍스트(기본) 입력을 허용합니다. 제한된 이미지 편집 입력(마스크 포함) URL 또는 base64로 출력합니다. |
이미지 크기/해상도 | 1024×1024, 1024×1536, 1536×1024 | 1024×1024, 1024×1792, 1792×1024 |
품질 옵션 |
low , medium high (기본값 = 높음) |
standard , hd ; 스타일 옵션: natural , vivid |
요청당 이미지 수 | 요청당 1~10개 이미지(n 매개 변수) |
요청당 이미지 1 개만(n 1이어야 합니다). |
편집(인페인팅/변형) | 예 - 마스크 + 프롬프트를 사용하여 인페인팅 및 변형을 지원합니다. | 예 - 인페인팅 및 다양한 변형을 지원합니다 |
강점 | 더 나은 프롬프트 충실도, 리얼리즘, 멀티모달 컨텍스트 사용, 편집 명령 준수에서 강력함 | 프롬프트 준수, 자연 텍스트 렌더링, 스타일 다양성, 일관된 이미지 생성 시 강력함 |
이미지 생성 API 호출
다음 명령은 코드와 함께 이미지 모델을 사용하는 가장 기본적인 방법을 보여줍니다. 이러한 모델을 프로그래밍 방식으로 처음 사용하는 경우 빠른 시작부터 시작합니다.
POST 요청을 다음으로 보냅니다.
https://<your_resource_name>.openai.azure.com/openai/deployments/<your_deployment_name>/images/generations?api-version=<api_version>
URL:
다음 값을 바꿉니다.
-
<your_resource_name>
: Azure OpenAI 리소스의 이름입니다. -
<your_deployment_name>
는 DALL-E 3 또는 GPT-image-1 모델 배포의 이름입니다. -
<api_version>
: 사용하려는 API의 버전입니다. 예:2025-04-01-preview
.
필수 헤더:
-
Content-Type
:application/json
-
api-key
:<your_API_key>
Body:
다음은 샘플 요청 본문입니다. 이후 섹션에서 정의된 다양한 옵션을 지정합니다.
{
"prompt": "A multi-colored umbrella on the beach, disposable camera",
"model": "gpt-image-1",
"size": "1024x1024",
"n": 1,
"quality": "high"
}
Tip
이미지 생성 토큰 비용은 이미지 토큰을 참조하세요.
Output
성공적인 이미지 생성 API 호출의 응답은 다음 예제와 같습니다. 필드에는 b64_json
출력 이미지 데이터가 포함됩니다.
{
"created": 1698116662,
"data": [
{
"b64_json": "<base64 image data>"
}
]
}
Note
response_format
매개 변수는 항상 base64로 인코딩된 이미지를 반환하는 GPT-image-1에서는 지원되지 않습니다.
Streaming
gpt-image-1
에 이미지 생성 요청을 스트리밍하려면, stream
매개 변수를 true
로 설정하고, partial_images
매개 변수를 0과 3 사이의 값으로 설정하세요.
import base64
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = OpenAI(
base_url = "https://RESOURCE-NAME-HERE/openai/v1/",
api_key=token_provider,
default_headers={"api_version":"preview"}
)
stream = client.images.generate(
model="gpt-image-1",
prompt="A cute baby sea otter",
n=1,
size="1024x1024",
stream=True,
partial_images = 2
)
for event in stream:
if event.type == "image_generation.partial_image":
idx = event.partial_image_index
image_base64 = event.b64_json
image_bytes = base64.b64decode(image_base64)
with open(f"river{idx}.png", "wb") as f:
f.write(image_bytes)
API 호출 거부
프롬프트와 이미지는 콘텐츠 정책에 따라 필터링됩니다. 프롬프트나 이미지가 플래그로 지정되면 API가 오류를 반환합니다.
프롬프트에 플래그가 지정되면 메시지의 error.code
값이 contentFilter
으로 설정됩니다. 예제는 다음과 같습니다.
{
"created": 1698435368,
"error":
{
"code": "contentFilter",
"message": "Your task failed as a result of our safety system."
}
}
생성된 이미지 자체가 필터링될 수도 있습니다. 이 경우 오류 메시지는 안전 시스템의 결과로 필터링된 생성된 이미지로 설정됩니다. 예제는 다음과 같습니다.
{
"created": 1698435368,
"error":
{
"code": "contentFilter",
"message": "Generated image was filtered as a result of our safety system."
}
}
효과적인 텍스트-이미지 프롬프트 작성
프롬프트에서는 이미지에서 보려고 하는 콘텐츠와 이미지의 비주얼 스타일을 설명해야 합니다.
프롬프트를 작성할 때 이미지 API에는 콘텐츠 조정 필터가 함께 제공됩니다. 서비스에서 프롬프트를 유해한 콘텐츠로 인식하면 이미지를 생성하지 않습니다. 자세한 내용은 콘텐츠 필터링을 참조하세요.
Tip
텍스트 프롬프트를 조정하여 다양한 종류의 이미지를 생성하는 방법을 자세히 알아보려면 이미지 프롬프트 엔지니어링 가이드를 참조하세요.
API 옵션 지정
다음 API 본문 매개 변수는 이미지 생성 모델에 사용할 수 있습니다.
Size
생성된 이미지의 크기를 지정합니다.
1024x1024
, 1024x1536
, 또는 1536x1024
중 하나여야 합니다 GPT-image-1 모델의 경우. 사각형 이미지는 생성 속도가 더 빠릅니다.
Quality
이미지 품질에는 low
, medium
, high
의 세 가지 옵션이 있습니다. 낮은 품질의 이미지는 더 빨리 생성될 수 있습니다.
기본값은 high
입니다.
Number
단일 API 호출에서 1~10개의 이미지를 생성할 수 있습니다. 기본값은 1
입니다.
사용자 ID
사용자 매개 변수를 사용하여 요청을 만드는 사용자의 고유 식별자를 지정합니다. 이 식별자는 사용 패턴을 추적하고 모니터링하는 데 유용합니다. 값은 사용자 ID 또는 전자 메일 주소와 같은 모든 문자열일 수 있습니다.
출력 형식
output_format 매개 변수를 사용하여 생성된 이미지의 형식을 지정합니다. 지원되는 형식은 다음과 같습니다 PNG
JPEG
. 기본값은 PNG
입니다.
Note
WEBP 이미지는 Azure AI Foundry Models의 Azure OpenAI에서 지원되지 않습니다.
Compression
output_compression 매개 변수를 사용하여 생성된 이미지의 압축 수준을 지정합니다.
0
와 100
사이의 정수를 입력하세요: 0
는 압축 없음이고 100
는 최대 압축입니다. 기본값은 100
입니다.
Streaming
스트림 매개 변수를 사용하여 스트리밍 응답을 사용하도록 설정합니다.
true
로 설정하면 API는 생성되는 대로 부분 이미지를 반환합니다. 이 기능은 사용자에게 더 빠른 시각적 피드백을 제공하고, 인식되는 대기 시간을 개선합니다.
partial_images 매개 변수를 설정하여 생성되는 부분 이미지 수를 제어합니다(1-3).
이미지 편집 API 호출
이미지 편집 API를 사용하면 제공한 텍스트 프롬프트를 기반으로 기존 이미지를 수정할 수 있습니다. API 호출은 이미지 생성 API 호출과 유사하지만 입력 이미지도 제공해야 합니다.
Important
입력 이미지의 크기는 50MB 미만이어야 하며 PNG 또는 JPG 파일이어야 합니다.
Important
gpt-image-1-mini
는 현재 이미지 편집을 지원하지 않습니다.
POST 요청을 다음으로 보냅니다.
https://<your_resource_name>.openai.azure.com/openai/deployments/<your_deployment_name>/images/edits?api-version=<api_version>
URL:
다음 값을 바꿉니다.
-
<your_resource_name>
: Azure OpenAI 리소스의 이름입니다. -
<your_deployment_name>
는 DALL-E 3 또는 GPT-image-1 모델 배포의 이름입니다. -
<api_version>
: 사용하려는 API의 버전입니다. 예:2025-04-01-preview
.
필수 헤더:
-
Content-Type
:multipart/form-data
-
api-key
:<your_API_key>
Body:
다음은 샘플 요청 본문입니다. 이후 섹션에서 정의된 다양한 옵션을 지정합니다.
Important
이미지 편집 API는 JSON 데이터가 아닌 다중 파트/양식 데이터를 사용합니다. 아래 예제에서는 cURL 요청에 연결될 샘플 양식 데이터를 보여 주세요.
-F "image[]=@beach.png" \
-F 'prompt=Add a beach ball in the center' \
-F "model=gpt-image-1" \
-F "size=1024x1024" \
-F "n=1" \
-F "quality=high"
API 응답 출력
성공적인 이미지 편집 API 호출의 응답은 다음 예제와 같습니다. 필드에는 b64_json
출력 이미지 데이터가 포함됩니다.
{
"created": 1698116662,
"data": [
{
"b64_json": "<base64 image data>"
}
]
}
이미지 편집 API 옵션 지정
다음 API 본문 매개 변수는 이미지 생성 모델에 사용할 수 있는 것 외에도 이미지 편집 모델에 사용할 수 있습니다.
Image
이미지 값은 편집하려는 이미지 파일을 나타냅니다.
입력 충실도
input_fidelity 매개 변수는 모델이 입력 이미지의 스타일과 기능, 특히 얼굴 기능을 일치시키는 데 얼마나 많은 활동을 기울이는지 제어합니다.
이 매개 변수를 사용하면 관련 없는 영역을 변경하지 않고 이미지를 미세하게 편집할 수 있습니다. 높은 입력 충실도를 사용하는 경우 얼굴은 표준 모드보다 더 정확하게 유지됩니다.
Important
입력 충실도는 gpt-image-1-mini
모델에서 지원되지 않습니다.
Mask
mask 매개 변수는 기본 image 입력 매개 변수와 동일한 형식을 사용합니다. 해당 영역에서 알파값 0의 완전히 투명한 픽셀을 사용하여 모델이 편집할 이미지의 영역을 정의합니다. 마스크는 PNG 파일이어야 하며 입력 이미지와 크기가 같아야 합니다.
Streaming
스트림 매개 변수를 사용하여 스트리밍 응답을 사용하도록 설정합니다.
true
로 설정하면 API는 생성되는 대로 부분 이미지를 반환합니다. 이 기능은 사용자에게 더 빠른 시각적 피드백을 제공하고, 인식되는 대기 시간을 개선합니다.
partial_images 매개 변수를 설정하여 생성되는 부분 이미지 수를 제어합니다(1-3).