DeepInfra 프로바이더

DeepInfra 프로바이더

DeepInfra를 AI SDK에서 쓸 수 있게 해주는 프로바이더예요. DeepInfra는 최신 오픈소스 모델들을 API로 제공하는데, Llama 3, Mixtral, Qwen 같은 인기 있는 모델들을 간편하게 사용할 수 있어요.

출처: 문서

본문

DeepInfra 프로바이더는 DeepInfra API를 통해 최신 모델들을 지원해요. 여기에는 Llama 3, Mixtral, Qwen 그리고 그 외 많은 인기 있는 오픈소스 모델들이 포함돼요.

설정 (Setup)

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

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

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

import { deepInfra } from '@ai-sdk/deepinfra';

커스터마이즈가 필요하다면 @ai-sdk/deepinfra에서 createDeepInfra를 불러와 원하는 설정으로 프로바이더 인스턴스를 만들 수 있어요:

import { createDeepInfra } from '@ai-sdk/deepinfra';

const deepInfra = createDeepInfra({
  apiKey: process.env.DEEPINFRA_API_KEY ?? '',
});

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

  • baseURL string

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

    참고: 언어 모델과 임베딩은 {baseURL}/openai의 OpenAI 호환 엔드포인트를 사용하고, 이미지 모델은 {baseURL}/inference를 사용해요.

  • apiKey string

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

  • headers Record<string,string>

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

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

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

언어 모델 (Language Models)

프로바이더 인스턴스로 언어 모델을 만들 수 있어요. 첫 번째 인자는 모델 ID예요. 예를 들면:

import { deepInfra } from '@ai-sdk/deepinfra';
import { generateText } from 'ai';

const { text } = await generateText({
  model: deepInfra('meta-llama/Meta-Llama-3.1-70B-Instruct'),
  prompt: 'Write a vegetarian lasagna recipe for 4 people.',
});

DeepInfra 언어 모델은 streamText 함수에서도 사용할 수 있어요 (AI SDK Core 참고).

모델 기능 (Model Capabilities)

