跳到正文
北京时间
原文
Hugging Face:Blog(RSS)·· 2026-06-09精选AI 评分76

一个Agent如何通过链式调用两个HuggingFace Space构建3D巴黎画廊

How an Agent Built a 3D Paris Gallery by Chaining Two Hugging Face Spaces

AI 导读

一个编码Agent调用HuggingFace上的两个Space,从零构建了展示巴黎地标3D高斯散点图的交互式画廊。Agent先用ideogram-ai/ideogram4生成每个纪念碑的黑色背景图像,再通过VAST-AI/TripoSplat从单张图像重建3D高斯散点(.ply),自动完成坐标系校正、取景、压缩为.ksplat(体积缩小约3倍),并构建基于Three.js的滚动切换、拖拽旋转查看器,最终部署为静态Space。整个过程无需客户端库,每个Space通过`agents.md`暴露可调用API。

推荐理由

Hugging Face 把 agents.md 做成每个 Space 的标准说明书,agent 能直接读懂并链式调用图像和 3D 模型,这篇用 3D 巴黎画廊 demo 告诉你这事儿已经跑通了,做 AI 工具链的可以立刻照着试。

正文 · AI 翻译

一个智能体用两个 Hugging Face Spaces 构建了一个 3D 巴黎画廊。 我让一个编码智能体构建一个精美的网站,以 3D Gaussian splats 的形式展示巴黎的纪念性建筑。我从没打开过图像生成器,也从没碰过 3D 重建工具。这个智能体通过直接调用两个 Hugging Face Spaces 生成了所有素材(图像和 3D splats),然后将它们接入一个电影级的查看器。

以下是成品,以静态 Space 的形式在线展示:

👉 mishig/monuments-de-paris

这篇文章讲的是如今这如何成为可能,以及为什么我认为这是今后大量多媒体软件构建方式的预演。

积木块经济正在席卷多媒体领域

Mitchell Hashimoto 最近描述了一种他称之为积木块经济的转变:构建软件最有效的路径不再是一个打磨完善的单体,而是小巧、文档完善、可供他人(越来越多地是智能体)组装的组件。他的关键观察是:AI 从零构建一切尚可,但它非常擅长把经过验证的部件粘合在一起。

这个论点过去主要是用 code 库来讲述的。但同样的力量正在冲击 多媒体 AI。使用最先进的图像模型、视频模型、TTS 模型或 3D 重建模型,难点从来不在模型本身,而在于集成:SDK、权重、GPU、输入格式、轮询。如果每个模型都是一个有文档、可调用的模块,智能体就能像拼装 npm 包那样把它们粘合在一起。

而这正是 Hugging Face Spaces 悄然变成的样子。

通过 agents.md,每个 Space 都是一个构建模块

Hub 上托管着数千个最先进的模型(其中很大一部分是 开放权重),而且大多数都部署为可交互的 Spaces。从现在起,每个 Gradio Space 还会提供一个纯文本的 agents.md,它告诉智能体 确切的调用方式:

curl https://huggingface.co/spaces/VAST-AI/TripoSplat/agents.md

一次性返回所需的一切:schema URL、调用和轮询模板、如何上传文件,以及认证提示:

API schema:   GET  .../gradio_api/info
Call endpoint: POST .../gradio_api/call/v2/{endpoint} {"param_name": value, ...}
Poll result:  GET  .../gradio_api/call/{endpoint}/{event_id}
File inputs:  POST .../gradio_api/upload -F "files=@file.ext"
Auth:         Bearer $HF_TOKEN

无需客户端库,无需硬编码集成。智能体读到这些内容,就能端到端地驱动这个 Space。设置一个 HF_TOKEN,你就可以开始使用了。你可以在任意 Gradio Space 上通过它的 Agents 按钮找到这些说明:

Image 8: The Agents button on a Hugging Face Space 真正的突破在于 链式调用:一个 Space 的输出成为下一个 Space 的输入。提示词 → 图像 → 3D。这就是这个画廊背后的完整流水线。

实战示例:巴黎地标 → splat

这个智能体串联了两个 Space:

  1. Image: 一个图像生成 Space 把每座地标变成了干净的黑底“标本”式图像(还把埃菲尔铁塔变成了展示台上的一座小立体模型)。提示词进,图像出。
  2. Splat:VAST-AI/TripoSplat 从每张单张图像重建出一个 3D 高斯泼溅(Gaussian splat)(.ply)。图像进,3D 出。

生成的图像

重建的 splat

智能体生成的六张原始图像,全部以黑色为背景隔离呈现,可直接用于单图像 3D 重建:

从那一步开始,智能体也完成了"粘合"工作。它注意到 TripoSplat 的输出是 Y 轴朝下的,并将其翻转立正,为每座纪念物自动取景,把 .ply 文件压缩为 .ksplat(约缩小 3 倍,因此加载更快),构建了一个带有滚动切换和拖拽旋转 UI 的 Three.js 查看器,并将整个项目部署为一个静态 Space。人类唯一的输入只是品味层面的:"把镜头拉远一点","把方尖碑换成更适合 splatting 的东西","过渡停留时间太长了"。

其中有几个步骤正是 智能体对现实的响应。宽大的玻璃金字塔很难做 splatting。细长的方尖碑很无趣。单视图重建只能推断背面。这正是积木式经济所预言的"外包研发、快速迭代"循环,只不过这里的研发就是一场对话。

两条提示词,一整座新画廊

