메뉴
HN
Hacker News 8일 전

AI 모델 스펙·가격·기능 통합 오픈소스 DB 공개

IMP
7/10
핵심 요약

전 세계 AI 모델의 스펙, 가격, 기능 정보를 한곳에 모은 오픈소스 프로젝트가 공개되었습니다. API와 TOML 형식의 파일 구조를 통해 데이터에 접근할 수 있으며, 커뮤니티 기여를 통해 최신 정보가 지속적으로 갱신됩니다. 주요 내용에는 모델의 토큰당 비용, 컨텍스트 제한, 지원 모달리티(Modality) 등의 세부 설정값과 로고 추가 방법 등이 포함되어 있습니다.

번역된 본문

Models.dev는 AI 모델의 사양, 가격 및 기능에 대한 종합적인 오픈소스 데이터베이스입니다. 현재 사용 가능한 모든 AI 모델에 대한 정보를 담은 단일 데이터베이스가 없기 때문에, 우리는 이 문제를 해결하기 위해 커뮤니티 기여 프로젝트로 Models.dev를 시작했습니다. 우리는 내부적으로 opocode에서도 이를 사용하고 있습니다.

API API를 통해 이 데이터에 액세스할 수 있습니다. curl https://models.dev/api.json Model ID 필드를 사용하여 모든 모델을 조회할 수 있습니다. 이는 AI SDK에서 사용하는 식별자입니다.

로고 제공자(Provider) 로고는 SVG 파일로 제공됩니다. curl https://models.dev/logos/{provider}.svg {provider}를 제공자 ID(예: anthropic, openai, google)로 바꾸십시오. 해당 제공자의 로고가 없는 경우 기본 로고가 제공됩니다.

기여하기 데이터는 TOML 파일 형태로 리포지토리에 저장되며, 제공자 및 모델별로 정리됩니다. 로고는 SVG로 저장됩니다. 이 데이터는 웹페이지를 생성하고 API를 구동하는 데 사용됩니다. 데이터를 최신 상태로 유지하는 데 여러분의 도움이 필요합니다.

새 모델 추가 새 모델을 추가하려면 providers/ 디렉토리에 해당 제공자가 이미 있는지 확인하는 것으로 시작하세요. 없다면 다음을 따릅니다:

  1. 제공자(Provider) 생성 providers/에 제공자가 없다면: providers/에 제공자 ID로 새 폴더를 만듭니다. 예: 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 사용 시 필수

  1. 로고 추가 (선택 사항) 제공자의 로고를 추가하려면: 제공자의 디렉토리에 logo.svg 파일을 추가합니다 (예: providers/newprovider/logo.svg) 고정된 크기나 색상이 없는 SVG 형식을 사용하고 채우기/선에는 currentColor를 사용합니다. SVG 구조 예시:

  1. 모델 정의 추가 제공자의 models/ 디렉토리에 파일 이름이 모델 ID인 새 TOML 파일을 만듭니다. 모델 ID에 /가 포함된 경우 하위 폴더를 사용하세요. 예를 들어, 모델 ID가 openai/gpt-5인 경우 openai/ 폴더를 만들고 그 안에 gpt-5.toml 파일을 배치합니다.

name = "Model Display Name" # 모델 표시 이름 attachment = true # 또는 false - 파일 첨부 지원 여부 reasoning = false # 또는 true - 추론/사고 과정(Chain-of-thought) 지원 여부 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 " # 인터리브된 필드("reasoning_content" 또는 "reasoning_details")의 이름

3a. extends를 사용하여 기존 모델 재사용 다른 제공자의 모델을 미러링하는 래퍼(Wrapper) 제공자의 경우, 원본 모델 정의를 재사용하는 것을 권장합니다.

