Heroku Provider
Heroku Provider
Heroku는 애플리케이션을 배포하고 실행할 수 있는 클라우드 플랫폼이에요. OpenAI API 호환 AI 모델도 배포할 수 있어서, 그 모델을 AI SDK와 함께 사용할 수 있어요.
출처: 문서
본문
설정
Heroku 프로바이더는 OpenAI API와 호환되므로 @ai-sdk/openai-compatible 모듈을 통해 사용할 수 있어요. 다음과 같이 설치할 수 있어요:
npm install @ai-sdk/openai-compatible
Heroku 설정
- Heroku에서 테스트 앱을 만들어요:
heroku create
- claude-3-5-haiku를 사용해 추론 설정을 해요:
heroku ai:models:create -a $APP_NAME claude-3-5-haiku
- 변수를 내보내요:
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)
- 출처 문서: Heroku Provider
- 커스텀 프로바이더 작성