prompt-tuning

GitHub
698 64 困难 1 次阅读 今天Apache-2.0语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

prompt-tuning 是谷歌研究团队开源的代码库,完整复现了 2021 年 EMNLP 论文中提出的“提示微调”(Prompt Tuning)技术。在大模型时代,传统的全量微调需要更新数十亿参数,不仅计算成本高昂,还难以部署。prompt-tuning 巧妙地解决了这一痛点:它保持预训练模型主体参数冻结不变,仅通过学习和优化少量可训练的“提示向量”,就能让模型适应下游任务。这种方法在大幅降低显存占用和训练时间的同时,依然能取得与全量微调相媲美的性能,极大地提升了参数效率。

该项目基于 T5X、Flax 和 JAX 生态构建,提供了从环境搭建、模型训练到推理预测的完整流程,并支持在云 TPU 上高效运行。代码库中包含了详细的配置示例、演示脚本以及部分已发布的模型检查点,方便用户快速上手复现实验结果。由于其高度专业化的技术栈和对底层深度学习框架的依赖,prompt-tuning 主要面向人工智能研究人员、算法工程师及希望探索参数高效微调技术的开发者。对于想要在不消耗巨大算力的前提下挖掘大模型潜力,或深入研究提示学习机制的专业人士来说,这是一个极具参考价值的基准实现。

使用场景

某电商公司的算法团队需要在资源有限的云 TPU 集群上,快速为数十个垂直品类(如美妆、数码、家居)定制专属的情感分析模型,以实时监控用户评论风向。

没有 prompt-tuning 时

  • 算力成本高昂:传统全量微调(Full Fine-tuning)需要更新 T5 大模型的全部参数,每次训练都需占用大量显存和计算资源,导致多任务并行时预算迅速超支。
  • 部署维护繁琐:每个品类都需要保存一份完整的模型权重副本,存储压力巨大,且上线新模型时的推理服务配置极其复杂。
  • 迭代周期漫长:由于训练数据加载和参数更新耗时久,从数据准备到模型验证往往需要数天,无法应对突发的舆情热点。
  • 小样本效果差:在部分新品类缺乏标注数据的情况下,全量微调极易过拟合,模型泛化能力严重不足。

使用 prompt-tuning 后

  • 参数效率极致:prompt-tuning 仅训练极少量的软提示(Soft Prompts)向量,冻结了主干网络,使单卡显存占用降低数个数量级,同等硬件下可并行训练更多任务。
  • 存储与部署轻量化:只需保存微小的 Prompt 检查点而非整个模型,存储空间节省超过 99%,切换不同品类任务仅需热加载对应的 Prompt 向量。
  • 敏捷开发落地:训练速度显著提升,团队可在几小时内完成从数据输入到模型验证的闭环,迅速响应业务需求变化。
  • 小样本表现优异:得益于预训练模型的强大泛化性,prompt-tuning 在少样本场景下依然保持高准确率,有效解决了冷启动难题。

prompt-tuning 通过“冻结主干、只调提示”的参数高效策略,让大模型在低资源环境下实现了低成本、快节奏的多任务定制化落地。

运行环境要求

操作系统
  • Linux
GPU

不依赖 NVIDIA GPU,必需 Google Cloud TPU (v3-8, v3-32 等),基于 JAX/libtpu 运行

内存

未说明 (取决于 TPU 实例配置及模型大小,大型模型如 XXL 需 TPU Pod 切片)

依赖
notes该工具专为 Google Cloud TPU 环境设计,不支持本地 GPU 运行。安装需通过 gcloud 创建 Cloud TPU VM,并使用特定的 JAX libtpu 源进行安装。数据存储和检查点需使用 Google Cloud Storage (GCS)。训练大型模型(如 XL, XXL)需要 TPU Pod 切片(多主机分布式训练)。
python3.8+
jax
flax
flaxformer
t5x
tensorflow-datasets
gin-config
libtpu
prompt-tuning hero image

快速开始

提示调优

这是用于复现 EMNLP 2021 论文《参数高效提示调优的规模效应》 (Lester 等, 2021) 中实验的代码。

这些模型基于 T5X 构建,其中 T5X 定义了模型和训练循环; Flaxformer 定义了实际的模型计算;Flax 定义了底层模型层;而 Jax 则提供了实际的执行。我们的实现细节可以在此处找到: 这里

目录