对积木而言,真正的考验是复用它的成本有多低。一旦这条流水线搭建完成,再启动一个全新的画廊只需要大约一句话的成本。"创建一个类似的 Space,用 splats 展示日本,"接着对埃及也说了同样的话,剩下的都由智能体完成:六张纪念物图片、六个 splats、压缩、一个查看器,以及一个已部署的 Space,每个国家都是如此。

  • 🏛️ Monuments of Egypt:吉萨大金字塔、狮身人面像、阿布辛贝、图坦卡蒙面具、卡纳克神庙、门农巨像。
  • ⛩️ Monuments of Japan:东京塔、姬路城、金阁寺、大阪城、镰仓大佛、严岛神社鸟居。

“> 同样两个 Space,同样的 agents.md,只是提示词变了。这就是积木经济的一句话概括:一个新多媒体应用的边际成本正在趋近于描述它的成本。

为什么这很重要

  • 模型变得可组合。来自不同机构的 SOTA splat 模型和 SOTA 图像模型,零集成代码串联。Hub 的开放权重目录变成了一座可调用的多媒体原语库。
  • 智能体偏爱有文档且易于访问的东西。agents.md让一个 Space 变得极易访问,因此智能体会选择它,而不是需要手动设置的模型。这与 Hashimoto 为开源库指出的动态是一样的。
  • 曾经的障碍是集成,而它已基本消失。"把一个提示词变成一个旋转的 3D 纪念碑"过去是一个项目。在这里,它只是流水线中的一步。

亲自试试

把你自己的智能体指向某个 Space 的 agents.md,让它大显身手:

# image generation
curl https://huggingface.co/spaces/ideogram-ai/ideogram4/agents.md
# single-image to 3D gaussian splat
curl https://huggingface.co/spaces/VAST-AI/TripoSplat/agents.md

把任一链接粘贴到你的编程智能体(Claude Code 等)中,设置好你的 HF_TOKEN,然后让它构建点什么。本图库完整、可复现的流水线,以及调用那两个 agents.md 端点的脚本,都在 Space 仓库中。

构建模块就摆在 Hub 上。智能体已经知道如何把它们粘合起来。

这个智能体串联了两个 Space:

  1. 图像:ideogram-ai/ideogram4 把每座纪念碑转化成干净的深色背景“标本”式照片(还把埃菲尔铁塔变成了底座上的小立体模型)。输入提示词,输出图像。
  2. Splat:VAST-AI/TripoSplat 从每张单张图像重建出 3D Gaussian splat(.ply)。输入图像,输出 3D。

生成的图像

重建的 splat

智能体生成的六张源图像,全部在黑色背景上隔离呈现,准备好用于单图 3D 重建:

接着智能体也完成了“粘合”工作。它发现 TripoSplat 的输出是 Y 轴朝下的,便把它们翻转成正立方向,为每座纪念碑自动取景,把 .ply 文件压缩到 .ksplat(缩小约 3 倍,因此加载很快),构建了一个带有滚动切换和拖拽旋转 UI 的 Three.js 查看器,并将整个项目部署为一个静态 Space。唯一的人工输入只是品味层面的:“放大一点视野”、“把方尖碑换成更适合 splat 的东西”、“过渡停留时间太长了”。

其中几个步骤正是 智能体对现实作出反应的过程。宽玻璃金字塔的 splat 效果很差;细长的方尖碑显得单调;单视角重建只能推断出背面。这正是积木经济所预言的“外包研发、快速迭代”循环,只不过这里的研发就是一段对话。

两条提示词,一整个新画廊

检验一个积木的真正标准,是复用它有多便宜。这条流水线搭建好之后,启动一个全新的画廊大约只需一句话。“创建一个类似的 Space,用 splat 展示日本”,然后对埃及说同样的话,剩下的都交给智能体:每个国家六张纪念建筑图片、六个 splat、压缩、一个查看器,以及一个部署好的 Space。

  • 🏛️ Monuments of Egypt:大金字塔、狮身人面像、阿布辛贝勒神庙、图坦卡蒙黄金面具、卡纳克神庙、门农巨像。
  • ⛩️ Monuments of Japan:东京塔、姬路城、金阁寺、大阪城、镰仓大佛、严岛神社鸟居。

同样两个 Space,同样的 agents.md,只是提示词变了。这就是积木经济的浓缩版:一个新多媒体应用的边际成本,正在趋近于描述它的成本。

为什么这很重要

  • 模型变得可组合。[] 来自不同机构的 SOTA splat 模型和 SOTA 图像模型,零集成代码即可串联起来。Hub 的开放权重目录变成了一座可调用的多媒体原语库。
  • 智能体偏好有文档、可访问的东西。[][agents.md] 让一个 Space 变得轻松可达,因此智能体会选择它,而不是需要手动搭建的模型。这正是 Hashimoto 针对开源库所指出的同一种动态。
  • 障碍在于集成,而这基本已经消失了。[] "把一个提示词变成旋转的 3D 纪念碑"过去是一个完整项目。在这里它只是流水线中的一个步骤。

亲自试试

把你自己的智能体指向某个 Space 的 agents.md,让它大显身手:

# image generation
curl https://huggingface.co/spaces/ideogram-ai/ideogram4/agents.md
# single-image to 3D gaussian splat
curl https://huggingface.co/spaces/VAST-AI/TripoSplat/agents.md

把任意一个链接粘贴到你的编程智能体(Claude Code 等)中,设置好你的 HF_TOKEN,然后让它构建点什么。这个画廊完整、可复现的流水线,以及调用那两个 agents.md 端点的脚本,都存放在 Space 仓库[]中。

构建模块就摆放在 Hub 上。智能体已经知道如何将它们拼接起来。

本文提到的 Spaces 5 个

来源:Hugging Face:Blog(RSS) · huggingface.co