NVIDIA NIM Provider

NVIDIA NIM Provider

NVIDIA NIM은 파운데이션 모델 배포를 위한 최적화된 추론 마이크로서비스를 제공해요. AI SDK와 함께 사용할 수 있는 OpenAI 호환 API를 제공해요.

출처: 문서

본문

설정

NVIDIA NIM 프로바이더는 OpenAI API와 호환되므로 @ai-sdk/openai-compatible 모듈을 통해 사용할 수 있어요. 다음과 같이 설치할 수 있어요:

npm install @ai-sdk/openai-compatible

프로바이더 인스턴스

NVIDIA NIM을 사용하려면 @ai-sdk/openai-compatible의 createOpenAICompatible 함수로 커스텀 프로바이더 인스턴스를 만들 수 있어요:

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

const nim = createOpenAICompatible({
  name: 'nim',
  baseURL: 'https://integrate.api.nvidia.com/v1',
  headers: {
    Authorization: `Bearer ${process.env.NIM_API_KEY}`,
  },
});

NVIDIA Build에서 가입하면 API 키와 무료 크레딧을 얻을 수 있어요. 신규 사용자에게는 시작용 추론 크레딧 1,000개가 지급돼요.

언어 모델

프로바이더 인스턴스를 사용해 NIM 모델과 상호작용할 수 있어요. 예를 들어 강력한 오픈소스 언어 모델인 DeepSeek-R1을 사용하려면:

const model = nim.chatModel('deepseek-ai/deepseek-r1');

예시 - 텍스트 생성

generateText 함수로 NIM 언어 모델을 사용해 텍스트를 생성할 수 있어요:

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText } from 'ai';

const nim = createOpenAICompatible({
  name: 'nim',
  baseURL: 'https://integrate.api.nvidia.com/v1',
  headers: {
    Authorization: `Bearer ${process.env.NIM_API_KEY}`,
  },
});

const { text, usage, finishReason } = await generateText({
  model: nim.chatModel('deepseek-ai/deepseek-r1'),
  prompt: 'Tell me the history of the San Francisco Mission-style burrito.',
});

console.log(text);
console.log('Token usage:', usage);
console.log('Finish reason:', finishReason);

예시 - 텍스트 스트리밍

streamText 함수로 NIM 언어 모델의 텍스트 응답을 스트리밍할 수도 있어요:

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText } from 'ai';

const nim = createOpenAICompatible({
  name: 'nim',
  baseURL: 'https://integrate.api.nvidia.com/v1',
  headers: {
    Authorization: `Bearer ${process.env.NIM_API_KEY}`,
  },
});

const result = streamText({
  model: nim.chatModel('deepseek-ai/deepseek-r1'),
  prompt: 'Tell me the history of the Northern White Rhino.',
});

for await (const textPart of result.textStream) {
  process.stdout.write(textPart);
}

console.log();
console.log('Token usage:', await result.usage);
console.log('Finish reason:', await result.finishReason);

NIM 언어 모델은 Output로 구조화된 데이터 생성도 지원해요.

모델의 도구 호출 및 구조화된 출력 지원 여부는 모델마다 달라요. 예를 들어 meta/llama-3.3-70b-instruct 모델은 구조화된 출력 기능을 지원해요. 각 모델의 지원 기능은 NVIDIA Build에서 해당 모델 문서를 확인하세요.

더 알아보기 (Learn more)