JARVIS

GitHub
24.6k 2.1k 较难 1 次阅读 今天MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

JARVIS是一个连接大型语言模型(LLM)与Hugging Face社区模型的协作系统。它让LLM担任“智能调度员”,自动拆解用户需求、匹配Hugging Face上的专家模型、执行任务并整合结果,轻松解决复杂AI问题。例如,当需要生成带文字的图片时,JARVIS会协调文本生成和图像生成模型协同工作,无需手动配置。开发者可快速构建多模型应用,研究人员能高效验证方案,普通用户也能通过Hugging Face Spaces的在线Demo直接体验。其核心创新在于四阶段工作流(任务规划、模型选择、执行、响应生成),有效整合数百个开源模型,大幅降低技术门槛,让AI协作更简单高效。

使用场景

某零售企业的技术团队需要为用户上传的服装瑕疵图片生成自动检测报告,包括问题分类、修复建议和视频演示。

没有 JARVIS 时

  • 需要手动部署CLIP、Stable Diffusion、text-to-video等多个独立模型,环境配置耗时且易出错
  • 数据在模型间传递需手动处理格式转换,例如图片转张量、文本编码,频繁出现兼容性问题
  • 每次新增任务类型(如识别新瑕疵类型)需重写流程代码,维护成本高
  • 模型选择和任务分解依赖人工判断,响应速度慢,无法快速适应业务变化

使用 JARVIS 后

  • 仅需输入自然语言指令,JARVIS自动调用Hugging Face Hub上的预训练模型完成任务链
  • 系统自动处理数据格式转换和模型间通信,无需手动编码,集成时间从数天压缩至几小时
  • 新增任务类型只需更新配置文件,JARVIS自动匹配模型,业务响应速度提升80%
  • 生成结构化报告直接输出,客服团队可立即使用,每周节省15小时人工处理时间

JARVIS让跨模型协作变得像使用单一工具一样简单,显著提升AI应用开发效率。

运行环境要求

操作系统
  • Linux
GPU
  • 需要 NVIDIA GPU,显存 24GB+(默认配置),CUDA 11.7+
  • huggingface模式无需本地GPU
内存

12GB+ (最低), 16GB+ (推荐)

依赖
notes建议使用 conda 管理环境,对于默认配置需下载约 284GB 模型文件,需要 git-lfs;Web 界面需 nodejs 和 npm;视频生成需 ffmpeg
python3.8+
JARVIS hero image

快速开始

JARVIS

arXiv Open in Spaces

JARVIS的使命是探索通用人工智能(AGI),并向整个社区提供前沿研究。

最新动态

  • [2024年1月15日] 我们发布了Easytool,让工具使用更加便捷。
  • [2023年11月30日] 我们发布了TaskBench,用于评估大语言模型的任务自动化能力。
  • [2023年7月28日] 我们目前正处于评估与项目重构的规划阶段。近期我们将发布Jarvis的新版本。
  • [2023年7月24日] 我们发布了Jarvis的轻量版langchain。详情请见这里
  • [2023年4月16日] Jarvis现已支持Azure平台上的OpenAI服务及GPT-4模型。
  • [2023年4月6日] 我们新增了Gradio演示,并在server模式下构建了/tasks/results的Web API。
    • Gradio演示现托管于Hugging Face Space。(采用inference_mode=hybridlocal_deployment=standard构建)
    • Web API /tasks/results可访问中间结果,涵盖第1阶段:任务规划,以及第1至3阶段:模型选择与执行结果。详情请见这里
  • [2023年4月3日] 我们增加了CLI模式,并提供了配置本地端点规模的参数。
    • 您无需本地部署模型,即可享受Jarvis的轻量化体验。详情请见这里
    • 只需运行python awesome_chat.py --config configs/config.lite.yaml即可体验。
  • [2023年4月1日] 我们更新了部分代码版本。

概览

语言作为大语言模型的接口,可连接众多AI模型,以解决复杂的AI任务!

image

