Ollama 프로바이더
Ollama 프로바이더
AI SDK는 두 개의 커뮤니티 프로바이더를 통해 Ollama를 지원해요:
- nordwestt/ollama-ai-provider-v2 - 직접 HTTP API 통합
- ai-sdk-ollama - 공식 Ollama JavaScript 클라이언트 기반
둘 다 서로 다른 접근 방식과 기능 세트로 AI SDK에 언어 모델 지원을 제공해요.
출처: 문서
본문
프로바이더 선택하기 (Choosing Your Provider)
AI SDK 생태계에는 여러 Ollama 프로바이더가 있으며, 각각 다른 사용 사례에 최적화되어 있어요:
단순 텍스트 생성을 위한 선택 (For Simple Text Generation)
nordwestt/ollama-ai-provider-v2 은 직접 HTTP API 호출로 Ollama 모델에 간편하게 접근해, 기본 텍스트 생성과 빠른 시작에 이상적이에요.
고급 기능과 도구 안정성을 위한 선택 (For Advanced Features & Tool Reliability)
다음이 필요할 때는 ai-sdk-ollama by jagreehal을 권장해요:
- 신뢰할 수 있는 도구 호출 — 완전한 응답 보장 (흔한 빈 응답 문제 해결)
- 웹 검색 기능 — 최신 정보를 위한 Ollama의 새 웹 검색 API 사용
- 크로스 환경 지원 — Node.js와 브라우저 자동 감지
- 고급 Ollama 기능 —
mirostat,repeat_penalty,num_ctx같은 세밀한 제어 - 향상된 안정성 — 공식 클라이언트를 통한 내장 오류 처리와 재시도
주요 기술적 장점:
- 공식
OllamaJavaScript 클라이언트 라이브러리 기반 - CommonJS와 ESM 모듈 형식 모두 지원
- 타입 안전한 Ollama 특화 옵션을 갖춘 완전한 TypeScript 지원
두 프로바이더 모두 AI SDK 스펙을 구현하고 훌륭한 TypeScript 지원을 제공해요. 프로젝트의 복잡성과 기능 요구 사항에 따라 선택하세요.
설정 (Setup)
선호하는 Ollama 프로바이더를 선택해 설치하세요:
ollama-ai-provider-v2
ai-sdk-ollama
프로바이더 인스턴스 (Provider Instance)
ollama-ai-provider-v2에서 기본 프로바이더 인스턴스 ollama을 임포트할 수 있어요:
import { ollama } from 'ollama-ai-provider-v2';
커스터마이즈가 필요하면 ollama-ai-provider-v2에서 createOllama를 임포트해 나만의 설정으로 프로바이더 인스턴스를 만들 수 있어요:
import { createOllama } from 'ollama-ai-provider-v2';
const ollama = createOllama({
// 선택적 설정, 예:
baseURL: 'https://api.ollama.com',
});
다음의 선택적 설정으로 Ollama 프로바이더 인스턴스를 커스터마이즈할 수 있어요:
-
baseURL string
프록시 서버를 사용하는 경우처럼 API 호출에 다른 URL 프리픽스를 사용할 수 있어요. 기본 프리픽스는
http://localhost:11434/api예요. -
headers Record<string,string>
요청에 포함할 커스텀 헤더예요.
언어 모델 (Language Models)
프로바이더 인스턴스를 사용해 Ollama 채팅 완성 API를 호출하는 모델을 만들 수 있어요. 첫 번째 인자는 모델 ID이며, 예를 들어 phi3처럼 사용해요. 일부 모델은 멀티모달 기능을 갖고 있어요.
const model = ollama('phi3');
Ollama 라이브러리 홈페이지에서 더 많은 모델을 찾을 수 있어요.
모델 기능 (Model Capabilities)
이 프로바이더는 qwen3 같은 하이브리드 추론 모델을 사용할 수 있어, 메시지 사이에서 추론을 켜고 끌 수 있어요.
import { ollama } from 'ollama-ai-provider-v2';
import { generateText } from 'ai';
const { text } = await generateText({
model: ollama('qwen3:4b'),
providerOptions: { ollama: { think: true } },
prompt:
'Write a vegetarian lasagna recipe for 4 people, but really think about it',
});
임베딩 모델 (Embedding Models)
.embeddingModel() 팩토리 메서드로 Ollama 임베딩 API를 호출하는 모델을 만들 수 있어요.
const model = ollama.embeddingModel('nomic-embed-text');
const { embeddings } = await embedMany({
model: model,
values: ['sunny day at the beach', 'rainy afternoon in the city'],
});
console.log(
`cosine similarity: ${cosineSimilarity(embeddings[0], embeddings[1])}`,
);