项目介绍
ModelFusion 是一款专为构建 AI 应用程序而开发的 TypeScript 库。这个工具通过统一 API 操作,比如文本流、对象生成和工具使用,将 AI 模型集成到 JavaScript 和 TypeScript 应用中。ModelFusion 提供支持生产环境的重要功能,包括可观察性挂钩、日志记录和自动重试机制。通过使用 ModelFusion,用户可以开发 AI 应用程序、聊天机器人和智能代理。
项目特点
- 平台无关:ModelFusion 是一个由社区驱动的非商业性开源项目,可以与任何支持的提供商一起使用。
- 多模态支持:该库支持多种模型,包括文本生成、图像生成、视觉、文本转语音和语音转文本等。
- 类型推断与校验:ModelFusion 尽可能推断 TypeScript 类型,并对模型响应进行验证。
- 可观察性与日志记录:提供观察者框架和日志支持,方便监控和记录。
- 韧性与稳健性:通过自动重试、节流和错误处理机制确保无缝操作。
- 生产就绪:完全支持树形摇动,可在无服务器环境中使用,仅依赖最少的外部库。
快速安装
用户可以通过 npm 快速安装 ModelFusion:
npm install modelfusion
或者使用启动模板进行安装:
- ModelFusion 终端应用启动器
- 结合 Next.js、Vercel AI SDK、Llama.cpp 和 ModelFusion 的启动器
- 结合 Next.js、Vercel AI SDK、Ollama 和 ModelFusion 的启动器
使用示例
下面是一些如何在实际应用中使用 ModelFusion 的简单示例。
文本生成
通过语言模型和提示生成文本。如果模型支持,可以流式传输文本。还可以使用图片作为多模态提示:
import { generateText, openai } from "modelfusion";
const text = await generateText({
model: openai.CompletionTextGenerator({ model: "gpt-3.5-turbo-instruct" }),
prompt: "Write a short story about a robot learning to love:\n\n",
});
支持的提供商有 OpenAI、Llama.cpp、Ollama 等。
图像生成
通过提示生成图像:
import { generateImage, openai } from "modelfusion";
const image = await generateImage({
model: openai.ImageGenerator({ model: "dall-e-3", size: "1024x1024" }),
prompt:
"the wicked witch of the west in the style of early 19th century painting",
});
支持的提供商有 OpenAI、Stability AI、Automatic1111 等。
语音生成
从文本中合成语音,也叫文本转语音(TTS):
import { generateSpeech, lmnt } from "modelfusion";
// `speech` 是包含 MP3 音频数据的 Uint8Array
const speech = await generateSpeech({
model: lmnt.SpeechGenerator({
voice: "034b632b-df71-46c8-b440-86a42ffc3cf3", // Henry
}),
text:
"Exciting news on the airwaves tonight as The Rolling Stones unveil 'Hackney Diamonds.'",
});
支持的提供商有 Eleven Labs、LMNT、OpenAI 等。
文档与支持
用户可以通过 官方文档 和 API 参考 获取更多使用指南和技术细节。同时,ModelFusion 社区欢迎开发者贡献自己的代码和创意,更多细节可以参阅 贡献指南。