查看我们的论文:HuggingGPT:用ChatGPT及其伙伴在HuggingFace上解决AI任务,沈永亮、宋凯涛、谭旭、李东升、陆伟明和庄宇婷(前两位作者贡献相当)

我们介绍了一种协作系统,由一个大语言模型作为控制器众多专家模型作为协同执行者(来自HuggingFace Hub)组成。该系统的流程分为四个阶段:

  • 任务规划:利用ChatGPT分析用户请求,理解其意图,并将其拆解为可解决的任务。
  • 模型选择:为解决规划好的任务,ChatGPT根据描述从Hugging Face上选择合适的专家模型。
  • 任务执行:调用并执行每个选定的模型,将结果返回给ChatGPT。
  • 响应生成:最后,利用ChatGPT整合所有模型的预测,生成最终响应。

系统要求

默认(推荐)

对于configs/config.default.yaml

  • Ubuntu 16.04 LTS
  • 显存≥24GB
  • 内存>12GB(最低)、16GB(标准)、80GB(完整)
  • 磁盘>284GB
    • 42GB用于damo-vilab/text-to-video-ms-1.7b
    • 126GB用于ControlNet
    • 66GB用于stable-diffusion-v1-5
    • 50GB用于其他

最低(精简)

对于configs/config.lite.yaml

  • Ubuntu 16.04 LTS
  • 无其他要求

配置文件configs/config.lite.yaml无需下载和本地部署任何专家模型。不过,这意味着Jarvis仅限于在HuggingFace推理端点上稳定运行的模型。

快速开始

首先,将server/configs/config.default.yaml中的openai.keyhuggingface.token替换为您的个人OpenAI密钥您的Hugging Face令牌,或者分别放入环境变量OPENAI_API_KEYHUGGINGFACE_ACCESS_TOKEN中。然后运行以下命令:

对于服务器:

# 设置环境
cd server
conda create -n jarvis python=3.8
conda activate jarvis
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
pip install -r requirements.txt

# 下载模型。确保已安装`git-lfs`。
cd models
bash download.sh # 当`inference_mode`为`local`或`hybrid`时需要。

# 运行服务器
cd ..
python models_server.py --config configs/config.default.yaml # 当`inference_mode`为`local`或`hybrid`时需要
python awesome_chat.py --config configs/config.default.yaml --mode server # 对于text-davinci-003

现在,您可通过Web API访问Jarvis的服务。

  • /hugginggpt --方法POST,访问完整服务。
  • /tasks --方法POST,访问第1阶段的中间结果。
  • /results --方法POST,访问第1至3阶段的中间结果。

例如:

# 请求
curl --location 'http://localhost:8004/tasks' \
--header 'Content-Type: application/json' \
--data '{
    "messages": [
        {
            "role": "user",
            "content": "根据/examples/d.jpg的姿态和/examples/e.jpg的内容,请给我一张新图"
        }
    ]
}'

# 响应
[{"args":{"image":"/examples/d.jpg"},"dep":[-1],"id":0,"task":"openpose-control"},{"args":{"image":"/examples/e.jpg"},"dep":[-1],"id":1,"task":"image-to-text"},{"args":{"image":"<GENERATED>-0","text":"<GENERATED>-1"},"dep":[1,0],"id":2,"task":"openpose-text-to-image"}]

对于网页:

我们提供了一个友好的网页界面。在以服务器模式启动awesome_chat.py后,您可在浏览器中运行以下命令与Jarvis通信:

  • 需要先安装nodejsnpm
  • [重要] 如果您在另一台机器上运行网页客户端,需将http://{LAN_IP_of_the_server}:{port}/设置为web/src/config/index.ts中的HUGGINGGPT_BASE_URL
  • 如果您想使用视频生成功能,需手动编译带有H.264的ffmpeg
  • 您可通过双击设置图标切换到ChatGPT!
cd web
npm install
npm run dev
# 可选:安装ffmpeg

# 此命令需无错误执行。
LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/ffmpeg -i input.mp4 -vcodec libx264 output.mp4

对于 Gradio

