modelfusion

GitHub
1.3k 95 简单 1 次阅读 4天前MIT音频开发框架语言模型图像Agent
AI 解读 由 AI 自动生成,仅供参考

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 通过提供标准化、类型安全且具备生产级韧性的抽象层,让开发者能专注于业务逻辑而非繁琐的模型适配工作。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该工具是一个 TypeScript 库,用于构建 AI 应用程序,通过 npm 安装。它本身不直接依赖特定的 GPU、Python 版本或系统内存,而是作为抽象层调用外部 AI 服务(如 OpenAI, Ollama, Llama.cpp 等)。具体的硬件和运行环境需求取决于您选择集成的后端模型提供商(例如,若本地运行 Llama.cpp 或 Ollama,则需参考相应工具的硬件要求)。支持 Node.js 及服务器无服务器环境。
python不适用 (基于 TypeScript/JavaScript)
modelfusion
modelfusion hero image

快速开始

ModelFusion

用于构建 AI 应用的 TypeScript 库。

NPM 版本 MIT 许可证 文档 由 Lars Grammel 创建

简介 | 快速安装 | 使用示例 | 文档 | 更多示例 | 贡献 | 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

或者使用入门模板:

使用示例

[!提示] 基础示例是入门的好方法,也可以与 文档 并行探索。您可以在 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兼容 OpenAILlama.cppOllamaMistralHugging FaceCohere

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兼容 OpenAILlama.cppOllamaMistralCohere

带有多模态提示的 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兼容 OpenAILlama.cppOllama

生成对象

使用语言模型和模式生成类型化的对象。

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:
      "打开包装后,我闻到一股非常难闻的气味," +
      "即使清洗后也没有消失。再也不会买了!",
  },
});

提供商:OpenAIOllamaLlama.cpp

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);
}

提供商:OpenAIOllamaLlama.cpp

生成图像

根据提示词生成一张图片。

import { generateImage, openai } from "modelfusion";

const image = await generateImage({
  model: openai.ImageGenerator({ model: "dall-e-3", size: "1024x1024" }),
  prompt:
    "西方邪恶女巫,以19世纪早期绘画风格呈现",
});

提供商:OpenAI (Dall·E)Stability AIAutomatic1111

生成语音

将文本合成语音(音频)。也称为 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 LabsLMNTOpenAI

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.cppOllamaMistralHugging FaceCohere

分类值

将一个值分类到某个类别中。

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);

提供商:OpenAILlama.cppCohere

工具

工具是可由 AI 模型执行的函数(以及相关元数据)。它们对于构建聊天机器人和智能体非常有用。

ModelFusion 提供了多种开箱即用的工具:Math.jsMediaWiki 搜索SerpAPIGoogle 自定义搜索。你也可以创建自定义工具

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,
  }),
  "彩虹与水滴"
);

可用的向量存储:MemorySQLite VSSPinecone

文本生成提示风格

你可以使用不同的提示风格(如文本提示、指令提示或聊天提示)与 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/24
v0.136.02024/02/07
v0.135.12024/02/04
v0.135.02024/01/29
v0.134.02024/01/28
v0.133.02024/01/26
v0.132.02024/01/25
v0.131.12024/01/25
v0.131.02024/01/23
v0.130.12024/01/22
v0.130.02024/01/21
v0.129.12024/01/21
v0.129.02024/01/20
v0.128.02024/01/20
v0.127.02024/01/15
v0.126.02024/01/15
v0.125.02024/01/14
v0.124.02024/01/13
v0.123.02024/01/13
v0.122.02024/01/13

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

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 真正成长为懂上

157.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|6天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|6天前
插件Agent图像

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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架