RunwayML - 이미지 생성

RunwayML - 이미지 생성 (Image Generation)

RunwayML의 이미지 생성 기능을 LiteLLM에서 사용하는 방법을 알아봐요. 텍스트 프롬프트로 고품질 이미지를 생성할 수 있어요.

출처: 문서

본문

개요

속성 내용
설명 RunwayML은 고품질 결과의 고급 AI 이미지 생성을 제공해요
LiteLLM 라우트 runwayml/
지원 연산 /images/generations
공식 문서 RunwayML API ↗

LiteLLM은 RunwayML의 Gen-4 이미지 생성 API를 지원해서, 텍스트 프롬프트로 고품질 이미지를 생성할 수 있어요.

빠른 시작

from litellm import image_generation
import os

os.environ["RUNWAYML_API_KEY"] = "your-api-key"

response = image_generation(
    model="runwayml/gen4_image",
    prompt="A serene mountain landscape at sunset",
    size="1920x1080"
)

print(response.data[0].url)

인증

RunwayML API 키를 설정해요:

import os

os.environ["RUNWAYML_API_KEY"] = "your-api-key"

지원 파라미터

파라미터 타입 필수 설명
model string 사용할 모델 (예: runwayml/gen4_image)
prompt string 이미지에 대한 텍스트 설명
size string 아니오 이미지 크기 (기본값: 1920x1080)

지원 크기

  • 1024x1024
  • 1792x1024
  • 1024x1792
  • 1920x1080 (기본값)
  • 1080x1920

비동기 사용법

from litellm import aimage_generation
import os
import asyncio

os.environ["RUNWAYML_API_KEY"] = "your-api-key"

async def generate_image():
    response = await aimage_generation(
        model="runwayml/gen4_image",
        prompt="A futuristic city skyline at night",
        size="1920x1080"
    )

    print(response.data[0].url)
asyncio.run(generate_image())

LiteLLM Proxy 사용법

config.yaml:

model_list:
  - model_name: gen4-image
    litellm_params:
      model: runwayml/gen4_image
      api_key: os.environ/RUNWAYML_API_KEY

Proxy 시작:

litellm --config /path/to/config.yaml

Proxy를 통해 이미지 생성:

curl --location 'http://localhost:4000/v1/images/generations' \
--header 'Content-Type: application/json' \
--header 'x-litellm-api-key: *** ' \
--data '{
    "model": "runwayml/gen4_image",
    "prompt": "A serene mountain landscape at sunset",
    "size": "1920x1080"
}'

지원 모델

모델 설명 기본 크기
runwayml/gen4_image 고품질 이미지 생성 1920x1080

비용 추적

LiteLLM은 RunwayML 이미지 생성 비용을 자동으로 추적해요:

from litellm import image_generation, completion_cost

response = image_generation(
    model="runwayml/gen4_image",
    prompt="A serene mountain landscape at sunset",
    size="1920x1080"
)

cost = completion_cost(completion_response=response)
print(f"Image generation cost: ${cost}")

지원 기능

기능 지원
Image Generation
Cost Tracking
Logging
Fallbacks
Load Balancing

동작 원리

RunwayML은 비동기 태스크 기반 API 패턴을 사용해요. LiteLLM이 폴링과 응답 변환을 자동으로 처리해요.

LiteLLM이 해주는 일

litellm.image_generation() 또는 /v1/images/generations를 호출하면:

  • 요청 변환: OpenAI 이미지 생성 형식 → RunwayML 형식
  • 태스크 제출: 변환된 요청을 RunwayML API로 전송
  • Task ID 수신: 초기 응답에서 태스크 ID를 포착
  • 자동 폴링:
    • 2초마다 태스크 상태 엔드포인트 폴링
    • 상태가 SUCCEEDED 또는 FAILED가 될 때까지 계속
    • 기본 타임아웃: 10분 (RUNWAYML_POLLING_TIMEOUT으로 설정 가능)
  • 응답 변환: RunwayML 형식 → OpenAI 형식
  • 결과 반환: 통합된 OpenAI 형식 응답을 클라이언트에 전송

폴링 구성:

  • 기본 타임아웃: 600초 (10분)
  • RUNWAYML_POLLING_TIMEOUT 환경 변수로 구성 가능
  • 호출 유형에 따라 동기(time.sleep()) 또는 비동기(await asyncio.sleep()) 사용

info: 일반적인 처리 시간은 이미지 크기와 복잡도에 따라 10-30초예요.

더 알아보기 (Learn more)

  • RunwayML API 공식 문서
  • LiteLLM 이미지 생성 API