Models.dev: AI 모델 사양·가격·기능을 담은 오픈소스 데이터베이스

발행: (2026년 5월 23일 AM 05:26 GMT+9)
10 분 소요

출처: Hacker News

Models.dev 로고

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 – 추론 토큰
0 조회
Back to Blog

관련 글

더 보기 »