Models.dev: AI 모델 사양·가격·기능을 담은 오픈소스 데이터베이스
출처: Hacker News
Models.dev 은 AI 모델 사양, 가격 및 기능을 포괄적으로 정리한 오픈소스 데이터베이스입니다.
사용 가능한 모든 AI 모델에 대한 정보를 한 곳에 모은 데이터베이스는 없습니다. 우리는 이를 해결하기 위해 커뮤니티가 기여하는 프로젝트로 Models.dev 를 시작했습니다. 또한 이를 내부적으로 opencode 에서도 사용하고 있습니다.
API
API 를 통해 이 데이터를 조회할 수 있습니다.
curl https://models.dev/api.json
Model ID 필드를 사용해 원하는 모델을 조회하세요. 이 ID 는 AI SDK 에서 사용하는 식별자와 동일합니다.
로고
제공자 로고는 SVG 파일 형태로 제공됩니다.
curl https://models.dev/logos/{provider}.svg
{provider} 를 Provider ID 로 교체하세요 (예: anthropic, openai, google). 해당 제공자의 로고가 없을 경우 기본 로고가 반환됩니다.
기여
데이터는 레포지토리 안에 TOML 파일로 저장되며, 제공자와 모델별로 정리됩니다. 로고는 SVG 파일로 보관됩니다. 이 파일들을 기반으로 페이지가 생성되고 API 가 동작합니다.
데이터를 최신 상태로 유지하려면 여러분의 도움이 필요합니다.
새 모델 추가
새 모델을 추가하려면 먼저 providers/ 디렉터리에 해당 제공자가 이미 존재하는지 확인합니다. 없을 경우 다음 절차를 따르세요.
1. 제공자 생성
제공자가 providers/ 에 아직 없으면:
- 제공자 ID 로 된 새 폴더를
providers/안에 만들고, 예를 들어providers/newprovider/와 같이 이름을 지정합니다. provider.toml파일을 추가하고 다음과 같이 제공자 정보를 입력합니다.
name = "Provider Name"
npm = "@ai-sdk/provider" # AI SDK 패키지 이름
env = ["PROVIDER_API_KEY"] # 인증에 사용되는 환경 변수 키
doc = "https://example.com/docs/models" # 제공자 문서 링크
제공자가 npm 패키지를 배포하지 않고 OpenAI 호환 엔드포인트만 제공한다면, npm 필드를 해당 패키지로 지정하고 기본 URL을 포함합니다.
npm = "@ai-sdk/openai-compatible" # OpenAI 호환 SDK 사용
api = "https://api.example.com/v1" # openai-compatible 사용 시 필수
2. 로고 추가 (선택 사항)
제공자 로고를 추가하려면:
logo.svg파일을 제공자 디렉터리에 넣습니다 (예:providers/newprovider/logo.svg).- 고정된 크기나 색상이 없는 SVG 형식을 사용하고, 채우기/스트로크에는
currentColor를 활용합니다.
예시 SVG 구조:
<!-- SVG 내용 예시 -->
3. 모델 정의 추가
제공자 폴더 안의 models/ 디렉터리에 모델 ID 를 파일명으로 하는 새로운 TOML 파일을 만듭니다.
모델 ID 에 / 가 포함된 경우 하위 폴더를 사용합니다. 예를 들어 모델 ID 가 openai/gpt-5 라면 openai/ 폴더를 만들고 그 안에 gpt-5.toml 파일을 두세요.
name = "Model Display Name"
attachment = true # 또는 false - 파일 첨부 지원 여부
reasoning = false # 또는 true - 추론 / 연쇄 사고 지원 여부
tool_call = true # 또는 false - 도구 호출 지원 여부
structured_output = true # 또는 false - 구조화된 출력 기능 지원 여부
temperature = true # 또는 false - 온도 제어 지원 여부
knowledge = "2024-04" # 지식 컷오프 날짜
release_date = "2025-02-19" # 최초 공개 날짜
last_updated = "2025-02-19" # 최신 업데이트 날짜
open_weights = true # 또는 false - 모델 가중치 공개 여부
[cost]
input = 3.00 # 입력 토큰 백만 개당 비용 (USD)
output = 15.00 # 출력 토큰 백만 개당 비용 (USD)
reasoning = 15.00 # 추론 토큰 백만 개당 비용 (USD)
cache_read = 0.30 # 캐시 읽기 토큰 백만 개당 비용 (USD)
cache_write = 3.75 # 캐시 쓰기 토큰 백만 개당 비용 (USD)
input_audio = 1.00 # 오디오 입력 토큰 백만 개당 비용 (USD)
output_audio = 10.00 # 오디오 출력 토큰 백만 개당 비용 (USD)
[limit]
context = 400_000 # 최대 컨텍스트 윈도우 (토큰)
input = 272_000 # 최대 입력 토큰
output = 8_192 # 최대 출력 토큰
[modalities]
input = ["text", "image"] # 지원되는 입력 형태
output = ["text"] # 지원되는 출력 형태
[interleaved]
field = "reasoning_content" # interleaved 필드 이름 ("reasoning_content" 또는 "reasoning_details")
3a. extends 로 기존 모델 재사용
다른 제공자의 모델을 그대로 래핑하는 경우, 전체 파일을 복제하기보다 기존(정규) 모델 정의를 재사용하는 것이 좋습니다.
extends 는 비공식 래퍼 및 미러에만 사용하고, providers/anthropic/, providers/openai/, providers/google/ 등 정규 모델이 보관된 디렉터리 안에서는 사용하지 마세요.
[extends]
from = "anthropic/claude-opus-4-6"
omit = ["experimental.modes.fast"]
[provider]
npm = "@ai-sdk/anthropic"
규칙:
from은 반드시/로 구분된 다른 모델을 가리켜야 합니다.omit은 선택 사항이며, 상속받은 모델과 로컬 오버라이드가 병합된 뒤 제거할 필드를 지정합니다.- 상위 레벨 모델 필드는 로컬에서 자유롭게 오버라이드할 수 있습니다.
[cost],[limit],[modalities]와 같은 중첩 테이블을 오버라이드할 경우, 해당 테이블 전체 값을 명시해야 합니다.id는 파일명에서 자동으로 가져오므로 TOML 에 추가하지 마세요.
소스 모델과 거의 동일하고 몇 가지 필드만 다를 때 extends 를 사용하세요.
4. 풀 리퀘스트 제출
- 레포지토리를 포크합니다.
- 변경 사항을 담은 새 브랜치를 만듭니다.
- 제공자 및/또는 모델 파일을 추가합니다.
- 명확한 설명과 함께 PR 을 엽니다.
검증
GitHub Action 이 자동으로 제출된 내용을 스키마에 맞게 검증합니다. 검증 항목은 다음과 같습니다.
- 모든 필수 필드 존재 여부
- 데이터 타입 정확성
- 값이 허용 범위 내에 있는지
- TOML 구문 유효성
기존 래퍼 모델을 extends 로 전환할 때는 변환 전후의 JSON 출력을 비교하세요.
bun run compare:migrations
이 명령은 변경된 각 모델 TOML 에 대한 diff 를 출력해, 의도한 부분만 JSON 이 바뀌었는지 확인할 수 있게 해줍니다.
스키마 레퍼런스
모델은 packages/core/src/schema.ts 에 정의된 아래 스키마를 따라야 합니다.
Provider 스키마
name: String – 제공자 표시 이름npm: String – AI SDK 패키지 이름env: String[] – 인증에 사용되는 환경 변수 키doc: String – 제공자 문서 링크api(optional): String – OpenAI 호환 API 엔드포인트.@ai-sdk/openai-compatible패키지를 사용할 때만 필요
Model 스키마
name: String – 모델 표시 이름attachment: Boolean – 파일 첨부 지원 여부reasoning: Boolean – 추론 / 연쇄 사고 지원 여부tool_call: Boolean – 도구 호출 지원 여부structured_output(optional): Boolean – 구조화된 출력 기능 지원 여부temperature(optional): Boolean – 온도 제어 지원 여부knowledge(optional): String –YYYY-MM혹은YYYY-MM-DD형식의 지식 컷오프 날짜release_date: String –YYYY-MM혹은YYYY-MM-DD형식의 최초 공개 날짜last_updated: String –YYYY-MM혹은YYYY-MM-DD형식의 최신 업데이트 날짜open_weights: Boolean – 모델 가중치 공개 여부interleaved(optional): Boolean 또는 Object – interleaved 추론 지원 여부. 일반 지원이면true, 특정 필드를 지정하려면 객체 형태로field를 포함interleaved.field: String – interleaved 필드 이름 ("reasoning_content"또는"reasoning_details")cost.input: Number – 입력 토큰 백만 개당 비용 (USD)cost.output: Number – 출력 토큰 백만 개당 비용 (USD)cost.reasoning(optional): Number – 추론 토큰