AWS Bedrock - Image Generation
AWS Bedrock - Image Generation
Stable Diffusion, Amazon Titan Image Generator, Amazon Nova Canvas 모델로 Bedrock 이미지 생성을 사용해요.
출처: 문서
본문
지원 모델 (Supported Models)
| 모델 이름 | 함수 호출 | 비용 추적 |
|---|---|---|
| Stable Diffusion 3 - v0 | image_generation(model="bedrock/stability.stability.sd3-large-v1:0", prompt=prompt) |
✅ |
| Stable Diffusion - v0 | image_generation(model="bedrock/stability.stable-diffusion-xl-v0", prompt=prompt) |
✅ |
| Stable Diffusion - v1 | image_generation(model="bedrock/stability.stable-diffusion-xl-v1", prompt=prompt) |
✅ |
| Amazon Titan Image Generator - v1 | image_generation(model="bedrock/amazon.titan-image-generator-v1", prompt=prompt) |
✅ |
| Amazon Titan Image Generator - v2 | image_generation(model="bedrock/amazon.titan-image-generator-v2:0", prompt=prompt) |
✅ |
| Amazon Nova Canvas - v1 | image_generation(model="bedrock/amazon.nova-canvas-v1:0", prompt=prompt) |
✅ |
사용법 (Usage)
기본 사용법 (SDK)
import os
from litellm import image_generation
os.environ["AWS_ACCESS_KEY_ID"] = ""
os.environ["AWS_SECRET_ACCESS_KEY"] = ""
os.environ["AWS_REGION_NAME"] = ""
response = image_generation(
prompt="A cute baby sea otter",
model="bedrock/stability.stable-diffusion-xl-v0",
)
print(f"response: {response}")
선택 파라미터 설정
import os
from litellm import image_generation
os.environ["AWS_ACCESS_KEY_ID"] = ""
os.environ["AWS_SECRET_ACCESS_KEY"] = ""
os.environ["AWS_REGION_NAME"] = ""
response = image_generation(
prompt="A cute baby sea otter",
model="bedrock/stability.stable-diffusion-xl-v0",
### OPENAI-COMPATIBLE ###
size="128x512", # width=128, height=512
### PROVIDER-SPECIFIC ###
# see `AmazonStabilityConfig` in bedrock.py for all params
seed=30,
)
print(f"response: {response}")
LiteLLM Proxy
1. config.yaml 설정:
model_list:
- model_name: amazon.nova-canvas-v1:0
litellm_params:
model: bedrock/amazon.nova-canvas-v1:0
aws_region_name: "us-east-1"
aws_secret_access_key: my-key # OPTIONAL - all boto3 auth params supported
aws_secret_access_id: my-id # OPTIONAL - all boto3 auth params supported
2. Proxy 시작:
litellm --config /path/to/config.yaml
3. 테스트:
텍스트 → 이미지:
curl -L -X POST 'http://0.0.0.0:4000/v1/images/generations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $LITEL..._KEY' \
-d '{
"model": "amazon.nova-canvas-v1:0",
"prompt": "A cute baby sea otter"
}'
색상 가이드 생성:
curl -L -X POST 'http://0.0.0.0:4000/v1/images/generations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $LITEL..._KEY' \
-d '{
"model": "amazon.nova-canvas-v1:0",
"prompt": "A cute baby sea otter",
"taskType": "COLOR_GUIDED_GENERATION",
"colorGuidedGenerationParams": {"colors":["#FFFFFF"]}
}'
Amazon Nova Canvas - 이미지 편집
Bedrock Nova Canvas(amazon.nova-canvas-v1:0)와 함께 OpenAI 호환 image_edit()를 사용해요. 요청은 생성과 동일한 InvokeModel API를 사용하며, LiteLLM이 입력을 Nova Canvas task type으로 매핑해요:
| 시나리오 | Bedrock에 보내는 taskType |
|---|---|
| 이미지 + 프롬프트 (마스크 없음) | IMAGE_VARIATION |
| 이미지 + 프롬프트 + 마스크 | INPAINTING (inPaintingParams.image, maskImage 또는 maskPrompt) |
| taskType: OUTPAINTING + mask 또는 maskPrompt | OUTPAINTING (Bedrock은 둘 중 하나를 요구; LiteLLM은 둘 다 없으면 명확한 에러 발생) |
| BACKGROUND_REMOVAL | BACKGROUND_REMOVAL |
BACKGROUND_REMOVAL의 경우 AWS 요청에 imageGenerationConfig를 포함하면 안 되며, LiteLLM은 size, n, seed 등을 전달해도 그 태스크에 대해 이를 생략해요. 이미지 편집용 추가 Nova Canvas inference ID는 model_prices_and_context_window.json에서 supports_nova_canvas_image_edit: true를 설정해야 해요 (amazon.nova-canvas-v1:0 참고).
from litellm import image_edit
response = image_edit(
image=open("photo.png", "rb"),
prompt="Add soft sunset lighting",
model="bedrock/amazon.nova-canvas-v1:0",
)
Inference Profiles로 이미지 생성
AWS Bedrock Application Inference Profiles를 이미지 생성에 쓸 때 model_id 파라미터로 inference profile ARN을 지정해요.
SDK:
from litellm import image_generation
response = image_generation(
model="bedrock/amazon.nova-canvas-v1:0",
model_id="arn:aws:bedrock:eu-west-1:000000000000:application-inference-profile/a0a0a0a0a0a0",
prompt="A cute baby sea otter",
)
print(f"response: {response}")
Proxy:
model_list:
- model_name: nova-canvas-inference-profile
litellm_params:
model: bedrock/amazon.nova-canvas-v1:0
model_id: arn:aws:bedrock:eu-west-1:000000000000:application-inference-profile/a0a0a0a0a0a0
aws_region_name: "eu-west-1"