Gradio 演示现在托管在 Hugging Face Space 上。您也可以运行以下命令在本地启动演示:

python models_server.py --config configs/config.gradio.yaml
python run_gradio_demo.py --config configs/config.gradio.yaml

# 或者以 Docker 镜像形式运行 HF Space(使用 `inference_mode=hibrid` 和 `local_deployment=standard` 构建)
docker run -it -p 7860:7860 --platform=linux/amd64 registry.hf.space/microsoft-hugginggpt:latest python app.py

对于 CLI:

您也可以更方便地以 CLI 模式运行 Jarvis:

cd server
python awesome_chat.py --config configs/config.default.yaml --mode cli

CLI 模式的示例:

欢迎来到 Jarvis!这是一个协作系统,由一个大语言模型作为控制器,以及众多专家模型作为协同执行器组成。Jarvis 可以规划任务、调度 Hugging Face 模型、根据您的请求生成友好的回复,并帮助您完成许多事情。请输入您的请求(输入 `exit` 退出)。
[ 用户 ]:给定一组图片 A:/examples/a.jpg,B:/examples/b.jpg,C:/examples/c.jpg,请告诉我这些图片中有多少只斑马?
[ Jarvis ]:根据您的请求,我使用了多个模型处理了您提供的图片。对于图片 A:/examples/a.jpg,我使用了图像到文本模型 nlpconnect/vit-gpt2-image-captioning,生成了文本“一只猫坐在窗台上向外张望”。然后,我使用了目标检测模型 facebook/detr-resnet-50,生成了带有预测框的图片 '/images/a3dc.jpg',其中包含两个对象,标签分别为‘盆栽植物’和‘猫’。对于图片 B:/examples/b.jpg,我使用了图像到文本模型 nlpconnect/vit-gpt2-image-captioning,生成了文本“两只斑马站在一片干草地上”。然后,我使用了目标检测模型 facebook/detr-resnet-50,生成了带有预测框的图片 '/images/f5df.jpg',其中包含三个对象,标签分别为‘斑马’。对于图片 C:/examples/c.jpg,我使用了图像到文本模型 nlpconnect/vit-gpt2-image-captioning,生成了文本“一只斑马站在一片高草地上”。然后,我使用了目标检测模型 facebook/detr-resnet-50,生成了带有预测框的图片 '/images/69c7.jpg',其中包含一个对象,标签为‘斑马’。最后,我使用了 Canny 控制模型 canny-control,基于图片 /examples/f.jpg 生成了图片 '/images/7e18.png'。因此,这些图片中共有四只斑马。还有其他我可以帮您的吗?
[ 用户 ]:请回答句子中的所有命名实体:钢铁侠是美国漫画书中的超级英雄,由漫威漫画出版。这个角色由作家兼编辑斯坦·李共同创作,编剧拉里·利伯开发,艺术家唐·赫克和杰克·科比设计。
[ Jarvis ]:好的,我明白您的请求。根据模型的推理结果,我会逐步回答您的请求。首先,我使用了分词分类模型 dslim/bert-base-NER 来识别句子中的命名实体。推理结果是:钢铁侠、斯坦·李、拉里·利伯、唐·赫克和杰克·科比。然后,我使用了问答模型 deepset/roberta-base-squad2 回答您的请求。推理结果是没有输出,因为上下文不能为空。因此,我无法给出答案。希望这能解答您的疑问。还有其他我可以帮您的吗?
[ 用户 ]:请基于 /examples/f.jpg 生成一张 Canny 图片
[ Jarvis ]:好的。我已经基于 /examples/f.jpg 生成了一张 Canny 图片。为此,我先使用了图像到文本模型 nlpconnect/vit-gpt2-image-captioning,生成了图片的文本描述,即“一群长颈鹿和斑马正在草地上吃草”。然后,我使用了 Canny 控制模型,生成了原始图片的 Canny 图片,存储在路径 “/images/1ea2.png” 中。最后,我使用了 Canny 文本到图像模型 lllyasviel/sd-controlnet-canny,基于文本描述和 Canny 图片生成了最终的 Canny 图片,存储在路径 “/images/ba66.png” 中。您还需要其他帮助吗?

