modelfusion
ModelFusion 是一款专为构建 AI 应用而设计的 TypeScript 库,旨在为开发者提供统一、高效的模型集成方案。它主要解决了在开发过程中面对不同 AI 供应商时接口不一致、多模态支持分散以及生产环境稳定性难以保障等痛点。通过抽象层设计,ModelFusion 将文本生成、对象结构化输出、工具调用等常见操作标准化,让开发者无需反复适配各家厂商的 API 差异。
这款工具非常适合使用 JavaScript 或 TypeScript 进行开发的软件工程师和全栈开发者,尤其是那些希望快速构建聊天机器人、智能代理或多模态应用的技术团队。其独特亮点在于强大的类型推断与验证机制,能充分利用 TypeScript 特性提升代码安全性;同时内置了可观测性框架、自动重试、限流及日志记录等功能,确保应用在生产环境中稳健运行。此外,ModelFusion 坚持供应商中立原则,支持文本、图像、语音及嵌入等多种模型类型,且轻量无依赖,完美适配服务器less 环境。值得注意的是,该项目核心功能正逐步融入 Vercel AI SDK,持续为社区带来更先进的开发体验。
使用场景
某电商初创团队正在开发一个智能客服系统,需要整合多家大模型供应商以实现文本生成、结构化数据提取及自动重试机制。
没有 modelfusion 时
- 厂商锁定严重:代码中充斥着针对 OpenAI、Anthropic 等不同厂商的特有 API 调用逻辑,切换模型供应商需要重构大量底层代码。
- 类型安全缺失:模型返回的 JSON 数据缺乏严格的 TypeScript 类型推断与验证,运行时经常因字段缺失或格式错误导致程序崩溃。
- 生产级功能匮乏:缺乏内置的自动重试、请求节流和统一日志观测机制,开发者需手动编写大量样板代码来保障服务稳定性。
- 多模态支持割裂:若要同时支持文本、图像理解或语音功能,必须分别引入多个互不兼容的 SDK,导致项目依赖臃肿且维护困难。
使用 modelfusion 后
- 实现厂商中立:通过统一的抽象层屏蔽底层差异,仅需修改配置即可在 OpenAI、Llama.cpp 等任意支持的提供商间无缝切换。
- 端到端类型安全:利用 TypeScript 特性自动推断响应类型并校验模型输出,将潜在的运行时错误提前至编译阶段发现。
- 开箱即用的鲁棒性:内置自动重试、节流控制及可观测性钩子,无需额外开发即可构建高可用、易监控的生产环境应用。
- 多模态统一集成:在一个轻量级库中原生支持文本、图像、语音及嵌入模型,大幅简化了复杂 AI 应用的架构与依赖管理。
modelfusion 通过提供标准化、类型安全且具备生产级韧性的抽象层,让开发者能专注于业务逻辑而非繁琐的模型适配工作。
运行环境要求
- 未说明
未说明
未说明

