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 인스턴스를 사용할 수도 있어요. |
|---|