Luma 프로바이더

Luma 프로바이더

Luma AI의 Dream Machine 플랫폼에서 제공하는 최첨단 이미지 생성 모델을 AI SDK에서 쓸 수 있게 해주는 프로바이더예요. 뛰어난 프롬프트 이해와 캐릭터 일관성, 다중 이미지 참조 같은 고유한 기능을 제공해요.

출처: 문서

본문

Luma AI는 Dream Machine 플랫폼을 통해 최첨단 이미지 생성 모델을 제공해요. 이 모델들은 뛰어난 프롬프트 이해와 캐릭터 일관성, 다중 이미지 참조 지원 같은 고유한 기능과 함께 초고품질 이미지 생성을 제공해요.

설정 (Setup)

Luma 프로바이더는 @ai-sdk/luma 모듈로 제공돼요. 다음과 같이 설치할 수 있어요:

프로바이더 인스턴스 (Provider Instance)

@ai-sdk/luma에서 기본 프로바이더 인스턴스 luma를 불러올 수 있어요:

import { luma } from '@ai-sdk/luma';

커스터마이즈가 필요하다면 createLuma를 불러와 원하는 설정으로 프로바이더 인스턴스를 만들 수 있어요:

import { createLuma } from '@ai-sdk/luma';

const luma = createLuma({
  apiKey: *** // optional, defaults to LUMA_API_KEY environment variable
  baseURL: 'custom-url', // optional
  headers: {
    /* custom headers */
  }, // optional
});

Luma 프로바이더 인스턴스를 커스터마이즈할 때 사용할 수 있는 선택적 설정은 다음과 같아요:

  • baseURL string

    API 호출에 다른 URL 접두사를 사용해요. 예를 들어 프록시 서버를 쓸 때 유용해요. 기본 접두사는 https://api.lumalabs.ai예요.

  • apiKey string

    Authorization 헤더로 보내는 API 키예요. 기본값은 LUMA_API_KEY 환경 변수예요.

  • headers Record<string,string>

    요청에 포함할 커스텀 헤더예요.

  • fetch (input: RequestInfo, init?: RequestInit) => Promise<Response>

    커스텀 fetch 구현이에요. 요청을 가로채는 미들웨어로 쓸 수도 있고, 예를 들어 테스트용으로 커스텀 fetch 구현을 제공할 수도 있어요.

이미지 모델 (Image Models)

.image() 팩토리 메서드로 Luma 이미지 모델을 만들 수 있어요. AI SDK에서 이미지 생성에 대해 더 알고 싶다면 generateImage()를 참고하세요.

기본 사용법 (Basic Usage)

import { luma, type LumaImageModelOptions } from '@ai-sdk/luma';
import { generateImage } from 'ai';
import fs from 'fs';

const { image } = await generateImage({
  model: luma.image('photon-1'),
  prompt: 'A serene mountain landscape at sunset',
  aspectRatio: '16:9',
});

const filename = `image-${Date.now()}.png`;
fs.writeFileSync(filename, image.uint8Array);
console.log(`Image saved to ${filename}`);

이미지 모델 설정 (Image Model Settings)

선택적 설정으로 생성 동작을 커스터마이즈할 수 있어요:

const { image } = await generateImage({
  model: luma.image('photon-1'),
  prompt: 'A serene mountain landscape at sunset',
  aspectRatio: '16:9',
  maxImagesPerCall: 1, // Maximum number of images to generate per API call
  providerOptions: {
    luma: {
      pollIntervalMillis: 5000, // How often to check for completed images (in ms)
      maxPollAttempts: 10, // Maximum number of polling attempts before timeout
    },
  } satisfies LumaImageModelOptions,
});

Luma는 비동기 대기열 시스템을 통해 이미지를 처리하므로, 이 설정들로 폴링 동작을 조정할 수 있어요:

  • maxImagesPerCall number

    API 호출당 생성되는 최대 이미지 수를 재정의해요. 기본값은 1.

  • pollIntervalMillis number

    이미지가 처리되는 동안 완료된 이미지에 대해 API를 확인하는 빈도를 제어해요. 기본값은 500ms.

  • maxPollAttempts number

    이미지 생성은 비동기적으로 대기열에 놓이므로 결과를 기다리는 시간을 제한해요. 기본값은 120회 시도.

모델 기능 (Model Capabilities)

Luma는 두 가지 주요 모델을 제공해요:

모델 설명
photon-1 High-quality image generation with superior prompt understanding
photon-flash-1 Faster generation optimized for speed while maintaining quality

