LM Studio Provider
LM Studio Provider
LM Studio는 로컬 모델을 실행하기 위한 사용자 인터페이스에요.
OpenAI 호환 API 서버를 포함하고 있어서 AI SDK와 함께 사용할 수 있어요. LM Studio UI의 Local Server 탭에서 로컬 서버를 시작할 수 있어요 ("Start Server" 버튼).
출처: 문서
본문
설정
LM Studio 프로바이더는 OpenAI API와 호환되므로 @ai-sdk/openai-compatible 모듈을 통해 사용할 수 있어요. 다음과 같이 설치할 수 있어요:
npm install @ai-sdk/openai-compatible
프로바이더 인스턴스
LM Studio를 사용하려면 @ai-sdk/openai-compatible의 createOpenAICompatible 함수로 커스텀 프로바이더 인스턴스를 만들 수 있어요:
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
const lmstudio = createOpenAICompatible({
name: 'lmstudio',
baseURL: 'http://localhost:1234/v1',
});
LM Studio는 기본적으로 포트
1234를 사용하지만, 앱의 Local Server 탭에서 변경할 수 있어요.
언어 모델
LM Studio에서 프로바이더 인스턴스를 사용해 로컬 LLM과 상호작용할 수 있어요. 첫 번째 인자는 모델 id에요 (예: llama-3.2-1b).
const model = lmstudio('llama-3.2-1b');
모델을 사용하려면 먼저 다운로드해야 해요.
예시
generateText 함수로 LM Studio 언어 모델을 사용해 텍스트를 생성할 수 있어요:
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText } from 'ai';
const lmstudio = createOpenAICompatible({
name: 'lmstudio',
baseURL: 'https://localhost:1234/v1',
});
const { text } = await generateText({
model: lmstudio('llama-3.2-1b'),
prompt: 'Write a vegetarian lasagna recipe for 4 people.',
maxRetries: 1, // 서버가 실행 중이 아니면 즉시 오류
});
LM Studio 언어 모델은 streamText와도 함께 사용할 수 있어요.
임베딩 모델
.embeddingModel() 팩토리 메서드를 사용해 LM Studio 임베딩 API를 호출하는 모델을 만들 수 있어요.
const model = lmstudio.embeddingModel('text-embedding-nomic-embed-text-v1.5');
예시 - 단일 값 임베딩
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { embed } from 'ai';
const lmstudio = createOpenAICompatible({
name: 'lmstudio',
baseURL: 'https://localhost:1234/v1',
});
// 'embedding'은 단일 임베딩 객체(number[])에요
const { embedding } = await embed({
model: lmstudio.embeddingModel('text-embedding-nomic-embed-text-v1.5'),
value: 'sunny day at the beach',
});
예시 - 여러 값 임베딩
데이터를 로드할 때, 예를 들어 검색 증강 생성(RAG)용 데이터 스토어를 준비할 때 여러 값을 한 번에 임베딩하는 것(배치 임베딩)이 유용할 때가 많아요.
AI SDK는 이를 위한 embedMany 함수를 제공해요. embed와 비슷하게 임베딩 모델과 함께 사용할 수 있어요, 예: lmstudio.embeddingModel('text-embedding-nomic-embed-text-v1.5') 또는 lmstudio.embeddingModel('text-embedding-bge-small-en-v1.5').
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { embedMany } from 'ai';
const lmstudio = createOpenAICompatible({
name: 'lmstudio',
baseURL: 'https://localhost:1234/v1',
});
// 'embeddings'은 임베딩 객체 배열(number[][])이에요.
// 입력 값과 동일한 순서로 정렬돼 있어요.
const { embeddings } = await embedMany({
model: lmstudio.embeddingModel('text-embedding-nomic-embed-text-v1.5'),
values: [
'sunny day at the beach',
'rainy afternoon in the city',
'snowy night in the mountains',
],
});
더 알아보기 (Learn more)
- 출처 문서: LM Studio Provider
- 커스텀 프로바이더 작성