一个Agent如何通过链式调用两个HuggingFace Space构建3D巴黎画廊
How an Agent Built a 3D Paris Gallery by Chaining Two Hugging Face Spaces
一个编码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 工具链的可以立刻照着试。
一个智能体用两个 Hugging Face Spaces 构建了一个 3D 巴黎画廊。 我让一个编码智能体构建一个精美的网站,以 3D Gaussian splats 的形式展示巴黎的纪念性建筑。我从没打开过图像生成器,也从没碰过 3D 重建工具。这个智能体通过直接调用两个 Hugging Face Spaces 生成了所有素材(图像和 3D splats),然后将它们接入一个电影级的查看器。
以下是成品,以静态 Space 的形式在线展示:
这篇文章讲的是如今这如何成为可能,以及为什么我认为这是今后大量多媒体软件构建方式的预演。
积木块经济正在席卷多媒体领域
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 按钮找到这些说明:
真正的突破在于 链式调用:一个 Space 的输出成为下一个 Space 的输入。提示词 → 图像 → 3D。这就是这个画廊背后的完整流水线。
实战示例:巴黎地标 → splat
这个智能体串联了两个 Space:
- Image: 一个图像生成 Space 把每座地标变成了干净的黑底“标本”式图像(还把埃菲尔铁塔变成了展示台上的一座小立体模型)。提示词进,图像出。
- 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:
- 图像:
ideogram-ai/ideogram4把每座纪念碑转化成干净的深色背景“标本”式照片(还把埃菲尔铁塔变成了底座上的小立体模型)。输入提示词,输出图像。 - 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