두 모델 모두 다음 종횡비를 지원해요:

  • 1:1
  • 3:4
  • 4:3
  • 9:16
  • 16:9 (기본)
  • 9:21
  • 21:9

지원되는 종횡비에 대한 자세한 내용은 Luma Image Generation 문서를 참고하세요.

Luma 모델의 주요 특징은 다음과 같아요:

  • 초고품질 이미지 생성
  • 유사 모델 대비 10배 높은 비용 효율
  • 뛰어난 프롬프트 이해 및 준수
  • 단일 참조 이미지에서의 고유한 캐릭터 일관성 기능
  • 정확한 스타일 매칭을 위한 다중 이미지 참조 지원

이미지 편집 (Image editing)

Luma는 다른 이미지를 참조하는 이미지 생성을 위한 여러 모드를 지원해요.

이미지 수정 (Modify an image)

이미지는 URL로 전달해야 해요. weight는 providerOptions.luma.images 배열에서 각 이미지에 대해 구성할 수 있어요.

await generateImage({
  model: luma.image('photon-flash-1'),
  prompt: {
    text: 'transform the bike to a boat',
    images: [
      'https://hebbkx1anhila5yf.public.blob.vercel-storage.com/future-me-8hcBWcZOkbE53q3gshhEm16S87qDpF.jpeg',
    ],
  },
  providerOptions: {
    luma: {
      referenceType: 'modify_image',
      images: [{ weight: 1.0 }],
    } satisfies LumaImageModelOptions,
  },
});

자세한 내용은 https://docs.lumalabs.ai/docs/image-generation#modify-image 에서 확인하세요.

이미지 참조 (Reference an image)

최대 4개의 참조 이미지를 사용해 생성 과정을 안내하세요. 변형을 만들거나 복잡한 개념을 시각화하는 데 유용해요. 각 이미지의 weight(0-1)를 조정해 참조 이미지의 영향력을 제어하세요.

await generateImage({
  model: luma.image('photon-flash-1'),
  prompt: {
    text: 'A salamander at dusk in a forest pond, in the style of ukiyo-e',
    images: [
      'https://hebbkx1anhila5yf.public.blob.vercel-storage.com/future-me-8hcBWcZOkbE53q3gshhEm16S87qDpF.jpeg',
    ],
  },
  aspectRatio: '1:1',
  providerOptions: {
    luma: {
      referenceType: 'image',
      images: [{ weight: 0.8 }],
    } satisfies LumaImageModelOptions,
  },
});

자세한 내용은 https://docs.lumalabs.ai/docs/image-generation#image-reference 에서 확인하세요.

스타일 참조 (Style Reference)

참조 이미지를 사용해 생성물에 특정 시각적 스타일을 적용해요. weight 파라미터로 스타일 영향력을 제어하세요.

await generateImage({
  model: luma.image('photon-flash-1'),
  prompt: {
    text: 'A blue cream Persian cat launching its website on Vercel',
    images: [
      'https://hebbkx1anhila5yf.public.blob.vercel-storage.com/future-me-8hcBWcZOkbE53q3gshhEm16S87qDpF.jpeg',
    ],
  },
  aspectRatio: '1:1',
  providerOptions: {
    luma: {
      referenceType: 'style',
      images: [{ weight: 0.8 }],
    } satisfies LumaImageModelOptions,
  },
});

자세한 내용은 https://docs.lumalabs.ai/docs/image-generation#style-reference 에서 확인하세요.

캐릭터 참조 (Character Reference)

같은 대상의 최대 4개 참조 이미지를 사용해 일관되고 개인화된 캐릭터를 만드세요. 참조 이미지가 많을수록 캐릭터 표현이 향상돼요.

await generateImage({
  model: luma.image('photon-flash-1'),
  prompt: {
    text: 'A woman with a cat riding a broomstick in a forest',
    images: [
      'https://hebbkx1anhila5yf.public.blob.vercel-storage.com/future-me-8hcBWcZOkbE53q3gshhEm16S87qDpF.jpeg',
    ],
  },
  aspectRatio: '1:1',
  providerOptions: {
    luma: {
      referenceType: 'character',
      images: [
        {
          id: 'identity0',
        },
      ],
    } satisfies LumaImageModelOptions,
  },
});

자세한 내용은 https://docs.lumalabs.ai/docs/image-generation#character-reference 에서 확인하세요.

더 알아보기 (Learn more)

전체 사이트맵