安装

  1. 按照 T5X 安装说明 中的前三个步骤创建一个云端 TPU 虚拟机。同时按照第 5 步创建一个 Google Cloud Storage (GCS) 存储桶。我们将使用类似 gs://{bucket-name}/path/to/item/in/bucket 的 URI 格式从该存储桶读取和写入数据。我们将在其中存储缓存的数据集以及模型检查点和结果。为了便于参考,以下是一些与 TPU 虚拟机交互的常用云命令:
# 创建云端 TPU 虚拟机
$ gcloud alpha compute tpus tpu-vm create ${TPU_NAME} \
    --zone ${ZONE} \
    --accelerator-type v3-8 \
    --version v2-alpha

# SSH 到云端 TPU 虚拟机
$ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME} --zone ${ZONE}

# 删除云端 TPU 虚拟机
$ gcloud alpha compute tpus tpu-vm delete ${TPU_NAME} --zone ${ZONE}
  1. 现在您应该已经进入了 TPU 虚拟机实例的命令行界面。克隆提示调优仓库。
git clone --branch=main https://github.com/google-research/prompt-tuning
cd prompt-tuning
  1. 安装提示调优库。
python3 -m pip install .[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html

如果您遇到 pip 尝试安装越来越旧的依赖版本(例如 TensorFlow),直到尝试安装版本 0.0.0 并失败的错误,请在安装命令中添加 --use-deprecated=legacy-resolver。此错误与依赖项之间的所需版本有关,这种行为通常被称为回溯。如果使用该标志,可能会安装不兼容的库版本,因此您应注意安装命令输出中的版本不匹配警告。

注意: 如果您计划修改提示调优的内部实现并需要可编辑的安装(以便在运行训练时使用克隆代码中的更改),请使用 -e 标志运行 pip;如果在安装过程中出现错误,您可能需要删除 pyproject.toml 文件。

要运行测试,请使用 [test] 选项安装包(python3 -m pip install .[test] ...),然后从克隆仓库的根目录运行 python3 -m pytest

训练提示

训练提示类似于 T5X 微调模型; 主要区别在于我们有自己的提示调优配置文件集可供使用。

我们提供了一个演示脚本 (prompt_tuning/scripts/sst2-demo.sh),其中包含了训练提示所需的所有部分。您可以将其作为起点,或者设置 MODEL_DIRTFDS_DATA_DIR 环境变量,指向您的 Google Cloud Storage 存储桶路径,直接运行此脚本。

./prompt-tuning/prompt_tuning/scripts/sst2-demo.sh

为了提高迭代速度,我们倾向于在命令行中指定更多选项,而不是将所有配置打包到单个 gin 文件中。值得注意的几个选项:

  • --gin_search_paths :: 以逗号分隔的目录列表,用作 gin 文件的路径前缀。我们可以使用 prompt_tuning.scripts.find_module ${module} 来查找包含配置的库的安装位置。
  • --gin_file :: 要加载的 gin 文件。我们倾向于使用相对于其安装库的路径,例如使用 prompt_tuning/configs/models/t5_1_1_base_prompt.gin 而不是 models/t5_1_1_base_prompt.gin,以避免混淆。多次使用该标志可以指定多个 gin 文件,这些文件将被合并在一起。如果在多个文件中设置了相同的配置选项,则会采用列表中最后一个文件的值。
  • --gin.{PARAM}={VALUE} :: 这个通用覆盖标志会将 PARAM 设置为 VALUE。这可用于轻松设置配置选项,而无需将其作为实际的命令行参数。例如, --gin.utils.SaveCheckpointConfig.keep=20 将保存最近的 20 个检查点。

在 TPU Pod 分片上训练提示

随着模型规模的增大,例如 XL 和 XXL 模型,它们已经无法容纳在单个 TPU 虚拟机所配备的 8 个 TPU 上。在这种情况下,我们需要使用 TPU Pod 的一个分片(有关 TPU 架构和可用配置的更多信息,请参阅 此处)。在单个 TPU 虚拟机上与在 Pod 分片上训练提示的主要区别在于,我们现在有多个 TPU 虚拟机,并且将在每个虚拟机上运行相同的 SPMD JAX 程序。本页面提供了关于 多主机 JAX 程序的更多信息。这篇指南简要介绍了如何在 TPU Pod 分片上运行 JAX 程序,但我们在此处将重点概述主要步骤。

  1. 创建 TPU Pod 分片。 此页面列出了哪些地区提供哪种类型的加速器。这与上述创建 TPU 虚拟机的过程相同,只是我们请求的是 32 个 TPU 而不是 8 个。
$ gcloud alpha compute tpus tpu-vm create ${TPU_NAME} \
    --zone ${ZONE} \
    --accelerator-type v3-32 \
    --version v2-alpha
  1. 安装 Prompt Tuning 库。由于我们现在有 4 个 TPU 虚拟机,每个虚拟机拥有 8 个 TPU,因此我们不希望通过 SSH 直接登录到每个虚拟机来执行操作。相反,Google Cloud 的 SSH 命令允许我们使用 --command= 标志指定要在所有虚拟机(称为工作节点)上运行的命令,并通过 --worker=all 参数实现这一点。
$ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME} \
  --zone ${ZONE} \
  --worker=all \
  --command="git clone --branch=main https://github.com/google-research/prompt-tuning && cd prompt-tuning && "
