Stability AI 이미지 생성

Stability AI 이미지 생성 (Stability AI Image Generation)

Spring AI는 Stability AI의 텍스트-이미지 생성 모델을 지원해요. 이 글에서는 API 키 설정, 자동 설정, 이미지 관련 프로퍼티, 그리고 런타임 옵션까지 알아볼게요.

출처: 문서

본문

Spring AI는 Stability AI의 text to image generation model을 지원해요.

Prerequisites

Stability AI의 AI 모델에 접근하려면 Stability AI로 API 키를 만들어야 해요. API 키를 얻으려면 그들의 Getting Started documentation을 따라가세요.

Spring AI 프로젝트는 spring.ai.stabilityai.api-key라는 구성 프로퍼티를 정의하는데, 여기에 Stability AI에서 얻은 API Key 값을 설정해야 해요.

이 구성 프로퍼티를 application.properties 파일에 설정할 수 있어요:

spring.ai.stabilityai.api-key=<your-stabilityai-api-key>

API 키 같은 민감한 정보를 다룰 때 보안을 강화하려면, Spring Expression Language(SpEL)를 사용해 커스텀 환경 변수를 참조할 수 있어요:

# In application.yml
spring:
  ai:
    stabilityai:
      api-key: ${STAB...KEY}

# In your environment or .env file
export STABILITYAI_API_KEY=<your-stabilityai-api-key>

또한 애플리케이션 코드에서 프로그래밍 방식으로 이 구성을 설정할 수도 있어요:

// Retrieve API key from a secure source or environment variable
String apiKey = System.getenv("STABILITYAI_API_KEY");

Auto-configuration

__ Spring AI 자동 설정과 스타터 모듈 아티팩트 이름에 큰 변경이 있었어요. 자세한 내용은 upgrade notes를 참고해주세요.

Spring AI는 Stability AI Image Generation Client에 대한 Spring Boot 자동 설정을 제공해요. 활성화하려면 프로젝트의 Maven pom.xml 파일에 다음 의존성을 추가하세요:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-stability-ai</artifactId>
</dependency>

또는 Gradle build.gradle 빌드 파일에 추가할 수도 있어요:

dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-model-stability-ai'
}
__ 빌드 파일에 Spring AI BOM을 추가하려면 Dependency Management 섹션을 참고해주세요.

Image Generation Properties

프리픽스 spring.ai.stabilityai는 Stability AI에 연결할 수 있게 해주는 프로퍼티 프리픽스예요.

Property Description Default
spring.ai.stabilityai.base-url 연결할 URL api.stability.ai/v1
spring.ai.stabilityai.api-key API 키 -
__ 이미지 자동 설정의 활성화/비활성화는 이제 프리픽스 spring.ai.model.image이 붙은 최상위 프로퍼티로 설정해요. 활성화하려면 spring.ai.model.image=stabilityai (기본값으로 활성화됨). 비활성화하려면 spring.ai.model.image=none (또는 stabilityai와 일치하지 않는 어떤 값). 이 변경은 여러 모델의 설정을 허용하기 위한 것이에요.

프리픽스 spring.ai.stabilityai.image는 Stability AI의 ImageModel 구현을 구성할 수 있게 해주는 프로퍼티 프리픽스예요.

Property Description Default
spring.ai.stabilityai.image.enabled (제거됨, 더 이상 유효하지 않음) Stability AI 이미지 모델 활성화. true
spring.ai.model.image Stability AI 이미지 모델 활성화. stabilityai
spring.ai.stabilityai.image.base-url 선택적으로 spring.ai.openai.base-url을 재정의하여 특정 URL 제공 https://api.stability.ai/v1
spring.ai.stabilityai.image.api-key 선택적으로 spring.ai.openai.api-key를 재정의하여 특정 api-key 제공 -
spring.ai.stabilityai.image.n 생성할 이미지 수. 1에서 10 사이여야 해요. 1
spring.ai.stabilityai.image.model Stability AI에서 사용할 엔진/모델. 모델은 URL에 경로 매개변수로 전달돼요. stable-diffusion-v1-6
spring.ai.stabilityai.image.width 생성할 이미지의 너비(픽셀), 64로 나누어 떨어지는 증분 단위. 엔진별 차원 검증이 적용돼요. 512
spring.ai.stabilityai.image.height 생성할 이미지의 높이(픽셀), 64로 나누어 떨어지는 증분 단위. 엔진별 차원 검증이 적용돼요. 512
spring.ai.stabilityai.image.response-format 생성된 이미지가 반환되는 형식. "application/json" 또는 "image/png"여야 해요. -
spring.ai.stabilityai.image.cfg_scale 프롬프트 텍스트에 대한 확산 과정의 준수 엄격도 수준. 범위: 0에서 35. 7
spring.ai.stabilityai.image.clip_guidance_preset 이미지 모델을 특정 스타일로 안내하기 위한 스타일 프리셋을 전달하세요. 이 스타일 프리셋 목록은 변경될 수 있어요. NONE
spring.ai.stabilityai.image.sampler 확산 과정에 사용할 샘플러. 이 값을 생략하면 적절한 샘플러가 자동으로 선택돼요. -
spring.ai.stabilityai.image.seed 랜덤 노이즈 시드 (이 옵션을 생략하거나 0을 사용하면 랜덤 시드). 유효 범위: 0에서 4294967295. 0
spring.ai.stabilityai.image.steps 실행할 확산 단계 수. 유효 범위: 10에서 50. 30
spring.ai.stabilityai.image.style_preset 이미지 모델을 특정 스타일로 안내하기 위한 스타일 프리셋을 전달하세요. 이 스타일 프리셋 목록은 변경될 수 있어요. -

Runtime Options

StabilityAiImageOptions.java는 사용할 모델, 스타일, 크기 등 모델 구성을 제공해요.

시작 시 기본 옵션은 StabilityAiImageModel(StabilityAiApi stabilityAiApi, StabilityAiImageOptions options) 생성자로 구성할 수 있어요. 또는 앞서 설명한 spring.ai.stabilityai.image.* 프로퍼티를 사용할 수도 있어요.

런타임에는 ImagePrompt 호출에 새 요청별 옵션을 추가해 기본 옵션을 재정의할 수 있어요. 예를 들어 스타일과 생성할 이미지 수 같은 Stability AI 특정 옵션을 재정의하려면 다음 코드 예시를 사용하세요:

ImageResponse response = stabilityaiImageModel.call(
        new ImagePrompt("A light cream colored mini golden doodle",
        StabilityAiImageOptions.builder()
                .stylePreset("cinematic")
                .n(4)
                .height(1024)
                .width(1024).build())

);
__ 모델별 StabilityAiImageOptions에 더해, ImageOptionsBuilder#builder()로 만든 이식 가능한 ImageOptions 인스턴스를 사용할 수도 있어요.

더 알아보기 (Learn more)