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
Google

참고: 도구 사용과 도구 스트리밍이 ❌로 표시되는 이유는 이 프로바이더가 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 키)

자세한 내용은 프로바이더 문서를 참고하세요.

더 알아보기 (Learn more)

전체 사이트맵