配置

服务器端配置文件为 server/configs/config.default.yaml,部分参数如下所示:

  • model: 大语言模型,目前支持 text-davinci-003。我们正在努力集成更多开源大语言模型。
  • inference_mode: 推理端点模式
    • local: 仅使用本地推理端点
    • huggingface: 仅使用 Hugging Face 推理端点 (不包含本地推理端点)
    • hybrid: 同时使用 localhuggingface
  • local_deployment: 本地部署模型的规模,在 localhybrid 推理模式下生效:
    • minimal(内存 > 12GB,仅 ControlNet)
    • standard(内存 > 16GB,ControlNet + 标准流水线)
    • full(内存 > 42GB,所有已注册模型)

在个人笔记本电脑上,我们推荐使用 inference_mode: hybridlocal_deployment: minimal 的配置。但在此设置下可用的模型可能受限,因为远程 Hugging Face 推理端点不够稳定。

NVIDIA Jetson 嵌入式设备支持

我们提供了一个 Dockerfile,用于实验性支持 NVIDIA Jetson 嵌入式设备。该镜像提供了加速的 ffmpeg、PyTorch、Torchaudio 和 torchvision 依赖库。要构建 Docker 镜像,请确保默认的 Docker 运行时设置为 ‘nvidia’(参见 NVIDIA/nvidia-docker Wiki)。预构建的镜像可在 https://hub.docker.com/r/toolboc/nv-jarvis 提供。

# 构建 Docker 镜像
docker build --pull --rm -f "Dockerfile.jetson" -t toolboc/nv-jarvis:r35.2.1 

由于内存需求,JARVIS 必须在 Jetson AGX Orin 系列设备上运行(优先选择板载内存 64G 的设备),并设置以下配置选项:

  • inference_mode: local
  • local_deployment: standard

建议通过卷挂载的方式将模型和配置从主机传递到容器中,如下面的 docker run 步骤所示。您也可以取消注释 Dockerfile 中的 # 下载本地模型 部分,以构建包含模型的容器。

在 Jetson Orin AGX 上启动模型服务器、awesomechat 和 Web 应用程序

# 运行容器,它会自动启动模型服务器
docker run --name jarvis --net=host --gpus all -v ~/jarvis/configs:/app/server/configs -v ~/src/JARVIS/server/models:/app/server/models toolboc/nv-jarvis:r35.2.1

# (等待模型服务器完成初始化)

# 启动 awesome_chat.py 
docker exec jarvis python3 awesome_chat.py --config configs/config.default.yaml --mode server

#启动Web应用(应用可通过http://localhost:9999访问)
docker exec jarvis npm run dev --prefix=/app/web

截图

引用

如果您在自己的方法中使用了本工作,可参考以下论文进行引用:

@inproceedings{shen2023hugginggpt,
  author = {沈永亮、宋凯涛、谭旭、李东升、陆伟明、庄宇婷},
  booktitle = {神经信息处理系统进展},
  title = {HuggingGPT:利用ChatGPT及其HuggingFace伙伴解决AI任务},
  year = {2023}
}
@article{shen2023taskbench,
  title   = {TaskBench:面向任务自动化的大型语言模型基准测试},
  author  = {沈永亮、宋凯涛、谭旭、张文琪、任侃、袁思宇、陆伟明、李东升、庄宇婷},
  journal = {arXiv预印本 arXiv:2311.18760},
  year    = {2023}
}
@article{yuan2024easytool,
  title   = {EASYTOOL:以简洁工具指令增强基于大语言模型的智能体},
  author  = {袁思宇、宋凯涛、陈江杰、谭旭、沈永亮、任侃、李东升、杨德庆},
  journal = {arXiv预印本 arXiv:2401.06201},
  year    = {2024}
}

常见问题

相似工具推荐

stable-diffusion-webui

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

162.1k|★★★☆☆|今天
开发框架图像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 真正成长为懂上

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

ComfyUI

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

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

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

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架