python3 -m pip install . -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
  1. 编写用于训练提示的脚本。我们提供了一个演示脚本 (/prompt_tuning/scripts/sst2-xxl-demo.sh),该脚本使用 T5 1.1 lm100k XXL 模型来训练提示以解决 SST2 数据集问题。您可以将其用作起点,或者只需填写指向您 Google Cloud Storage 存储桶的路径,以指定保存结果的位置 (MODEL_DIR) 和缓存 TFDS 数据的位置 (TFDS_DATA_DIR),也可以将这些路径设置为环境变量。

  2. 将您的训练脚本复制到每个工作节点。如果您是第一次使用 scp,可能会遇到错误。请按照错误消息中的说明运行 ssh-add /.../.ssh/google_compute_engine 命令,然后重试。

$ gcloud alpha compute tpus tpu-vm scp sst2-xxl-demo.sh ${TPU_NAME}: \
  --zone=${ZONE}
  --worker=all
  1. 执行您的训练脚本。
$ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME} \
  --zone ${ZONE} \
  --worker=all \
  --command="./sst2-xxl-demo.sh"

如果其中一个工作节点在训练过程中出现错误,其他工作节点上的 TPU 将被占用而无法释放。这将阻止您重新启动作业,直到这些进程被终止并释放 TPU。以下命令应能终止所有这些进程。您可能会从最初出错的工作节点返回 kill 命令的手册页。

$ gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME} \
  --zone ${ZONE} \
  --worker=all \
  --command="sudo lsof -t /dev/accel0 | xargs kill -9"

自定义依赖项

要使用自定义组件(如您自己的数据集)训练提示,请遵循 T5X 关于自定义组件的说明

如果您将自己的代码打包成可使用 pip 安装的 Python 包,则不必局限于单个目录,并且可以使用 python3 -m prompt_tuning.scripts.find_module {your_module} 来帮助设置 gin_search_paths,以便找到您库中捆绑的 gin 配置文件。注意: 如果您计划将 gin 配置文件捆绑到可安装的包中,请确保包含配置文件的目录具有 __init__.py 文件,因为 gin 要求文件必须位于 Python 包中。

如果您的自定义组件的部分内容可以通过 gin 进行配置,则需要在 gin 文件中显式导入;如果它们是在解析 gin 文件之后才被导入,将会导致错误。如果您所有的依赖项都不包含可配置的 gin 设置,则可以通过传递 --gin.MIXTURE_OR_TASK_MODULE="'path.to.your.module'" 来避免编写 gin 文件。这将自动导入您的模块,非常适合仅需更换数据集的情况。

使用提示进行推理

我们建议的使用提示进行推理的方法是加载用于初始化模型的原始检查点,并从文件中加载提示。正如本节关于 部分加载 中所解释的那样,T5X 支持在初始化时加载部分模型参数,而其他参数则从头开始初始化。我们将此功能与 from_array 提示初始化器结合使用,以从原始检查点和提示文件中重新加载冻结的参数。configs/runs/prompt_eval.gin 文件为您设置了此配置;您只需提供 PROMPT_FILE 即可。如果您的模型是使用任何 prompts/ 配置文件训练的,您可以将其从评估脚本的参数中移除。

随附的 sst2-demo-eval.sh 脚本展示了以这种方式进行评估的示例。您只需设置 EVAL_DIRTFDS_DATA_DIR 环境变量,分别指向存储评估输出和 TensorFlow 数据集缓存的路径即可。

在 T5X 中,评估脚本假定您的数据集包含标签,并根据数据集的指标函数输出最终结果。而推理脚本则不需要标签,而是直接输出模型的预测结果。我们还提供了一个类似的 prompt_infer.gin 文件,供与推理脚本一起使用。