快速开始
ModelFusion
用于构建 AI 应用的 TypeScript 库。
简介 | 快速安装 | 使用示例 | 文档 | 更多示例 | 贡献 | modelfusion.dev
简介
[!重要] ModelFusion 已加入 Vercel,并正在被整合到 Vercel AI SDK 中。我们将把 ModelFusion 的精华部分引入 Vercel AI SDK,首先从文本生成、结构化对象生成和工具调用开始。请查看 AI SDK 以获取最新进展。
ModelFusion 是一个用于将 AI 模型集成到 JavaScript 和 TypeScript 应用中的抽象层,统一了常见操作的 API,例如 文本流式传输、对象生成 和 工具调用。它提供了支持生产环境的功能,包括可观ability 钩子、日志记录和自动重试机制。您可以使用 ModelFusion 构建 AI 应用、聊天机器人和智能代理。
- 供应商中立:ModelFusion 是一个非商业性的开源项目,由社区驱动。您可以将其与任何受支持的提供商一起使用。
- 多模态:ModelFusion 支持广泛的模型,包括文本生成、图像生成、视觉、文本转语音、语音转文本以及嵌入模型。
- 类型推断和验证:ModelFusion 在可能的情况下会推断 TypeScript 类型,并对模型响应进行验证。
- 可观ability 和日志记录:ModelFusion 提供观察者框架和日志记录支持。
- 弹性和稳健性:ModelFusion 通过自动重试、限流和错误处理机制确保无缝运行。
- 为生产环境而设计:ModelFusion 完全支持 tree-shaking,可在无服务器环境中使用,并且仅依赖最少的外部库。
快速安装
npm install modelfusion
或者使用入门模板:
- ModelFusion 终端应用入门
- Next.js、Vercel AI SDK、Llama.cpp 和 ModelFusion 入门
- Next.js、Vercel AI SDK、Ollama 和 ModelFusion 入门
使用示例
[!提示] 基础示例是入门的好方法,也可以与 文档 并行探索。您可以在 examples/basic 文件夹中找到它们。
您可以使用环境变量(例如 OPENAI_API_KEY)为不同的 集成 提供 API 密钥,或将它们作为选项传递给模型构造函数。
生成文本
使用语言模型和提示生成文本。如果模型支持,您可以对文本进行流式传输。如果模型支持(例如使用 llama.cpp),您可以使用图像进行多模态提示。
您可以使用 提示风格 来采用文本、指令或聊天形式的提示。
generateText
import { generateText, openai } from "modelfusion";
const text = await generateText({
model: openai.CompletionTextGenerator({ model: "gpt-3.5-turbo-instruct" }),
prompt: "写一篇关于机器人学会爱的短篇故事:\n\n",
});
提供商:OpenAI、兼容 OpenAI、Llama.cpp、Ollama、Mistral、Hugging Face、Cohere
streamText
import { streamText, openai } from "modelfusion";
const textStream = await streamText({
model: openai.CompletionTextGenerator({ model: "gpt-3.5-turbo-instruct" }),
prompt: "写一篇关于机器人学会爱的短篇故事:\n\n",
});
for await (const textPart of textStream) {
process.stdout.write(textPart);
}
提供商:OpenAI、兼容 OpenAI、Llama.cpp、Ollama、Mistral、Cohere
带有多模态提示的 streamText
像 GPT 4 Vision 这样的多模态视觉模型可以将图像作为提示的一部分进行处理。
import { streamText, openai } from "modelfusion";
import { readFileSync } from "fs";
const image = readFileSync("./image.png");
const textStream = await streamText({
model: openai
.ChatTextGenerator({ model: "gpt-4-vision-preview" })
.withInstructionPrompt(),
prompt: {
instruction: [
{ type: "text", text: "详细描述这张图片。" },
{ type: "image", image, mimeType: "image/png" },
],
},
});
for await (const textPart of textStream) {
process.stdout.write(textPart);
}
提供商:OpenAI、兼容 OpenAI、Llama.cpp、Ollama
生成对象
使用语言模型和模式生成类型化的对象。
generateObject
生成符合模式的对象。
import {
ollama,
zodSchema,
generateObject,
jsonObjectPrompt,
} from "modelfusion";
const sentiment = await generateObject({
model: ollama
.ChatTextGenerator({
model: "openhermes2.5-mistral",
maxGenerationTokens: 1024,
temperature: 0,
})
.asObjectGenerationModel(jsonObjectPrompt.instruction()),
schema: zodSchema(
z.object({
sentiment: z
.enum(["positive", "neutral", "negative"])
.describe("情感。"),
})
),
prompt: {
system:
"你是一名情感评估员。" +
"请分析以下产品评论的情感:",
instruction:
"打开包装后,我闻到一股非常难闻的气味," +
"即使清洗后也没有消失。再也不会买了!",
},
});
streamObject
流式生成符合模式的对象。最终部分之前的不完整对象是未类型的 JSON。
import { zodSchema, openai, streamObject } from "modelfusion";
const objectStream = await streamObject({
model: openai
.ChatTextGenerator(/* ... */)
.asFunctionCallObjectGenerationModel({
fnName: "generateCharacter",
fnDescription: "生成角色描述。",
})
.withTextPrompt(),
schema: zodSchema(
z.object({
characters: z.array(
z.object({
name: z.string(),
class: z
.string()
.describe("角色职业,例如战士、法师或盗贼。"),
description: z.string(),
})
),
})
),
prompt: "为一款奇幻角色扮演游戏生成3个角色描述。",
});
for await (const { partialObject } of objectStream) {
console.clear();
console.log(partialObject);
}
生成图像
根据提示词生成一张图片。
import { generateImage, openai } from "modelfusion";
const image = await generateImage({
model: openai.ImageGenerator({ model: "dall-e-3", size: "1024x1024" }),
prompt:
"西方邪恶女巫,以19世纪早期绘画风格呈现",
});
提供商:OpenAI (Dall·E)、Stability AI、Automatic1111
生成语音
将文本合成语音(音频)。也称为 TTS(文本转语音)。
generateSpeech
generateSpeech 将文本合成语音。
import { generateSpeech, lmnt } from "modelfusion";
// `speech` 是一个包含 MP3 音频数据的 Uint8Array
const speech = await generateSpeech({
model: lmnt.SpeechGenerator({
voice: "034b632b-df71-46c8-b440-86a42ffc3cf3", // Henry
}),
text:
"女士们、先生们,晚上好!今晚广播里传来激动人心的消息," +
"滚石乐队发布了他们的首张新专辑《Hackney Diamonds》,这是近二十年来他们首次推出的新作品," +
"其中特别邀请了传奇人物 Lady Gaga、神奇的 Stevie Wonder,以及已故 Charlie Watts 的最后音符。",
});
提供商:Eleven Labs、LMNT、OpenAI
streamSpeech
generateSpeech 可以从文本或文本流中生成语音片段的流。根据模型的不同,这可以实现完全双工。
import { streamSpeech, elevenlabs } from "modelfusion";
const textStream: AsyncIterable<string>;
const speechStream = await streamSpeech({
model: elevenlabs.SpeechGenerator({
model: "eleven_turbo_v2",
voice: "pNInz6obpgDQGcFmaJgB", // Adam
optimizeStreamingLatency: 1,
voiceSettings: { stability: 1, similarityBoost: 0.35 },
generationConfig: {
chunkLengthSchedule: [50, 90, 120, 150, 200],
},
}),
text: textStream,
});
for await (const part of speechStream) {
// 每个部分都是一个包含 MP3 音频数据的 Uint8Array
}
提供商:Eleven Labs
生成转录
将语音(音频)数据转录成文本。也称为语音转文本(STT)。
import { generateTranscription, openai } from "modelfusion";
import fs from "node:fs";
const transcription = await generateTranscription({
model: openai.Transcriber({ model: "whisper-1" }),
mimeType: "audio/mp3",
audioData: await fs.promises.readFile("data/test.mp3"),
});
提供商:OpenAI (Whisper)、Whisper.cpp
嵌入值
为文本和其他值创建嵌入。嵌入是向量,用于在模型上下文中表示这些值的本质。
import { embed, embedMany, openai } from "modelfusion";
// 嵌入单个值:
const embedding = await embed({
model: openai.TextEmbedder({ model: "text-embedding-ada-002" }),
value: "起初,Nox不知道该如何处理这只小狗。",
});
// 嵌入多个值:
const embeddings = await embedMany({
model: openai.TextEmbedder({ model: "text-embedding-ada-002" }),
values: [
"起初,Nox不知道该如何处理这只小狗。",
"他敏锐地观察并吸收着周围的一切,从天空中的鸟儿到森林里的树木。",
],
});
提供商:OpenAI、与 OpenAI 兼容、Llama.cpp、Ollama、Mistral、Hugging Face、Cohere
分类值
将一个值分类到某个类别中。
import { classify, EmbeddingSimilarityClassifier, openai } from "modelfusion";
const classifier = new EmbeddingSimilarityClassifier({
embeddingModel: openai.TextEmbedder({ model: "text-embedding-ada-002" }),
similarityThreshold: 0.82,
clusters: [
{
name: "politics" as const,
values: [
"they will save the country!",
// ...
],
},
{
name: "chitchat" as const,
values: [
"how's the weather today?",
// ...
],
},
],
});
// 强类型结果:
const result = await classify({
model: classifier,
value: "don't you love politics?",
});
分类器:EmbeddingSimilarityClassifier
文本分词
将文本拆分为标记,并从标记中重建文本。
const tokenizer = openai.Tokenizer({ model: "gpt-4" });
const text = "At first, Nox didn't know what to do with the pup.";
const tokenCount = await countTokens(tokenizer, text);
const tokens = await tokenizer.tokenize(text);
const tokensAndTokenTexts = await tokenizer.tokenizeWithTexts(text);
const reconstructedText = await tokenizer.detokenize(tokens);
工具
工具是可由 AI 模型执行的函数(以及相关元数据)。它们对于构建聊天机器人和智能体非常有用。
ModelFusion 提供了多种开箱即用的工具:Math.js、MediaWiki 搜索、SerpAPI、Google 自定义搜索。你也可以创建自定义工具。
runTool
通过 runTool,你可以让兼容工具的语言模型(例如 OpenAI 聊天模型)调用单个工具。runTool 首先生成工具调用,然后使用参数执行该工具。
const { tool, toolCall, args, ok, result } = await runTool({
model: openai.ChatTextGenerator({ model: "gpt-3.5-turbo" }),
tool: calculator,
prompt: [openai.ChatMessage.user("十四乘以十二等于多少?")],
});
console.log(`工具调用:`, toolCall);
console.log(`工具:`, tool);
console.log(`参数:`, args);
console.log(`是否成功:`, ok);
console.log(`结果或错误:`, result);
runTools
通过 runTools,你可以让语言模型生成多个工具调用以及文本。模型会决定需要调用哪些工具以及使用哪些参数。文本和工具调用都是可选的。此函数会执行这些工具。
const { text, toolResults } = await runTools({
model: openai.ChatTextGenerator({ model: "gpt-3.5-turbo" }),
tools: [calculator /* ... */],
prompt: [openai.ChatMessage.user("十四乘以十二等于多少?")],
});
智能体循环
你可以使用 runTools 来实现一个智能体循环,该循环能够响应用户消息并执行工具。了解更多。
向量索引
const texts = [
"彩虹是一种光学现象,在特定气象条件下可能会出现。",
"它是由水滴中的光折射、内反射和色散引起的,从而在天空中呈现出连续的光谱。",
// ...
];
const vectorIndex = new MemoryVectorIndex<string>();
const embeddingModel = openai.TextEmbedder({
model: "text-embedding-ada-002",
});
// 更新索引——通常作为数据摄取流程的一部分进行:
await upsertIntoVectorIndex({
vectorIndex,
embeddingModel,
objects: texts,
getValueToEmbed: (text) => text,
});
// 从向量索引中检索文本片段——通常在查询时进行:
const retrievedTexts = await retrieve(
new VectorIndexRetriever({
vectorIndex,
embeddingModel,
maxResults: 3,
similarityThreshold: 0.8,
}),
"彩虹与水滴"
);
可用的向量存储:Memory、SQLite VSS、Pinecone
文本生成提示风格
你可以使用不同的提示风格(如文本提示、指令提示或聊天提示)与 ModelFusion 的文本生成模型一起使用。这些提示风格可以通过 .withTextPrompt()、.withChatPrompt() 和 .withInstructionPrompt() 方法访问:
文本提示风格
const text = await generateText({
model: openai
.ChatTextGenerator({
// ...
})
.withTextPrompt(),
prompt: "写一篇关于机器人学会爱的短篇故事",
});
指令提示风格
const text = await generateText({
model: llamacpp
.CompletionTextGenerator({
// 使用 llama.cpp 运行 https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
promptTemplate: llamacpp.prompt.Llama2, // 设置提示模板
contextWindowSize: 4096, // Llama 2 的上下文窗口大小
maxGenerationTokens: 512,
})
.withInstructionPrompt(),
prompt: {
system: "你是一位故事作家。",
instruction: "写一篇关于机器人学会爱的短篇故事。",
},
});
聊天提示风格
const textStream = await streamText({
model: openai
.ChatTextGenerator({
model: "gpt-3.5-turbo",
})
.withChatPrompt(),
prompt: {
system: "你是一位著名的诗人。",
messages: [
{
role: "用户",
content: "给机器人起个名字吧。",
},
{
role: "助手",
content: "我建议叫罗比。",
},
{
role: "用户",
content: "写一篇关于罗比学会爱的短篇故事吧。",
},
],
},
});
图像生成提示模板
你也可以将提示模板与图像模型一起使用,例如使用一个基础的文本提示。这提供了一种简化的用法:
const image = await generateImage({
model: stability
.ImageGenerator({
//...
})
.withTextPrompt(),
prompt:
"西方邪恶女巫,采用19世纪早期绘画风格",
});
| 提示模板 | 文本提示 |
|---|---|
| Automatic1111 | ✅ |
| Stability | ✅ |
元数据和原始响应
ModelFusion 模型函数会返回丰富的响应,其中包括原始响应和元数据,只需将 fullResponse 参数设置为 true 即可。
// 访问原始响应(需要进行类型转换)和元数据:
const { text, rawResponse, metadata } = await generateText({
model: openai.CompletionTextGenerator({
model: "gpt-3.5-turbo-instruct",
maxGenerationTokens: 1000,
n: 2, // 生成2个完成内容
}),
prompt: "写一篇关于机器人学会爱的短篇故事:\n\n",
fullResponse: true,
});
console.log(metadata);
// 将原始响应强制转换为 OpenAICompletionResponse 类型:
for (const choice of (rawResponse as OpenAICompletionResponse).choices) {
console.log(choice.text);
}
日志记录与可观测性
ModelFusion 提供了一个 观察者框架 和 日志支持。你可以轻松追踪运行和调用层次结构,并且可以添加自定义的观察者。
在函数调用中启用日志记录
import { generateText, openai } from "modelfusion";
const text = await generateText({
model: openai.CompletionTextGenerator({ model: "gpt-3.5-turbo-instruct" }),
prompt: "写一篇关于机器人学会爱的短篇故事:\n\n",
logging: "detailed-object",
});
文档
指南
集成
示例与教程
展示
API 参考
更多示例
基础示例
几乎涵盖了所有单独函数和对象的示例。强烈推荐作为入门参考。
StoryTeller
多模态, 对象流式传输, 图像生成, 文本转语音, 语音转文本, 文本生成, 对象生成, 嵌入
StoryTeller 是一款探索性的Web应用,用于为学龄前儿童创作简短的音频故事。
聊天机器人(Next.js)
Next.js 应用程序, OpenAI GPT-3.5-turbo, 流式传输, 取消处理
一个由 AI 助手驱动的 Web 聊天应用,基于 Next.js 实现。
PDF 聊天
终端应用, PDF 解析, 内存中的向量索引, 检索增强生成, 假设文档嵌入
向 PDF 文档提问,即可获得来自该文档的答案。
Next.js / ModelFusion 演示
Next.js 应用, 图像生成, 转录, 对象流式传输, OpenAI, Stability AI, Ollama
使用 ModelFusion 结合 Next.js 14(App Router)的示例:
- 图像生成
- 语音录制与转录
- 对象流式传输
双工语音流(使用 Vite/React 和 ModelFusion Server/Fastify)
语音流, OpenAI, Elevenlabs 流媒体, Vite, Fastify, ModelFusion 服务器
根据给定的提示,服务器会同时返回文本和语音流的响应。
BabyAGI 智能体
终端应用, 智能体, BabyAGI
TypeScript 实现的经典 BabyAGI 和 BabyBeeAGI。
维基百科智能体
终端应用, ReAct 智能体, GPT-4, OpenAI 函数, 工具
从维基百科获取问题答案,例如:“爱因斯坦和毕加索谁先出生?”
初中数学智能体
终端应用, 智能体, 工具, GPT-4
一个用于解答初中数学题的小型智能体。它使用计算器工具来求解题目。
PDF转推文
终端应用, PDF解析, 递归信息抽取, 内存向量索引, 风格示例检索, OpenAI GPT-4, 成本计算
从PDF中提取关于某个主题的信息,并以你自己的风格撰写一条推文。
Cloudflare Workers
Cloudflare, OpenAI
使用ModelFusion和OpenAI在Cloudflare Worker上生成文本。
贡献
贡献指南
请阅读ModelFusion贡献指南,了解开发流程、如何提出修复和改进建议,以及如何构建和测试你的更改。
版本历史
v0.137.02024/02/24v0.136.02024/02/07v0.135.12024/02/04v0.135.02024/01/29v0.134.02024/01/28v0.133.02024/01/26v0.132.02024/01/25v0.131.12024/01/25v0.131.02024/01/23v0.130.12024/01/22v0.130.02024/01/21v0.129.12024/01/21v0.129.02024/01/20v0.128.02024/01/20v0.127.02024/01/15v0.126.02024/01/15v0.125.02024/01/14v0.124.02024/01/13v0.123.02024/01/13v0.122.02024/01/13常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器