modelfusion
统一API调用多种大语言模型的TypeScript库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一API调用多种大语言模型的TypeScript库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024年5月,Vercel 官方博客宣布 ModelFusion 正式加入 Vercel AI SDK 团队,这标志着 JavaScript/TypeScript 生态在 AI 应用开发领域的一次重要整合。
作者 Lars Grammel 在博客中道出了创办初心:他在用 JavaScript 接入各类 AI 模型时,发现每换一个模型提供商就要重写一套 API 调用代码——这个痛点促使他决定打造一个统一抽象层,让开发者只需写一次调用逻辑,就能无缝切换 OpenAI、Anthropic、Llama.cpp、HuggingFace 等任意模型。

ModelFusion 的核心定位是一个供应商无关(Vendor-neutral)的 AI 模型抽象层。它并不替代 LangChain 那种"框架"思路,而是更像一个高质量的工具箱——给你足够的控制力,同时抹平底层差异。
| 能力方向 | 支持的功能 |
|---|---|
| 文本生成 | 流式输出、结构化 JSON 生成、函数/工具调用 |
| 多模态 | 图像生成(DALL·E、Stable Diffusion)、视觉理解(GPT-4V) |
| 语音 | 文字转语音(TTS)、语音转文字(Whisper) |
| 嵌入 | OpenAI/Cohere/HuggingFace 嵌入向量生成 |
| 向量存储 | Pinecone、Chroma、SQLite-VSS 等集成 |
ModelFusion 的 API 设计极为简洁。以下是调用 OpenAI GPT-4 生成流式文本的标准写法:
import { generateText, openai } from 'modelfusion';
const textStream = await streamText(
openai.CompletionTextGenerator({ model: 'gpt-3.5-turbo' }),
'Write a short story about a robot.'
);
for await (const textPart of textStream) {
process.stdout.write(textPart);
}
可以看到,模型选择、调用方式、返回类型三元组被高度统一:换用 Claude 或 Llama.cpp,只需把 openai. 换成 anthropic. 或 ollama.,其余代码几乎不动。这正是 ModelFusion 区别于"手写各模型 SDK"的根本价值。
LLM 返回结构化数据是 AI 应用的高频需求。ModelFusion 巧妙结合 Zod 做 Schema 定义,让模型输出直接获得 TypeScript 类型保障:
import { z } from 'zod';
import { generateStructured } from 'modelfusion';
const recipeSchema = z.object({
name: z.string(),
ingredients: z.array(z.object({
name: z.string(),
amount: z.string(),
})),
steps: z.array(z.string()),
});
const recipe = await generateStructured({
model: openai.ChatTextGenerator({ model: 'gpt-4' }),
schema: recipeSchema,
prompt: 'Generate a lasagna recipe.',
});
// recipe 类型为 { name: string; ingredients: [...]; steps: [...] }
ModelFusion 的另一个差异化亮点是对生产环境的认真态度。它不仅仅是个学术演示项目,而是包含了大量工程实践:
ModelFusion 本身是一个 npm 包,没有复杂的服务器端组件,部署门槛极低:
npm install modelfusion 或 pnpm add modelfusion不过需要注意:ModelFusion 是库而非服务——它不提供托管的 API 端点。你需要自己在代码中配置 API Key(OpenAI、Cohere 等),这意味着生产环境还需要相应的密钥管理和成本控制策略。
| 维度 | ModelFusion | LangChain.js | Vercel AI SDK |
|---|---|---|---|
| 定位 | 统一抽象层 | 全功能框架 | Vercel 生态集成 |
| API 风格 | 简洁、声明式 | 链式/LCEL | 钩子(Hooks)优先 |
| 模型覆盖 | 广泛(30+) | 广泛 | 主要聚焦 OpenAI |
| 工具调用 | ✓ | ✓ | ✓ |
| Tree-shaking | ✓ | 一般 | ✓ |
| 维护方 | Vercel(收购后) | LangChain 团队 | Vercel 官方 |
关键提示:vercel/modelfusion 仓库已于 2026年6月3日 被归档(Read-only)。ModelFusion 的最佳特性正在被整合进 Vercel AI SDK,后续开发将在 Vercel AI SDK 仓库进行。
这对用户来说并非坏事——Vercel 的资源和分发渠道意味着 ModelFusion 的核心理念(统一 API、结构化输出、工具调用)将进入更大体量的用户群体。但如果你希望对 ModelFusion 源码做深度定制或参与贡献,需要注意只能基于归档版本做 fork。
ModelFusion 采用 monorepo + pnpm workspace 组织,核心模块如下:
packages/
modelfusion/ # 核心库
@modelfusion-vercel-ai/ # Vercel AI SDK 兼容层
@modelfusion-pinecone/ # Pinecone 向量数据库集成
@modelfusion-sqlite-vss/ # SQLite 向量搜索
@modelfusion-cost-calculator/ # API 成本计算
examples/
chatbot-next-js/ # Next.js 对话机器人
pdf-chat-terminal/ # PDF 问答(终端)
wikipedia-agent/ # Wikipedia 工具调用 Agent
每个集成包都遵循统一的导出规范,通过 TypeScript 严格类型检查确保各模型 API 的互操作性。
适合场景:
不适合场景:
ModelFusion 的价值在于:它把 AI 模型接入中最繁琐的"适配层"做好做精,让开发者把精力集中在业务逻辑本身。如果你正在 Node.js 侧构建 AI 应用,它是一个非常值得纳入技术选型的选项。