Heroku Provider

Heroku Provider

Heroku는 애플리케이션을 배포하고 실행할 수 있는 클라우드 플랫폼이에요. OpenAI API 호환 AI 모델도 배포할 수 있어서, 그 모델을 AI SDK와 함께 사용할 수 있어요.

출처: 문서

본문

설정

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

npm install @ai-sdk/openai-compatible

Heroku 설정

  1. Heroku에서 테스트 앱을 만들어요:
heroku create
  1. claude-3-5-haiku를 사용해 추론 설정을 해요:
heroku ai:models:create -a $APP_NAME claude-3-5-haiku
  1. 변수를 내보내요:
export INFERENCE_KEY=$(heroku config:get INFERENCE_KEY -a $APP_NAME)
export INFERENCE_MODEL_ID=$(heroku config:get INFERENCE_MODEL_ID -a $APP_NAME)
export INFERENCE_URL=$(heroku config:get INFERENCE_URL -a $APP_NAME)

프로바이더 인스턴스

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

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

const heroku = createOpenAICompatible({
  name: 'heroku',
  baseURL: process.env.INFERENCE_URL + '/v1',
  apiKey: process.env.INFERENCE_KEY,
});

INFERENCE_KEY, INFERENCE_MODEL_ID, INFERENCE_URL이 환경 변수에 설정되어 있는지 확인하세요.

언어 모델

프로바이더 인스턴스를 사용해 Heroku 모델을 만들 수 있어요. 첫 번째 인자는 서빙되는 모델 이름이에요 (예: claude-3-5-haiku).

const model = heroku('claude-3-5-haiku');

예시

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

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

const heroku = createOpenAICompatible({
  name: 'heroku',
  baseURL: process.env.INFERENCE_URL + '/v1',
  apiKey: process.env.INFERENCE_KEY,
});

const { text } = await generateText({
  model: heroku('claude-3-5-haiku'),
  prompt: 'Tell me about yourself in one sentence',
});

console.log(text);

Heroku 언어 모델은 streamText 함수로 텍스트를 스트리밍 방식으로 생성할 수도 있어요:

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

const heroku = createOpenAICompatible({
  name: 'heroku',
  baseURL: process.env.INFERENCE_URL + '/v1',
  apiKey: process.env.INFERENCE_KEY,
});

const result = streamText({
  model: heroku('claude-3-5-haiku'),
  prompt: 'Tell me about yourself in one sentence',
});

for await (const message of result.textStream) {
  console.log(message);
}

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

더 알아보기 (Learn more)