도구

OpenCode

LMU AI API를 OpenCode에서 OpenAI / Anthropic 호환 백엔드로 구성하여 Claude, Codex, GLM 및 기타 모델을 사용하세요.

공식 문서를 따라 OpenCode를 설치하기만 하면 됩니다 — 웹사이트에 상세한 튜토리얼이 있습니다:


모델 구성

설치 후 설정 파일 ~/.config/opencode/opencode.json을 편집하세요. OpenCode는 업스트림 서비스에 연결하기 위한 두 가지 프로토콜을 지원합니다 — 제공업체에 맞는 것을 선택하기만 하면 됩니다.

프로토콜 선택

프로토콜npmbaseURL 형식사용 시점
OpenAI 프로토콜@ai-sdk/openai/v1로 끝남, 예: https://xxx.com/v1GPT, Codex 및 대부분의 OpenAI 호환 서비스
Anthropic 프로토콜@ai-sdk/anthropic마찬가지로 /v1로 끝남, 예: https://xxx.com/v1Claude의 네이티브 프로토콜, 그리고 Anthropic 프로토콜을 선언하는 중국 모델(GLM 등)

흔한 baseURL 함정

OpenAI와 Anthropic 프로토콜 모두에서 baseURL반드시 /v1 레벨까지 내려가야 합니다. SDK는 그 뒤에 특정 엔드포인트(예: /chat/completions 또는 /messages)만 덧붙이므로, /v1을 생략하면 요청이 조용히 삭제됩니다 — 모델이 오류를 반환하지 않고 빈 내용으로 응답합니다.

예시 1 — OpenAI 프로토콜

동작하는 최소 설정(하나의 제공업체 아래에 여러 모델을 구성할 수 있습니다):

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "openai": {
      "options": {
        "baseURL": "https://api.lmuai.com/v1"
      },
      "models": {
        "gpt-5.5": { "name": "GPT-5.5" },
        "gpt-5.4": { "name": "GPT-5.4" }
      }
    }
  }
}

왜 provider id로 `openai`를 사용하나요?

OpenCode는 openai내장 provider id로 인식하므로, @ai-sdk/openai를 자동으로 로드하고 /v1/responses 엔드포인트를 사용합니다(추론 모델을 완전히 지원). 따라서 OpenAI 프로토콜 서비스에 연결할 때는 provider id를 openai로 지정하고 baseURL을 자체 게이트웨이로 가리키기만 하면 됩니다 — npm 필드를 직접 작성할 필요가 없습니다.

모델의 기능 선언(컨텍스트 길이, reasoning-effort 변형 등)을 다듬어야 한다면, 해당 모델 항목에 필드를 추가하기만 하면 됩니다:

"gpt-5.5": {
  "name": "GPT-5.5",
  "limit": { "context": 1050000, "output": 128000 },
  "options": { "store": false },
  "variants": { "low": {}, "medium": {}, "high": {}, "xhigh": {} }
}

여기서 variants는 전환 가능한 reasoning-effort 레벨을 정의합니다. OpenCode에서 런타임 중에 Ctrl + T를 눌러 전환하세요.

예시 2 — Anthropic 프로토콜(중국 모델에서 흔함)

일부 중국 모델(GLM 등)은 국내 벤더가 제공하지만 API에서 Anthropic 프로토콜을 따르므로 @ai-sdk/anthropic가 필요합니다:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "lmuai": {
      "npm": "@ai-sdk/anthropic",
      "name": "lmuai",
      "options": {
        "baseURL": "https://api.lmuai.com/v1"
      },
      "models": {
        "glm-5.1": {
          "name": "GLM-5.1"
        }
      }
    }
  }
}

어떤 프로토콜인지 어떻게 구분하나요?

제공업체 문서의 요청 예시를 확인하세요:

  • 엔드포인트가 /v1/chat/completions → OpenAI 프로토콜
  • 엔드포인트가 /v1/messages이고 anthropic-version 요청 헤더가 있음 → Anthropic 프로토콜

예시 3 — Claude 네이티브 모델

네이티브 Claude 모델(예: claude-sonnet-4-6)에 연결하려면 provider id로 내장 anthropic을 사용해야 합니다 — 사용자 지정 이름은 사용할 수 없습니다:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "anthropic": {
      "npm": "@ai-sdk/anthropic",
      "options": {
        "baseURL": "https://api.lmuai.com/v1"
      }
    }
  }
}

검증:

opencode run --model anthropic/claude-sonnet-4-6 "Hello"

왜 Claude 모델은 사용자 지정 provider id를 사용할 수 없나요?

openai와 마찬가지로 anthropic은 OpenCode의 내장 provider id이며, OpenCode는 그 아래에 전체 Claude 모델 라인업(claude-sonnet-4-6 등)의 내장 정의를 제공합니다.

그래서 opencode run --model anthropic/claude-sonnet-4-6 "Hello"가 동작합니다. 하지만 provider id를 사용자 지정 이름(예: lmuai/claude-sonnet-4-6)으로 바꾸면 OpenCode가 모델 정의를 찾을 수 없어 테스트가 실패합니다.

요컨대: 네이티브 Claude 모델에는 anthropic을 사용하고, GLM 같은 사용자 지정 모델에만 사용자 지정 provider id(예: lmuai)를 사용하세요.

여러 프로토콜과 여러 제공업체를 한 번에 사용해야 한다면, 모두 provider 아래에 넣기만 하면 됩니다 — 서로 간섭하지 않습니다. 예를 들어 LMU AI는 GPT 시리즈(openai), Claude 시리즈(anthropic), GLM 시리즈(lmuai, Anthropic 프로토콜)를 동시에 제공하며, 세 제공업체 모두 하나의 게이트웨이를 공유할 수 있습니다.


키 구성

방법 1 — 명령줄(권장)

# Log in or update the key for a provider
opencode auth login

# List all configured providers and their key status
opencode auth list

# Remove the key for a specific provider
opencode auth logout <provider-name>

방법 2 — 설정 파일 수동 편집

~/.local/share/opencode/auth.json에 해당 제공업체의 API 키를 추가하세요:

{
  "provider-name": {
    "type": "api",
    "key": "your-api-key"
  }
}

참고

auth.json의 제공업체 이름은 opencode.json의 제공업체 이름과 정확히 일치해야 합니다.

opencode.jsonoptions 블록에 apiKey를 넣지 마세요 — OpenCode는 거기에서 키를 읽지 않습니다. 반드시 auth.json 또는 opencode auth login을 통해야 합니다.


설정 검증

구성이 완료되면 명령 하나로 빠르게 검증하세요:

opencode run --model provider-name/model-name "Hello"

예를 들어 opencode run --model lmuai/glm-5.1 "Hello". 정상 응답이 오면 설정이 동작하는 것입니다.

출력이 전혀 없다면(오류도 응답도 없음), 대개 다음 두 가지 문제 중 하나입니다:

  1. baseURL에 /v1이 누락됨 — 위 "프로토콜 선택" 섹션의 팁을 참고하세요.
  2. auth.json에 키가 구성되지 않음opencode auth list에 해당 제공업체가 표시되는지 확인하세요.

더 많은 디버깅 정보를 얻으려면 --print-logs --log-level INFO를 추가하세요.


OpenCode에서 Ctrl + T를 눌러 reasoning-effort 레벨(변형) 간을 전환하세요.

마지막 업데이트:

이 페이지의 목차