Models.dev:一个关于人工智能模型规格、定价和功能的开源数据库
TL;DR · AI 摘要
Models.dev 是一个由社区共建的开源数据库,集中整理 AI 模型的规格、定价与能力信息,并提供 API 与标准化 TOML 数据结构,支持快速集成与更新。
核心要点
- API 可通过 curl https://models.dev/api.json 获取,Model ID 与 AI SDK 兼容。
- 添加新模型需在 providers/{provider}/models/ 下创建 TOML 文件,包含 cost、limit、modalities 等 8 类字
- 支持复用已有模型定义,通过 extends 字段继承基础配置,减少重复工作。
结构提纲
按章节快速跳转。
- §项目介绍
Models.dev 是一个社区共建的开源数据库,用于统一收集和提供 AI 模型的规格、定价与能力信息。
提供标准 JSON API 和 SVG Logo 接口,支持通过 Model ID 和 Provider ID 快速查询。
数据以 TOML 文件组织,贡献者可按步骤添加 Provider、Logo 和 Model 定义,支持 extends 复用机制。
需创建 providers/{id}/ 目录并添加 provider.toml,指定 name、npm、env、doc 等字段。
模型定义需包含 name、attachment、reasoning、tool_call、cost、limit、modalities 等 8 类结构化字段。
通过 extends 字段可继承已有模型配置,适用于 wrapper provider 或变体模型快速建模。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Models.dev:AI 模型规格开源数据库
- 核心功能
- 统一模型规格数据库
- 提供 JSON API 与 Logo 资源
- 支持社区共建与版本管理
- 数据结构
- TOML 文件组织
- Provider + Model 层级
- 标准化字段(cost/limit/modalities)
- 贡献流程
- 创建 Provider 目录
- 添加 Logo(SVG)
- 定义 Model TOML
- 使用 extends 复用模型
金句 / Highlights
值得收藏与分享的关键句。
目前尚无一个集中数据库能涵盖所有可用 AI 模型的信息,Models.dev 正是为解决这一问题而发起的社区共建项目。
使用 Model ID 字段即可查询任意模型,该标识与 AI SDK 完全兼容。
对于仅与现有模型略有差异的封装型 Provider,可通过 extends 关键字复用已有模型定义。
数据以 TOML 文件形式存储于仓库中,按 Provider 和 Model 分类,用于生成网页并驱动 API。
- * *
Models.dev 是一个全面的开源 AI 模型规格、定价与能力信息数据库。
目前尚无单一数据库汇总所有可用 AI 模型的信息。我们发起 Models.dev 项目,旨在通过社区共建的方式解决这一问题;同时,它也在我们内部项目 opencode 中被广泛使用。
API
[](https://github.com/anomalyco/models.dev#api) 您可以通过 API 访问这些数据:
curl https://models.dev/api.json使用 Model ID 字段可对任意模型进行查询;该 ID 同时也是 AI SDK 所采用的标识符。
图标(Logos)
[](https://github.com/anomalyco/models.dev#logos) 厂商图标以 SVG 文件形式提供:
curl https://models.dev/logos/{provider}.svg将 {provider} 替换为对应的 Provider ID(例如 anthropic、openai、google)。若暂无某厂商的图标,则返回默认图标。
贡献指南
[](https://github.com/anomalyco/models.dev#contributing) 数据以 TOML 文件形式存储于本仓库中,按厂商与模型分类组织;图标则以 SVG 格式保存。这些数据用于生成本页面并驱动 API 接口。
我们亟需您的协助,以确保数据持续更新。
添加新模型
[](https://github.com/anomalyco/models.dev#adding-a-new-model) 添加新模型前,请先确认该厂商是否已存在于 providers/ 目录中。若尚未存在,请按以下步骤操作:
#### 1. 创建厂商条目
[](https://github.com/anomalyco/models.dev#1-create-a-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 兼容的 API 接口,请相应设置 npm 字段并补充 api 基础 URL:
npm = "@ai-sdk/openai-compatible" # 使用 OpenAI 兼容 SDK
api = "https://api.example.com/v1" # 使用 openai-compatible 时必填#### 2. 添加图标(可选)
[](https://github.com/anomalyco/models.dev#2-add-a-logo-optional) 为该厂商添加图标:
- 在厂商目录下添加
logo.svg文件(例如providers/newprovider/logo.svg); - 图标需为 SVG 格式,不设定固定尺寸或颜色,使用
currentColor作为填充/描边色。
SVG 示例结构如下:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
<!-- 图标路径 -->
</svg>#### 3. 添加模型定义
[](https://github.com/anomalyco/models.dev#3-add-a-model-definition) 在厂商的 models/ 目录下创建一个新的 TOML 文件,文件名即为模型 ID。
若模型 ID 中包含 /,请使用子文件夹结构。例如,对于模型 ID openai/gpt-5,应创建 openai/ 子目录,并在其中放置名为 gpt-5.toml 的文件。
name = "Model Display Name"
attachment = true # true 或 false —— 是否支持文件附件
reasoning = false # true 或 false —— 是否支持推理 / 思维链
tool_call = true # true 或 false —— 是否支持工具调用
structured_output = true # true 或 false —— 是否支持专用结构化输出功能
temperature = true # true 或 false —— 是否支持温度参数调节
knowledge = "2024-04" # 知识截止日期
release_date = "2025-02-19" # 首次公开发布日期
last_updated = "2025-02-19" # 最近一次更新日期
open_weights = true # true 或 false —— 模型训练权重是否公开可用
[cost]
input = 3.00 # 每百万输入 token 的费用(美元)
output = 15.00 # 每百万输出 token 的费用(美元)
reasoning = 15.00 # 每百万推理 token 的费用(美元)
cache_read = 0.30 # 每百万缓存读取 token 的费用(美元)
cache_write = 3.75 # 每百万缓存写入 token 的费用(美元)
input_audio = 1.00 # 每百万音频输入 token 的费用(美元)
output_audio = 10.00 # 每百万音频输出 token 的费用(美元)
[limit]
context = 400_000 # 最大上下文窗口(tokens)
input = 272_000 # 最大输入 token 数
output = 8_192 # 最大输出 token 数
[modalities]
input = ["text", "image"] # 支持的输入模态
output = ["text"] # 支持的输出模态
[interleaved]
field = "reasoning_content" # 混合内容字段名,如 "reasoning_content" 或 "reasoning_details"#### 3a. 通过 extends 复用已有模型定义
[](https://github.com/anomalyco/models.dev#3a-reuse-an-existing-model-with-extends) 对于封装型厂商(即复用其他厂商模型的包装层),建议复用原始模型定义,而非完整复制整个文件。
extends 仅适用于非第一方的封装与镜像服务。请勿在作为模型家族权威来源的官方厂商目录中使用(例如 providers/anthropic/、providers/openai/、providers/google/、providers/xai/、providers/minimax/ 或 providers/moonshot/)。
[extends]
from = "anthropic/claude-opus-4-6"
omit = ["experimental.modes.fast"]
[provider]
npm = "@ai-sdk/anthropic"规则说明:
from必须指向另一模型,格式为<provider>/<model-id>;omit为可选项,用于在继承模型与本地覆盖合并后移除指定字段;- 可在本地覆盖任意顶层模型字段;
- 若覆盖嵌套表(如
[cost]、[limit]或[modalities]),需包含该表所需的完整值; id仍由文件名决定,无需在 TOML 中额外声明。
当封装模型与源模型在本质上相同,且仅存在少量字段覆盖或省略时,请使用 extends。
#### 4. 提交 Pull Request
[](https://github.com/anomalyco/models.dev#4-submit-a-pull-request)
- Fork 本仓库
- 创建一个包含你修改的新分支
- 添加你的提供者和/或模型文件
- 提交一个描述清晰的 PR
验证
[](https://github.com/anomalyco/models.dev#validation) 我们有一个 GitHub Action 会自动对你的提交进行模式(schema)校验,确保:
- 所有必填字段均已存在
- 数据类型正确
- 值处于可接受范围内
- TOML 语法合法
在将现有封装模型转换为 extends 时,请对比变更前后的生成输出:
bun run compare:migrations该命令会为每个变更的模型 TOML 文件打印差异(diff),便于你确认生成的 JSON 仅在预期位置发生了变化。
模式(Schema)参考
[](https://github.com/anomalyco/models.dev#schema-reference) 模型必须符合 packages/core/src/schema.ts 中定义的以下模式。
提供者(Provider)模式:
name:字符串 —— 提供者的显示名称npm:字符串 —— AI SDK 包名env:字符串数组 —— 用于认证的环境变量键doc:字符串 —— 提供者文档链接api(可选):字符串 —— OpenAI 兼容 API 端点;仅当使用@ai-sdk/openai-compatible作为 npm 包时为必填项
模型(Model)模式:
name:字符串 —— 模型的显示名称attachment:布尔值 —— 是否支持文件附件reasoning:布尔值 —— 是否支持推理 / 思维链(chain-of-thought)tool_call:布尔值 —— 是否支持工具调用structured_output(可选):布尔值 —— 是否支持结构化输出功能temperature(可选):布尔值 —— 是否支持温度参数控制knowledge(可选):字符串 —— 知识截止日期,格式为YYYY-MM或YYYY-MM-DDrelease_date:字符串 —— 首次公开发布日期,格式为YYYY-MM或YYYY-MM-DDlast_updated:字符串 —— 最近一次更新日期,格式为YYYY-MM或YYYY-MM-DDopen_weights:布尔值 —— 表示模型训练权重是否公开可用interleaved(可选):布尔值或对象 —— 是否支持交错推理(interleaved reasoning)。使用true表示通用支持,或使用对象并指定field字段以明确格式interleaved.field:字符串 —— 交错字段名称(如"reasoning_content"或"reasoning_details")cost.input:数字 —— 每百万输入 token 的成本(美元)cost.output:数字 —— 每百万输出 token 的成本(美元)cost.reasoning(可选):数字 —— 每百万推理 token 的成本(美元)cost.cache_read(可选):数字 —— 每百万缓存读取 token 的成本(美元)cost.cache_write(可选):数字 —— 每百万缓存写入 token 的成本(美元)cost.input_audio(可选):数字 —— 每百万音频输入 token 的成本(美元),若单独计费cost.output_audio(可选):数字 —— 每百万音频输出 token 的成本(美元),若单独计费limit.context:数字 —— 最大上下文窗口(token 数)limit.input:数字 —— 最大输入 token 数limit.output:数字 —— 最大输出 token 数modalities.input:字符串数组 —— 支持的输入模态(如["text", "image", "audio", "video", "pdf"])modalities.output:字符串数组 —— 支持的输出模态(如["text"])status(可选):字符串 —— 支持的状态值:alpha—— 表示模型处于 Alpha 测试阶段beta—— 表示模型处于 Beta 测试阶段deprecated—— 表示模型已不再由提供者的公开 API 提供服务
示例
[](https://github.com/anomalyco/models.dev#examples) 可参考 providers/ 目录中的现有提供者:
providers/anthropic/—— Anthropic Claude 模型providers/openai/—— OpenAI GPT 模型providers/google/—— Google Gemini 模型
前端开发
[](https://github.com/anomalyco/models.dev#working-on-frontend) 请确保已安装 Bun。
$ bun install
$ cd packages/web
$ bun run dev随后将在 http://localhost:3000 打开前端界面。
使用 opencode 进行手动测试
[](https://github.com/anomalyco/models.dev#manual-testing-with-opencode) 你可以通过以下方式手动验证提供者变更:
$ bun install
$ cd packages/web
$ bun run build
$ OPENCODE_MODELS_PATH="dist/_api.json" opencode有疑问?
[](https://github.com/anomalyco/models.dev#questions) 如需帮助或对贡献流程有疑问,请提交一个 Issue。
- * *
Models.dev 由 SST 的维护者创建。