如果您希望使用由提示微调训练生成的 T5X 检查点进行推理或评估,可以直接使用 T5X 中的 (eval|infer).gin 配置文件。不过,您需要更新 utils.RestoreChekcpointConfig。应将 path 设置为新的检查点,assignment_map=(),并设置 fallback_to_scratch=False

模型配置

所有关于模型、训练、评估、保存、恢复等的配置均通过 gin 完成。有关 gin 的通用介绍,请参阅 gin-config 仓库,以及 这篇入门指南

我们遵循 T5X 的配置布局:

  • runs/ :: 包含用于实际训练模型的配置。数据集和评估相关的配置通常放在这里。
  • architectures/ :: 包含模型架构相关的配置。例如,编码器-解码器架构与纯解码器架构的选择,以及嵌入共享等设置。
  • models/ :: 包含设置模型特定参数的配置,如层数或嵌入表的大小。此外,还配置所使用的 T5X 模型封装器等。
    • models/decoding/ :: 提供易于使用的配置,用于在推理过程中切换文本生成方式,包括束搜索和核采样等配置。
    • models/sizes/ :: 包含用于创建不同规模模型的各种设置。这些设置会与默认版本结合,形成特定规模的模型,例如,t5_1_1_prompt.gin + sizes/large.gin 可以创建一个 T5 1.1 Large 模型。一些常用组合已作为包含正确引入语句的 gin 文件提供(如上例中的 t5_1_1_large_prompt.gin)。注意: 这些规模文件必须__位于__主模型文件之后。
  • prompts/ :: 我们的额外目录包含用于设置 PROMPT gin 变量的配置,从而可以通过添加不同的提示文件作为 --gin_file 参数来轻松切换提示初始化方式(该文件需置于 models/ gin 文件之后)。

gin 配置文件的顺序