Model Image Input Object Generation Tool Usage Tool Streaming
meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8
meta-llama/Llama-4-Scout-17B-16E-Instruct
meta-llama/Llama-3.3-70B-Instruct-Turbo
meta-llama/Llama-3.3-70B-Instruct
meta-llama/Meta-Llama-3.1-405B-Instruct
meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo
meta-llama/Meta-Llama-3.1-70B-Instruct
meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo
meta-llama/Meta-Llama-3.1-8B-Instruct
meta-llama/Llama-3.2-11B-Vision-Instruct
meta-llama/Llama-3.2-90B-Vision-Instruct
mistralai/Mixtral-8x7B-Instruct-v0.1
deepseek-ai/DeepSeek-V3
deepseek-ai/DeepSeek-R1
deepseek-ai/DeepSeek-R1-Distill-Llama-70B
deepseek-ai/DeepSeek-R1-Turbo
nvidia/Llama-3.1-Nemotron-70B-Instruct
Qwen/Qwen2-7B-Instruct
Qwen/Qwen2.5-72B-Instruct
Qwen/Qwen2.5-Coder-32B-Instruct
Qwen/QwQ-32B-Preview
google/codegemma-7b-it
google/gemma-2-9b-it
microsoft/WizardLM-2-8x22B
위 표는 인기 있는 모델들을 나열한 거예요. 사용 가능한 모델 전체 목록은 [DeepInfra 문서](https://deepinfra.com)를 참고하세요. 필요하다면 사용 가능한 프로바이더 모델 ID를 문자열로 그대로 전달할 수도 있어요.

이미지 모델 (Image Models)

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

import { deepInfra, type DeepInfraImageModelOptions } from '@ai-sdk/deepinfra';
import { generateImage } from 'ai';

const { image } = await generateImage({
  model: deepInfra.image('stabilityai/sd3.5'),
  prompt: 'A futuristic cityscape at sunset',
  aspectRatio: '16:9',
});
`size`와 `aspectRatio` 파라미터의 모델 지원 여부는 모델마다 달라요. 지원되는 옵션과 추가 파라미터는 [DeepInfra의 모델 페이지](https://deepinfra.com/models/text-to-image)에서 개별 모델 문서를 확인하세요.

모델별 옵션 (Model-specific options)

providerOptions.deepinfra 필드로 모델별 파라미터를 전달할 수 있어요:

import { deepInfra } from '@ai-sdk/deepinfra';
import { generateImage } from 'ai';

const { image } = await generateImage({
  model: deepInfra.image('stabilityai/sd3.5'),
  prompt: 'A futuristic cityscape at sunset',
  aspectRatio: '16:9',
  providerOptions: {
    deepinfra: {
      num_inference_steps: 30,
    } satisfies DeepInfraImageModelOptions,
  },
});

다음 옵션들을 providerOptions.deepinfra로 사용할 수 있어요. DeepInfraImageModelOptions로 타입을 지정할 수 있어요.

  • negative_prompt string

    생성된 이미지에서 피하고 싶은 내용을 텍스트로 설명해요.

  • num_inference_steps number

    이 옵션을 제공하는 모델의 디노이징 스텝 수예요.

  • guidance_scale number

    이 옵션을 제공하는 모델의 가이던스 스케일이에요.

  • guidance number

    이 옵션을 제공하는 이미지 편집 모델의 가이던스 값이에요.

  • response_format 'b64_json'

    OpenAI 호환 이미지 응답의 형식이에요. DeepInfra는 현재 b64_json을 지원해요.

  • quality string

    OpenAI 호환 이미지 품질 옵션이에요.

  • style string

    OpenAI 호환 이미지 스타일 옵션이에요.

  • user string

    최종 사용자의 고유 식별자예요.

DeepInfra 이미지 생성 모델들은 모델별 파라미터를 노출해요. 추가 필드는 `providerOptions.deepinfra`로 전달할 수 있고 DeepInfra가 검증해요.

이미지 편집 (Image Editing)

DeepInfra는 Qwen/Qwen-Image-Edit 같은 모델로 이미지 편집을 지원해요. prompt.images로 입력 이미지를 전달하면 기존 이미지를 변형하거나 편집할 수 있어요.

기본 이미지 편집 (Basic Image Editing)

텍스트 프롬프트로 기존 이미지를 변형해요:

const imageBuffer = readFileSync('./input-image.png');

const { images } = await generateImage({
  model: deepInfra.image('Qwen/Qwen-Image-Edit'),
  prompt: {
    text: 'Turn the cat into a golden retriever dog',
    images: [imageBuffer],
  },
  size: '1024x1024',
});

마스크로 인페인팅 (Inpainting with Mask)

마스크를 사용해서 이미지의 특정 부분만 편집할 수 있어요. 마스크에서 투명한 영역이 편집할 위치를 나타내요:

const image = readFileSync('./input-image.png');
const mask = readFileSync('./mask.png');

const { images } = await generateImage({
  model: deepInfra.image('Qwen/Qwen-Image-Edit'),
  prompt: {
    text: 'A sunlit indoor lounge area with a pool containing a flamingo',
    images: [image],
    mask: mask,
  },
});

다중 이미지 결합 (Multi-Image Combining)

여러 참조 이미지를 하나의 출력으로 결합할 수 있어요:

const cat = readFileSync('./cat.png');
const dog = readFileSync('./dog.png');

const { images } = await generateImage({
  model: deepInfra.image('Qwen/Qwen-Image-Edit'),
  prompt: {
    text: 'Create a scene with both animals together, playing as friends',
    images: [cat, dog],
  },
});
입력 이미지는 `Buffer`, `ArrayBuffer`, `Uint8Array` 또는 base64로 인코딩된 문자열로 제공할 수 있어요. DeepInfra는 `https://api.deepinfra.com/v1/openai/images/edits`에서 OpenAI 호환 이미지 편집 API를 사용해요.

모델 기능 (Model Capabilities)

종횡비를 지원하는 모델의 경우, 일반적으로 다음 비율이 지원돼요: 1:1 (default), 16:9, 1:9, 3:2, 2:3, 4:5, 5:4, 9:16, 9:21

size 파라미터를 지원하는 모델의 경우, 크기는 일반적으로 다음과 같아야 해요:

  • 32의 배수
  • 너비와 높이가 256~1440 픽셀 사이
  • 기본 크기는 1024x1024
Model Dimensions Specification Notes
stabilityai/sd3.5 Aspect Ratio Premium quality base model, 8B parameters
black-forest-labs/FLUX-1.1-pro Size Latest state-of-art model with superior prompt following
black-forest-labs/FLUX-1-schnell Size Fast generation in 1-4 steps
black-forest-labs/FLUX-1-dev Size Optimized for anatomical accuracy
black-forest-labs/FLUX-pro Size Flagship Flux model
black-forest-labs/FLUX.1-Kontext-dev Size Image editing and transformation model
black-forest-labs/FLUX.1-Kontext-pro Size Professional image editing and transformation
stabilityai/sd3.5-medium Aspect Ratio Balanced 2.5B parameter model
stabilityai/sdxl-turbo Aspect Ratio Optimized for fast generation

더 자세한 내용과 가격 정보는 DeepInfra text-to-image 모델 페이지를 참고하세요.

임베딩 모델 (Embedding Models)

.embeddingModel() 팩토리 메서드로 DeepInfra 임베딩 모델을 만들 수 있어요. AI SDK에서 임베딩 모델에 대해 더 알고 싶다면 embed()를 참고하세요.

import { deepInfra } from '@ai-sdk/deepinfra';
import { embed } from 'ai';

const { embedding } = await embed({
  model: deepInfra.embeddingModel('BAAI/bge-large-en-v1.5'),
  value: 'sunny day at the beach',
});

모델 기능 (Model Capabilities)

Model Dimensions Max Tokens
BAAI/bge-base-en-v1.5 768 512
BAAI/bge-large-en-v1.5 1024 512
BAAI/bge-m3 1024 8192
intfloat/e5-base-v2 768 512
intfloat/e5-large-v2 1024 512
intfloat/multilingual-e5-large 1024 512
sentence-transformers/all-MiniLM-L12-v2 384 256
sentence-transformers/all-MiniLM-L6-v2 384 256
sentence-transformers/all-mpnet-base-v2 768 384
sentence-transformers/clip-ViT-B-32 512 77
sentence-transformers/clip-ViT-B-32-multilingual-v1 512 77
sentence-transformers/multi-qa-mpnet-base-dot-v1 768 512
sentence-transformers/paraphrase-MiniLM-L6-v2 384 128
shibing624/text2vec-base-chinese 768 512
thenlper/gte-base 768 512
thenlper/gte-large 1024 512
사용 가능한 임베딩 모델의 전체 목록은 [DeepInfra 임베딩 페이지](https://deepinfra.com/models/embeddings)를 참고하세요.

더 알아보기 (Learn more)

전체 사이트맵