OpenCode 프로바이더
OpenCode 프로바이더
ai-sdk-provider-opencode-sdk 커뮤니티 프로바이더를 사용하면 OpenCode SDK를 통해 여러 AI 제공업체(Anthropic, OpenAI, Google)를 사용할 수 있어요. OpenCode는 다양한 AI 모델에 통합 인터페이스를 제공하는 터미널 기반 AI 코딩 어시스턴트예요.
출처: 문서
본문
버전 호환성 (Version Compatibility)
| 프로바이더 버전 | AI SDK 버전 | NPM 태그 | 상태 |
|---|---|---|---|
| 1.x | v6 | latest |
안정 (Stable) |
| 0.x | v5 | ai-sdk-v5 |
유지보수 (Maintenance) |
# AI SDK v6 (기본값)
npm install ai-sdk-provider-opencode-sdk ai
# AI SDK v5
npm install ai-sdk-provider-opencode-sdk@ai-sdk-v5 ai@^5.0.0
설정 (Setup)
프로바이더 인스턴스 (Provider Instance)
ai-sdk-provider-opencode-sdk에서 기본 프로바이더 인스턴스 opencode를 임포트할 수 있어요:
import { opencode } from 'ai-sdk-provider-opencode-sdk';
커스터마이즈가 필요하면 createOpencode를 임포트해 나만의 설정으로 프로바이더 인스턴스를 만들 수 있어요:
import { createOpencode } from 'ai-sdk-provider-opencode-sdk';
const opencode = createOpencode({
autoStartServer: true,
serverTimeout: 10000,
defaultSettings: {
agent: 'build',
},
});
프로바이더 설정:
- hostname string - 서버 호스트명 (기본값:
127.0.0.1). - port number - 서버 포트 (기본값:
4096). - autoStartServer boolean - OpenCode 서버 자동 시작 (기본값:
true). - serverTimeout number - 서버 시작 타임아웃(밀리초) (기본값:
10000). - defaultSettings object - 모든 모델 호출에 적용되는 기본 설정.
언어 모델 (Language Models)
모델은 providerID/modelID 형식으로 지정해요:
const model = opencode('anthropic/claude-sonnet-4-5-20250929');
모델 단축어 (OpencodeModels로 내보내짐):
import { OpencodeModels } from 'ai-sdk-provider-opencode-sdk';
// Anthropic Claude
opencode(OpencodeModels['claude-opus-4-5']); // anthropic/claude-opus-4-5-20251101
opencode(OpencodeModels['claude-sonnet-4-5']); // anthropic/claude-sonnet-4-5-20250929
opencode(OpencodeModels['claude-haiku-4-5']); // anthropic/claude-haiku-4-5-20251001
// OpenAI GPT
opencode(OpencodeModels['gpt-4o']); // openai/gpt-4o
opencode(OpencodeModels['gpt-4o-mini']); // openai/gpt-4o-mini
// Google Gemini
opencode(OpencodeModels['gemini-3.1-pro-preview']); // google/gemini-3.1-pro-preview
opencode(OpencodeModels['gemini-2.5-pro']); // google/gemini-2.5-pro
opencode(OpencodeModels['gemini-2.5-flash']); // google/gemini-2.5-flash
opencode(OpencodeModels['gemini-2.0-flash']); // google/gemini-2.0-flash
전체 모델 식별자를 사용할 수도 있어요:
opencode('openai/gpt-5.1-codex');
opencode('openai/gpt-5.1-codex-max');
opencode('google/gemini-3.1-pro-preview');
예시 (Example)
import { opencode } from 'ai-sdk-provider-opencode-sdk';
import { generateText } from 'ai';
const { text } = await generateText({
model: opencode('anthropic/claude-sonnet-4-5-20250929'),
prompt: 'Write a vegetarian lasagna recipe for 4 people.',
});
모델 설정 (Model Settings)
const model = opencode('anthropic/claude-opus-4-5-20251101', {
agent: 'build', // 'build' | 'plan' | 'general' | 'explore'
sessionTitle: 'My Task',
systemPrompt: 'You are a helpful assistant.',
});
모델 기능 (Model Capabilities)
| 제공업체 | 이미지 입력 | 객체 생성 | 도구 사용 | 도구 스트리밍 |
|---|---|---|---|---|
| Anthropic | ||||
| OpenAI | ||||
참고: 도구 사용과 도구 스트리밍이 ❌로 표시되는 이유는 이 프로바이더가 AI SDK 커스텀 도구(
generateText/streamText에 전달하는 Zod 스키마)를 지원하지 않기 때문이에요. 커스텀 도구 정의는 명시적으로 무시돼요. OpenCode는 도구를 서버 측에서 실행하며, 이는 스트리밍 이벤트로 관찰할 수 있어요. 이미지 입력은 data URL과 base64만 지원해요. 객체 생성은 프롬프트 기반 JSON 모드를 사용해요.
서버 관리 (Server Management)
OpenCode는 관리형 서버로 실행돼요. 작업이 끝나면 프로바이더를 dispose하세요:
import { opencode } from 'ai-sdk-provider-opencode-sdk';
// 작업 완료 후
await opencode.dispose();
// 클라이언트 매니저에 직접 접근해야 한다면:
// await opencode.getClientManager().dispose();
클라이언트 매니저는 프로세스 종료(SIGINT, SIGTERM) 시 자동으로 정리돼요.
요구 사항 (Requirements)
- Node.js 22 이상
- OpenCode CLI 설치 (
npm install -g opencode) - OpenCode에 설정된 프로바이더 자격 증명 (Anthropic, OpenAI 또는 Google API 키)
자세한 내용은 프로바이더 문서를 참고하세요.