在命令行中指定 --gin_file 参数时,文件的顺序非常重要。gin 文件的一般指定顺序如下:

  1. models/*.gin
  2. prompts/*.gin
  3. models/sizes/*.gin
  4. models/decoding/*.gin
  5. runs/*.gin

必填字段

T5X 有一些必填字段,如 MIXTURE_OR_TASK_NAMETASK_FEATURE_LENGTHS。我们又增加了两个必填字段:

  • PROMPT_LENGTH :: 我们所使用的提示长度。由于该值会在多个地方使用,因此我们将其定义为一个 gin 宏,以便在多处引用并确保各处数值一致。
  • PROMPT :: 这是实际提示模块的配置,将在 Flaxformer 的 PromptX 子类中使用。

注: 目前,提示调优不支持示例打包。这意味着我们的最大目标长度只需足够容纳每个示例的目标即可。因此,在 TASK_FEATURE_LENGTHS 映射中,targets 键的值可以显著缩短,例如对于许多 SuperGLUE (Wang et al., 2019) 任务,可以设为约 4,而 P5X 的默认值则是 62。

提示初始化

提示参数的初始化有多种选项。我们支持我们在论文 3.2 节 中介绍的各种方法,同时也支持从文件中进行初始化。后者允许用户例如从 MNLI 上学到的提示开始,在 BoolQ 数据集上进行训练。

所有初始化器都遵循 Flax 初始化器 API,即它们是带参数的函数,返回一个关于初始化函数的闭包。实际的初始化函数总是具有以下签名:

def initializer(rng: Array, shape: Sequence[int]) -> Array:
  ...

我们将每种初始化方案都提供为 configs/prompts 目录下的 gin 配置文件。可以通过使用 --gin_file=path/to/configs/prompts/scheme.gin 来包含 gin 文件来使用这些配置。该文件需要位于主模型文件之后,否则默认的(随机均匀)方法会覆盖您选择的方法。其中一些初始化方法可能需要您通过覆盖标志或在其中一个 gin 文件中设置额外的 gin 值。

随机均匀

这是一种标准的随机初始化,类似于人们用于嵌入初始化的方式。这是默认设置,无需任何 gin 文件。随机值的尺度可以通过覆盖 prompt_init/linen.initializers.uniform.scale=N 来调整。

采样词汇表

使用 from_sample_of_embeddings 初始化器,为每个提示位置采样一个标记嵌入作为初始化。您可以使用 prompt_init/prompts.from_samples_of_embeddings.population_size 参数将采样限制为前 n 个嵌入。

这可以与 --gin_file=prompt_tuning/configs/prompts/from_sampled_vocab.gin 一起使用。这种方法使用从初始模型检查点中提取的嵌入表。您也可以通过 --gin_file=prompt_tuning/configs/prompts/from_sampled_vocab_numpy.gin 提供您自己的嵌入文件。此方法要求您提供一个名为 EMBEDDING_FILE 的值,该值是一个包含模型嵌入表的 numpy 数组。这可以通过使用 prompt_tuning.scripts.extract_variable 从模型检查点中提取。

类标签

我们支持通过 from_embedded_list 初始化器,使用类标签(又称“表述词”)的嵌入来初始化提示时间步。用户可以提供一个要使用的单词列表(类标签)。每个单词由提供的词汇表进行分词;使用提供的词汇表嵌入;如有必要,跨子标记进行聚合;然后用于初始化提示的一个时间步。如果提供的标记未能覆盖整个提示长度,则缺失的标记将使用提供的后备初始化器进行初始化。

为了与论文中的做法保持一致——未填充的提示标记通过从嵌入表中采样来填充——我们可以将此初始化方法与上述方法组合使用。它可以与 --gin_file=prompt_tuning/configs/prompts/from_class_labels.gin 一起使用。这需要设置 CLASS_LABELS,即您希望嵌入作为提示初始化的单词列表。您还可以通过 --gin_file=prompt_tuning/configs/prompts/from_class_labels_numpy.gin 提供您自己的嵌入文件(与上述相同)。此外,还需要设置 EMBEDDING_FILE

来自字符串

我们还支持使用某个字符串的嵌入来初始化提示,通常用于从离散提示或任务描述开始。这使用 from_embedded_string 初始化器。字符串由提供的词汇表进行分词,每个标记在提供的嵌入表中查找,最终得到的字符串嵌入表示被用作提示初始化。如果提供的标记未能覆盖整个提示长度,则缺失的标记将使用提供的后备初始化器进行初始化。

注意: 词汇表只是将字符串转换为一系列 ID,您需要确保字符串与您的 SeqIO 任务所执行的任何文本格式化(如标点符号周围的空格等)相匹配。

从文件

您还可以使用 from_array 初始化器从文件中加载提示,以实现跨任务的迁移。这可以通过 --gin_file=prompt_tuning/configs/prompts/from_file.gin 来完成。这需要设置 PROMPT_FILE,指定包含要加载提示的 Numpy 文件的路径。默认情况下,训练时会输出提示的 Numpy 版本,但也可以使用上述脚本提取提示。

已发布的模型检查点

我们发布了经过 10 万步语言模型适应的 T5 1.1 检查点的 T5X 原生检查点。

这些检查点是从公开的 Mesh TensorFlow 检查点 转换而来的。

已发布的提示词

我们已在多种任务上发布了预训练的提示词,并计划随着时间的推移继续增加更多内容。

提示词位于 pretrained_prompts 目录中。该目录下的每个子目录按其对应的预训练模型进行分组。引用随库一起打包的这些提示词最简单的方式是:

  --PROMPT_FILE=`python3 -m prompt_tuning.scripts.find_module prompt_tuning`/pretrained_prompts/{MODEL_SIZE}/{PROMPT}.npy

由于并行计算固有的随机性,在训练和评估过程中需要确保若干设置完全一致,才能得到完全相同的数值结果。每个模型子目录都包含一个 README.md 文件,其中详细说明了这些必须匹配的设置。最重要的几个设置包括:批量大小、TPU 拓扑结构以及模型并行化的划分方式。表格中列出了在使用这些提示词运行 t5x.eval 时应预期获得的分数。

其他资源

这里收集了一些关于提示词微调的额外资源。

如何引用

如果您将本工作作为起点,请引用以下文献:

@inproceedings{lester-etal-2021-power,
    title = "参数高效的提示词微调中的规模效应",
    author = "Lester, Brian  and
      Al-Rfou, Rami  and
      Constant, Noah",
    booktitle = "2021年自然语言处理经验方法会议论文集",
    month = nov,
    year = "2021",
    address = "线上及多米尼加共和国蓬塔卡纳",
    publisher = "计算语言学协会",
    url = "https://aclanthology.org/2021.emnlp-main.243",
    doi = "10.18653/v1/2021.emnlp-main.243",
    pages = "3045--3059",
}

注意事项

本项目并非 Google 官方支持的产品。

相似工具推荐

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

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

ComfyUI

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

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

gemini-cli

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

100.8k|★★☆☆☆|4天前
插件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周前
插件开发框架