원문 보기
원문 보기 (영어)
Models.dev is a comprehensive open-source database of AI model specifications, pricing, and capabilities. There's no single database with information about all the available AI models. We started Models.dev as a community-contributed project to address this. We also use it internally in opencode . API You can access this data through an API. curl https://models.dev/api.json Use the Model ID field to do a lookup on any model; it's the identifier used by AI SDK . Logos Provider logos are available as SVG files: curl https://models.dev/logos/{provider}.svg Replace {provider} with the Provider ID (e.g., anthropic , openai , google ). If we don't have a provider's logo, a default logo is served instead. Contributing The data is stored in the repo as TOML files; organized by provider and model. The logo is stored as an SVG. This is used to generate this page and power the API. We need your help keeping the data up to date. Adding a New Model To add a new model, start by checking if the provider already exists in the providers/ directory. If not, then: 1. Create a Provider If the provider isn't already in providers/ : Create a new folder in providers/ with the provider's ID. For example, providers/newprovider/ . Add a provider.toml with the provider details: name = " Provider Name " npm = " @ai-sdk/provider " # AI SDK Package name env = [ " PROVIDER_API_KEY " ] # Environment Variable keys used for auth doc = " https://example.com/docs/models " # Link to provider's documentation If the provider doesn’t publish an npm package but exposes an OpenAI-compatible endpoint, set the npm field accordingly and include the base URL: npm = " @ai-sdk/openai-compatible " # Use OpenAI-compatible SDK api = " https://api.example.com/v1 " # Required with openai-compatible 2. Add a Logo (optional) To add a logo for the provider: Add a logo.svg file to the provider's directory (e.g., providers/newprovider/logo.svg ) Use SVG format with no fixed size or colors - use currentColor for fills/strokes Example SVG structure: < svg xmlns = " http://www.w3.org/2000/svg " viewBox = " 0 0 24 24 " fill = " currentColor " > <!-- Logo paths here --> </ svg > 3. Add a Model Definition Create a new TOML file in the provider's models/ directory where the filename is the model ID. If the model ID contains / , use subfolders. For example, for the model ID openai/gpt-5 , create a folder openai/ and place a file named gpt-5.toml inside it. name = " Model Display Name " attachment = true # or false - supports file attachments reasoning = false # or true - supports reasoning / chain-of-thought tool_call = true # or false - supports tool calling structured_output = true # or false - supports a dedicated structured output feature temperature = true # or false - supports temperature control knowledge = " 2024-04 " # Knowledge-cutoff date release_date = " 2025-02-19 " # First public release date last_updated = " 2025-02-19 " # Most recent update date open_weights = true # or false - model’s trained weights are publicly available [ cost ] input = 3.00 # Cost per million input tokens (USD) output = 15.00 # Cost per million output tokens (USD) reasoning = 15.00 # Cost per million reasoning tokens (USD) cache_read = 0.30 # Cost per million cached read tokens (USD) cache_write = 3.75 # Cost per million cached write tokens (USD) input_audio = 1.00 # Cost per million audio input tokens (USD) output_audio = 10.00 # Cost per million audio output tokens (USD) [ limit ] context = 400_000 # Maximum context window (tokens) input = 272_000 # Maximum input tokens output = 8_192 # Maximum output tokens [ modalities ] input = [ " text " , " image " ] # Supported input modalities output = [ " text " ] # Supported output modalities [ interleaved ] field = " reasoning_content " # Name of the interleaved field "reasoning_content" or "reasoning_details" 3a. Reuse an Existing Model with extends For wrapper providers that mirror a model from another provider, prefer reusing the canonical model definition instead of duplicating the whole file. Use extends only for non-first-party wrappers and mirrors. Do not use it inside the actual lab provider directories that act as the canonical source for a model family, for example providers/anthropic/ , providers/openai/ , providers/google/ , providers/xai/ , providers/minimax/ , or providers/moonshot/ . [ extends ] from = " anthropic/claude-opus-4-6 " omit = [ " experimental.modes.fast " ] [ provider ] npm = " @ai-sdk/anthropic " Rules: from must point to another model using <provider>/<model-id> . omit is optional and removes fields after the inherited model and local overrides are merged. You can override any top-level model field locally. If you override a nested table like [cost] , [limit] , or [modalities] , include the full values needed for that table. id still comes from the filename; do not add it to the TOML. Use extends when the wrapper model is materially the same as the source model and only differs by a small set of overrides or omitted fields. 4. Submit a Pull Request Fork this repo Create a new branch with your changes Add your provider and/or model files Open a PR with a clear description Validation There's a GitHub Action that will automatically validate your submission against our schema to ensure: All required fields are present Data types are correct Values are within acceptable ranges TOML syntax is valid When converting existing wrapper models to extends , compare generated output before and after the change: bun run compare:migrations This prints a diff for each changed model TOML so you can confirm the generated JSON only changed where you intended. Schema Reference Models must conform to the following schema, as defined in packages/core/src/schema.ts . Provider Schema: name : String - Display name of the provider npm : String - AI SDK Package name env : String[] - Environment variable keys used for auth doc : String - Link to the provider's documentation api (optional) : String - OpenAI-compatible API endpoint. Required only when using @ai-sdk/openai-compatible as the npm package Model Schema: name : String — Display name of the model attachment : Boolean — Supports file attachments reasoning : Boolean — Supports reasoning / chain-of-thought tool_call : Boolean - Supports tool calling structured_output (optional) : Boolean — Supports structured output feature temperature (optional) : Boolean — Supports temperature control knowledge (optional) : String — Knowledge-cutoff date in YYYY-MM or YYYY-MM-DD format release_date : String — First public release date in YYYY-MM or YYYY-MM-DD last_updated : String — Most recent update date in YYYY-MM or YYYY-MM-DD open_weights : Boolean - Indicate the model's trained weights are publicly available interleaved (optional) : Boolean or Object — Supports interleaved reasoning. Use true for general support or an object with field to specify the format interleaved.field : String — Name of the interleaved field ( "reasoning_content" or "reasoning_details" ) cost.input : Number — Cost per million input tokens (USD) cost.output : Number — Cost per million output tokens (USD) cost.reasoning (optional) : Number — Cost per million reasoning tokens (USD) cost.cache_read (optional) : Number — Cost per million cached read tokens (USD) cost.cache_write (optional) : Number — Cost per million cached write tokens (USD) cost.input_audio (optional) : Number — Cost per million audio input tokens, if billed separately (USD) cost.output_audio (optional) : Number — Cost per million audio output tokens, if billed separately (USD) limit.context : Number — Maximum context window (tokens) limit.input : Number — Maximum input tokens limit.output : Number — Maximum output tokens modalities.input : Array of strings — Supported input modalities (e.g., ["text", "image", "audio", "video", "pdf"]) modalities.output : Array of strings — Supported output modalities (e.g., ["text"]) status (optional) : String — Supported status: alpha - Indicate the model is in