OpenAIImageGenerator

OpenAIImageGenerator

gpt-image-2 같은 OpenAI 이미지 생성 모델로 이미지를 만드는 컴포넌트예요.

출처: 문서

본문

OpenAIImageGenerator 컴포넌트는 OpenAI의 이미지 생성 모델(예: gpt-image-2)로 이미지를 생성해요.

기본적으로 이 컴포넌트는 gpt-image-2 모델, "auto" 품질, 1024x1024 해상도를 사용해요. model(컴포넌트 초기화 시), quality와 size(컴포넌트 초기화 또는 실행 시) 파라미터로 이 값을 바꿀 수 있어요.

OpenAIImageGenerator는 동작에 OpenAI 키가 필요해요. 기본적으로 OPENAI_API_KEY 환경 변수를 사용해요. 아니면 초기화할 때 api_key로 API 키를 넘길 수 있어요.

image_generator = OpenAIImageGenerator(api_key=Secret.from_token("<your-api-key>"))

컴포넌트 파라미터의 자세한 설명은 API 참조를, OpenAI API 파라미터의 세부 내용은 OpenAI 문서를 확인하세요.

더 알아보기 (Learn more)

단독으로 쓰기

from haystack.components.generators import OpenAIImageGenerator


image_generator = OpenAIImageGenerator()
response = image_generator.run("Show me a picture of a black cat.")

print(response)

파이프라인에서 쓰기

다음 파이프라인에서는 먼저 PromptBuilder를 구성해서 다양한 예술 요소를 묘사하는 상세 템플릿으로 이미지 설명을 만들고, 이 구조화된 프롬프트를 OpenAIImageGenerator에 넘겨 상세 설명에 기반한 이미지를 생성해요.

from haystack import Pipeline
from haystack.components.generators import OpenAIImageGenerator
from haystack.components.builders import PromptBuilder


prompt_builder = PromptBuilder(
    template="""Create a {{ style }} image with the following details: 

                Main subject: {{ prompt }}
                Artistic style: {{ art_style }}
                Lighting: {{ lighting }}
                Color palette: {{ colors }}
                Composition: {{ composition }}
                Additional details: {{ details }}""",
)

image_generator = OpenAIImageGenerator()

pipeline = Pipeline()
pipeline.add_component("prompt_builder", prompt_builder)
pipeline.add_component("image_generator", image_generator)

pipeline.connect("prompt_builder.prompt", "image_generator.prompt")

results = pipeline.run(
    {
        "prompt": "a mystical treehouse library",
        "style": "photorealistic",
        "art_style": "fantasy concept art with intricate details",
        "lighting": "dusk with warm lantern light glowing from within",
        "colors": "rich earth tones, deep greens, and golden accents",
        "composition": "wide angle view showing the entire structure nestled in an ancient oak tree",
        "details": "spiral staircases wrapping around branches, stained glass windows, floating books, and magical fireflies providing ambient illumination",
    },
)

generated_images = results["image_generator"]["images"]
revised_prompt = results["image_generator"]["revised_prompt"]

print(f"Generated image (base64-encoded): {generated_images[0]}")
print(f"Revised prompt: {revised_prompt}")