Models.dev: AI 모델 사양, 가격 및 기능에 관한 오픈 소스 데이터베이스
요약
Models.dev는 AI 모델의 사양, 가격, 기능을 통합하여 제공하는 오픈 소스 데이터베이스입니다. API를 통해 AI SDK 식별자를 포함한 모델 정보를 조회할 수 있으며, 커뮤니티 기여를 통해 데이터를 최신 상태로 유지합니다.
핵심 포인트
- AI 모델의 사양, 가격, 기능에 대한 종합 데이터베이스 제공
- API를 통한 모델 데이터 및 제공자 로고 접근 가능
- AI SDK 식별자를 활용한 모델 조회 지원
- TOML 파일 기반의 오픈 소스 커뮤니티 기여 방식
Models.dev는 AI 모델의 사양 (specifications), 가격 (pricing) 및 기능 (capabilities)을 담은 종합적인 오픈 소스 (open-source) 데이터베이스입니다.
현재 사용 가능한 모든 AI 모델에 대한 정보를 담은 단일 데이터베이스는 존재하지 않습니다. 우리는 이 문제를 해결하기 위해 커뮤니티 기여 프로젝트로서 Models.dev를 시작했습니다. 또한 우리는 이를 opencode 내부에서도 사용하고 있습니다.
API
API를 통해 이 데이터에 접근할 수 있습니다.
curl https://models.dev/api.json
Model ID 필드를 사용하여 모든 모델을 조회할 수 있습니다. 이는 AI SDK에서 사용되는 식별자입니다.
Logos
제공자 (Provider) 로고는 SVG 파일로 제공됩니다:
curl https://models.dev/logos/{provider}.svg
{provider}를 Provider ID (예: anthropic, openai, google)로 교체하세요. 만약 특정 제공자의 로고가 없는 경우, 대신 기본 로고가 제공됩니다.
Contributing
데이터는 제공자 및 모델별로 정리되어 리포지토리 (repo) 내에 TOML 파일로 저장됩니다. 로고는 SVG로 저장됩니다. 이는 이 페이지를 생성하고 API를 구동하는 데 사용됩니다.
데이터를 최신 상태로 유지하기 위해 여러분의 도움이 필요합니다.
Adding a New Model
새로운 모델을 추가하려면, 먼저 providers/ 디렉토리에 해당 제공자가 이미 존재하는지 확인하십시오. 존재하지 않는다면 다음 단계를 따르세요:
1. Create a Provider
제공자가 providers/에 아직 없다면:
-
providers/내에 제공자의 ID를 가진 새 폴더를 생성합니다. 예:providers/newprovider/. -
제공자 상세 정보가 담긴
provider.toml을 추가합니다:name = "Provider Name" npm = "@ai-sdk/provider" # AI SDK 패키지 이름 env = ["PROVIDER_API_KEY"] # 인증에 사용되는 환경 변수 (Environment Variable) 키
...
제공업체(Provider)가 npm 패키지를 게시하지는 않지만 OpenAI 호환 엔드포인트(OpenAI-compatible endpoint)를 노출하는 경우, npm 필드를 그에 맞게 설정하고 기본 URL(Base URL)을 포함하세요:
```toml
npm = "@ai-sdk/openai-compatible" # OpenAI 호환 SDK 사용
api = "https://api.example.com/v1" # openai-compatible 사용 시 필수
2. 로고 추가 (선택 사항)
제공업체의 로고를 추가하려면:
- 제공업체의 디렉토리에
logo.svg파일을 추가합니다 (예:providers/newprovider/logo.svg). - 고정된 크기나 색상이 없는 SVG 형식을 사용하세요. 채우기(Fill) 및 선(Stroke)에는
currentColor를 사용합니다.
SVG 구조 예시:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<!-- 여기에 로고 경로(paths) 삽입 -->
</svg>
3. 모델 정의 추가
제공업체의 models/ 디렉토리에 파일명이 모델 ID인 새로운 TOML 파일을 생성합니다.
모델 ID에 /가 포함되어 있다면 하위 폴더를 사용하세요. 예를 들어, 모델 ID가 openai/gpt-5인 경우, openai/ 폴더를 생성하고 그 안에 gpt-5.toml이라는 이름의 파일을 배치합니다.
name = "모델 표시 이름"
attachment = true # 또는 false - 파일 첨부 지원 여부
reasoning = false # 또는 true - 추론(Reasoning) / 사고 사슬(Chain-of-thought) 지원 여부
...
3a. extends를 사용하여 기존 모델 재사용하기
다른 제공업체의 모델을 미러링(Mirroring)하는 래퍼 제공업체(Wrapper providers)의 경우, 전체 파일을 복제하는 대신 표준(Canonical) 모델 정의를 재사용하는 것을 권장합니다.
extends는 퍼스트 파티(First-party)가 아닌 래퍼 및 미러용으로만 사용하세요. 모델 제품군(Model family)의 표준 소스 역할을 하는 실제 랩(Lab) 제공업체 디렉토리 내부에서는 사용하지 마세요. 예: providers/anthropic/, providers/openai/, providers/google/, providers/xai/, providers/minimax/, 또는 providers/moonshot/.
[extends]
from = "anthropic/claude-opus-4-6"
omit = ["experimental.modes.fast"]
...
규칙:
from은<provider>/<model-id>형식을 사용하는 다른 모델을 가리켜야 합니다.omit은 선택 사항이며, 상속된 모델과 로컬 재정의(overrides)가 병합된 후 해당 필드들을 제거합니다.- 모든 최상위 모델 필드(top-level model field)를 로컬에서 재정의할 수 있습니다.
[cost],[limit], 또는[modalities]와 같은 중첩된 테이블(nested table)을 재정의하는 경우, 해당 테이블에 필요한 전체 값을 포함해야 합니다.id는 여전히 파일 이름에서 가져오므로, TOML에 직접 추가하지 마세요.
래퍼 모델(wrapper model)이 소스 모델과 실질적으로 동일하며, 오직 소수의 재정의된 필드나 생략된 필드만 차이가 나는 경우에는 extends를 사용하세요.
4. Pull Request 제출하기
- 이 저장소(repo)를 포크(Fork)합니다.
- 변경 사항이 담긴 새로운 브랜치를 생성합니다.
- 제공자(provider) 및/또는 모델 파일을 추가합니다.
- 명확한 설명과 함께 PR(Pull Request)을 오픈합니다.
검증 (Validation)
제출된 내용이 다음 사항을 충족하는지 확인하기 위해 우리의 스키마(schema)를 기준으로 자동 검증하는 GitHub Action이 작동합니다:
- 모든 필수 필드가 존재하는지
- 데이터 타입(Data types)이 올바른지
- 값이 허용 가능한 범위 내에 있는지
- TOML 문법이 유효한지
기존의 래퍼 모델을 extends 방식으로 변환할 때는, 변경 전후의 생성된 출력물을 비교하세요:
bun run compare:migrations
이 명령은 변경된 각 모델 TOML에 대한 차이점(diff)을 출력하므로, 생성된 JSON이 의도한 부분에서만 변경되었는지 확인할 수 있습니다.
스키마 참조 (Schema Reference)
모델은 packages/core/src/schema.ts에 정의된 다음 스키마를 준수해야 합니다.
제공자 스키마 (Provider Schema):
name: String - 제공자의 표시 이름npm: String - AI SDK 패키지 이름env: String[] - 인증에 사용되는 환경 변수(Environment variable) 키doc: String - 제공자의 문서 링크api(선택 사항): String - OpenAI 호환 API 엔드포인트. npm 패키지로@ai-sdk/openai-compatible을 사용하는 경우에만 필수입니다.
모델 스키마 (Model Schema):
-
name: String — 모델의 표시 이름 (Display name) -
attachment: Boolean — 파일 첨부 지원 여부 -
reasoning: Boolean — 추론 (Reasoning) / 사고 사슬 (Chain-of-thought) 지원 여부 -
tool_call: Boolean — 도구 호출 (Tool calling) 지원 여부 -
structured_output(optional): Boolean — 구조화된 출력 (Structured output) 기능 지원 여부 -
temperature(optional): Boolean — 온도 (Temperature) 조절 지원 여부 -
knowledge(optional): String —YYYY-MM또는YYYY-MM-DD형식의 지식 컷오프 (Knowledge-cutoff) 날짜 -
release_date: String —YYYY-MM또는YYYY-MM-DD형식의 최초 공개 출시일 -
last_updated: String —YYYY-MM또는YYYY-MM-DD형식의 가장 최근 업데이트 날짜 -
open_weights: Boolean — 모델의 학습된 가중치 (Weights)가 공개적으로 사용 가능한지 여부 -
interleaved(optional): Boolean 또는 Object — 인터리브 추론 (Interleaved reasoning) 지원 여부. 일반적인 지원의 경우true를 사용하거나, 형식을 지정하기 위해field를 포함한 객체를 사용함 -
interleaved.field: String — 인터리브 필드 (Interleaved field)의 이름 ("reasoning_content"또는"reasoning_details") -
cost.input: Number — 백만 입력 토큰당 비용 (USD) -
cost.output: Number — 백만 출력 토큰당 비용 (USD) -
cost.reasoning(optional): Number — 백만 추론 (Reasoning) 토큰당 비용 (USD) -
cost.cache_read(optional): Number — 백만 캐시 읽기 (Cached read) 토큰당 비용 (USD) -
cost.cache_write(optional): Number — 백만 캐시 쓰기 (Cached write) 토큰당 비용 (USD) -
cost.input_audio(optional): Number — 별도로 청구되는 경우, 백만 오디오 입력 토큰당 비용 (USD) -
cost.output_audio(optional): Number — 별도로 청구되는 경우, 백만 오디오 출력 토큰당 비용 (USD) -
limit.context: Number — 최대 컨텍스트 창 (Context window) (토큰) -
limit.input: Number — 최대 입력 토큰 -
limit.output: Number — 최대 출력 토큰 -
modalities.input: 문자열 배열 (Array of strings) — 지원되는 입력 모달리티 (예: ["text", "image", "audio", "video", "pdf"]) -
modalities.output: 문자열 배열 (Array of strings) — 지원되는 출력 모달리티 (예: ["text"]) -
status(optional): String — 지원되는 상태: -
alpha- 모델이 알파 테스트 (alpha testing) 중임을 나타냄beta- 모델이 베타 테스트 (beta testing) 중임을 나타냄deprecated- 모델이 더 이상 제공업체의 공개 API (public API)를 통해 서비스되지 않음을 나타냄
Examples (예시)
참고를 위해 providers/ 디렉토리에 있는 기존 제공업체들을 확인하세요:
providers/anthropic/- Anthropic Claude 모델providers/openai/- OpenAI GPT 모델providers/google/- Google Gemini 모델
Working on frontend (프론트엔드 작업)
Bun이 설치되어 있는지 확인하세요.
$ bun install
$ cd packages/web
$ bun run dev
그러면 http://localhost:3000 에서 프론트엔드가 열립니다.
Manual testing with opencode (opencode를 이용한 수동 테스트)
다음 과정을 통해 opencode로 제공업체 변경 사항을 수동으로 확인할 수 있습니다:
$ bun install
$ cd packages/web
$ bun run build
...
Questions? (질문이 있으신가요?)
도움이 필요하거나 기여 (contributing)에 관한 질문이 있다면 이슈 (issue)를 생성해 주세요.
Models.dev는 SST의 유지 관리자들에 의해 만들어졌습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기