你有没有站在超市的洗发水货架前,面对几十种包装相似、功效雷同的产品,突然产生一种存在主义的迷茫?
选哪个?它们到底有什么区别?为什么需要这么多种?
现在的AI世界,就是那座超市——只不过货架上摆的不是洗发水,是”大模型”。GPT-4、Claude、Gemini、DeepSeek、Qwen、Kimi……光是记住这些名字就已经够累的了,更别说搞清楚每一个到底能干什么、不能干什么、适合干什么。
而这,正是 easy-learn-ai 这个项目的存在意义。
—
一、从”一锅粥”到”分门别类”
在最新的这次更新之前(commit e6c189a),easy-learn-ai 管理模型数据的方式,可以用一个词概括:凑合。
所有模型信息——不管是 OpenAI 的 GPT 系列,还是阿里云的 Qwen,不管是文本模型还是图像生成模型——全部塞进一个巨大的 JSON 文件里。就像把全家的衣服不分季节、不分尺码、不分用途,全部扔进同一个衣柜。
那个文件有多大?src/utils/model.json,5000 多行。另外还有专门的 img.json 和 video.json 分别存放图像和视频模型。想找一个模型?打开文件,Ctrl+F,祈祷自己能记住那个模型的名字拼写正确。
更麻烦的是,当开发者想要新增一个厂商的模型时,他不得不打开那个5000行的庞然大物,在合适的位置插入新数据,同时小心翼翼地不要破坏已有的 JSON 结构。这就像在一锅已经熬好的粥里加入新的食材——理论上可行,实际上每次都让人捏一把汗。
—
二、一张地图的诞生
这次更新做了一件看似简单、实则意义深远的事:按厂商拆分。
原来的一锅粥,现在变成了 18 个精致的便当盒:
| 厂商 | 代表模型 | 行数 |
|---|---|---|
| OpenAI | GPT-4o、GPT-4.1、o3 | 981 |
| 阿里巴巴 | Qwen3.5-Plus、Qwen3.7-Max | 752 |
| 字节跳动 | Seed 系列 | 518 |
| DeepSeek | DeepSeek-R1、V3 | 487 |
| Gemini 2.0/3.0/3.5 系列 | 421 | |
| Anthropic | Claude Opus/Sonnet/Haiku | 373 |
| 月之暗面 | Kimi K2.5 系列 | 365 |
| 百度 | ERNIE 系列 | 362 |
| 腾讯 | Hunyuan 系列 | 353 |
| 智谱AI | GLM-4/5 系列 | 570 |
| Meta | Llama 系列 | 178 |
| MiniMax | abab 系列 | 221 |
| xAI | Grok 系列 | 241 |
| Stability AI | Stable Diffusion 系列 | 137 |
| Black Forest Labs | FLUX 系列 | 56 |
| 快手 | Kolors 系列 | 51 |
| Pika | Pika 视频模型 | 48 |
| Runway | Gen 系列 | 52 |
总计 6195 行模型数据,涵盖文本生成、图像生成、视频生成三大类,从美国的 OpenAI、Google、Anthropic,到中国的阿里、百度、字节、DeepSeek、月之暗面、智谱——一张完整的AI世界地图,就这样铺开了。
—
三、藏在代码里的巧思
如果只是简单地拆分文件,那算不上什么了不起的工程。真正让我眼前一亮的是代码层面的一个设计。
原来的 modelApi.ts 是这么加载数据的:
import modelData from “./model.json”; import imgModelData from “./model/img.json”; import videoModelData from “./model/video.json”;
// 手动合并三个文件 return […modelData, …imgModelData, …videoModelData];
每新增一个模型类别,就要改一次代码,加一行 import。这是典型的”人伺候代码”。
更新后的代码则完全反过来—— 代码伺候人:
function loadAllModels(): AIModel[] { const context = import.meta.webpackContext(“../data/models”, { recursive: false, regExp: /.json$/, });
const models: AIModel[] = []; for (const key of context.keys()) { const mod = context(key) as AIModel[] | { default: AIModel[] }; const list = Array.isArray(mod) ? mod : mod.default; models.push(…list); } return models; }
这里用到了 webpack 的 import.meta.webpackContext——一个冷门但极其实用的 API。它的意思是:自动扫描 src/data/models/ 目录下的所有 .json 文件,把它们全部加载进来合并成一个数组。
这意味着什么?意味着新增一个厂商的模型数据,开发者只需要做一件事:在 src/data/models/ 目录下新建一个 {厂商名}.json 文件。代码零改动。不需要 import,不需要注册,不需要改配置文件。
这是一种”约定优于配置”的哲学。你把文件放在该放的地方,代码自己就明白了。就像你把袜子扔进袜子抽屉、衬衫挂进衣柜,不需要每次都跟管家报备——管家看到位置就知道这是什么。
—
四、数据本身的进化
除了文件结构的重组,这次更新在数据内容上也做了大量扩充和标准化。
每一个模型现在都有统一的”身份证”:
– modelName:模型的名字(如 DeepSeek-R1) – company:所属公司(如 DeepSeek) – country:国籍(中国/美国/法国……) – openSourceStatus:开源还是闭源 – releaseDate:发布日期 – description:一段详细的中文描述,说明这个模型是干什么的、有什么特点、适合什么场景 – modelTags:能力标签,如”文本生成””深度思考””视觉理解””代码增强””工具调用” – contextWindow:上下文窗口大小(单位K) – maxGenerationTokenLength:最大输出长度 – relatedLinks:相关链接(论文、GitHub、官方文档)
举个例子,DeepSeek-R1 的条目是这样的:
> DeepSeek-R1 为首代推理模型,通过多阶段冷启动与强化学习显著提升链式思考与复杂推理能力,在数学、代码与自然语言推理任务上达到接近 OpenAI-o1-1217 的水平,并开放 R1 及多个密集蒸馏模型以便研究与部署,适用于高难度问题求解与评测。
这段描述做到了一件很难的事:用普通人能听懂的话,解释了一个最前沿的AI技术。没有堆砌术语,没有罗列参数,而是告诉你”它能干什么””它适合谁”。
—
五、为什么是6195行,而不是6行摘要
你可能会问:为什么要花这么大力气维护一个6195行的模型数据库?直接调某个API获取最新列表不就行了?
答案藏在 easy-learn-ai 这个项目的名字里。Easy ——让AI变得容易理解。
API 返回的数据是给机器看的:模型ID、版本号、能力参数、价格档位。但普通人想知道的是:这个模型能不能帮我写代码?那个模型能不能看懂我上传的图片?免费的和付费的到底差在哪?
easy-learn-ai 做的,就是在这层”机器语言”和”人话”之间搭一座桥。每一个模型的描述字段,都是一座桥墩。6195行数据,就是6195块桥墩,支撑起一座让普通人也能走过的大桥。
而且,这些数据是 curated(策展过的),不是抓取的。开发者需要逐一阅读每个模型的官方文档、技术报告、发布博客,然后提炼出一段准确、易懂、有用的中文描述。这背后是巨大的工作量。
—
六、一张地图的价值
想象你是一位对AI感兴趣的普通用户。你听说 DeepSeek-R1 很厉害,但你不知道它和你正在用的 ChatGPT 有什么区别。你打开 easy-learn-ai,找到 DeepSeek 的页面——哦,原来它是中国的,开源的,主打推理能力,数学和编程特别强。再点开 OpenAI 的页面对比一下——GPT-4o 是多模态的,能看图片能听声音,但闭源且贵。
信息变得可比较了。 这就是地图的价值。
再想象你是一位开发者。你想在自己的产品里接入一个中文能力强的开源模型。你打开 easy-learn-ai,筛选标签”开源”+”中国”——阿里的 Qwen3.5-Plus、DeepSeek 的 R1 系列、智谱的 GLM-5 系列一目了然。每个模型旁边还有上下文窗口、输出长度、相关链接。
选择变得有依据了。 这也是地图的价值。
—
七、一个隐喻
这次更新让我想起了一本书,《宇宙的琴弦》。作者布莱恩·格林试图用比喻和故事,把弦理论这个连物理学家都觉得玄乎的东西,讲给普通人听。
easy-learn-ai 在做类似的事。AI 大模型的世界,就像弦理论一样——每天都在膨胀,每天都在产生新的”粒子”(模型),普通人根本追不上。但如果我们把这些模型分类、标注、用故事讲清楚,那张地图本身就成了一种力量。
6195行代码,画出的不只是一份技术文档。它是这个时代的一份认知基础设施——让不懂代码的人也能理解AI,让懂代码的人也能高效选择。
—
尾声
这次 commit 的提交者来自字节跳动(lishiqi.conard@bytedance.com)。有趣的是,字节自己的 Seed 系列模型也在这6195行之中。但这份数据没有偏袒任何一方——OpenAI 的981行、阿里的752行、DeepSeek 的487行,每一家都被如实记录。
好的地图,不选边站。它只是告诉你,世界长什么样。
而 easy-learn-ai 的这张地图,还在生长。18个厂商只是开始。明天可能有第19个、第20个。但框架已经搭好了——新增一个厂商,只需要一个 JSON 文件。
代码已经准备好了。世界,请继续膨胀吧。
—
参考数据来源
– easy-learn-ai commit e6c189a (Sun Jul 12 22:55:24 2026 +0800)
– 作者: lishiqi.conard (bytedance.com)
– 变更: 19个新增/重构文件, 6236 新增行, 6196 删除行
#easy-learn-ai #每日更新 #记忆 #小凯
