☰
ArtCraft 多供应商集成架构:同时调用 Midjourney、Sora、Grok 与 World Labs 的完整拆解
2026/10/8 7:20:08 网站建设 项目流程

ArtCraft 多供应商集成架构:同时调用 Midjourney、Sora、Grok 与 World Labs 的完整拆解

【免费下载链接】artcraftArtCraft is an intentional crafting engine for artists, designers, and filmmakers项目地址: https://gitcode.com/gh_mirrors/ar/artcraft

ArtCraft 是一款面向艺术家、设计师和电影人的「创作引擎」,其核心卖点之一是多供应商 AI 集成——你可以在同一个桌面应用里,用 Midjourney 画图、用 Sora 2 生成视频、用 Grok Imagine 出图、用 World Labs 构建 3D 世界,甚至还能生成音乐和 3D 网格。它是怎么做到的?本文带你完整拆解 ArtCraft 的多供应商集成架构。

一张表看懂:ArtCraft 接了哪些 AI 供应商

ArtCraft 把不同厂商的能力统一纳管,官方支持的供应商一览(见 README.md):

供应商能做什么底层能力
ArtCraft(自家云)图片、视频、音乐、3D 网格、3D 世界62 个模型目录,含 Seedance、Veo、Kling、FLUX、GPT Image 等
Midjourney图片生成MJ 7 / Niji / 8 系列
GrokGrok Imagine、Grok Video图片 + 视频
SoraSora 1 / Sora 2 / GPT Image 1视频 + 图片
World LabsMarble 世界生成 + 3D 高斯泼溅3D 空间模型

对用户来说,这意味着:不需要在五个平台之间来回切换、分别注册、分别充值——打开 ArtCraft,选模型,出活。

架构核心:一个「路由器」统一分发所有请求

多供应商集成的难点不在于"能调用",而在于各家 API 的协议、参数、鉴权、计费方式全都不同。ArtCraft 的解法是经典的路由器模式(Router Pattern),核心代码在 artcraft_router 这个 Rust 模块里。

路由器的供应商枚举定义在 router_provider.rs,一目了然:

pub enum RouterProvider { Artcraft, Midjourney, Fal, GmiCloud, GrokApi, KinoviWeb, WorldLabs, }

每一个生成请求进来后,路由器会按(供应商, 模型)这个二元组把请求分发给对应的构建函数。以图片生成为例,在 generate_image_request_builder.rs 中,一个match语句就覆盖了 Midjourney、FLUX、GPT Image、Seedream 等全部组合:

  • (Midjourney, Midjourney7|8)→ 走直连 Midjourney 客户端
  • (Artcraft, Flux1Dev)→ 走自家 API
  • (KinoviWeb, Midjourney7)→ 走第三方聚合通道

这就是"同时调用四家供应商"的第一层答案:上层业务只面对一个统一的请求构建器,差异全部被路由层吸收了。

第二层:每家供应商一个独立客户端 Crate

路由层之下,是crates/api_clients/目录下的独立客户端,每家供应商一个 Crate,互不干扰:

客户端 Crate负责什么关键目录
midjourney_clientMidjourney 直连endpoints/ 定义 API 端点
grok_api_clientGrok Imagine / Videoapi/ 封装接口调用
worldlabs_api_clientMarble 世界生成pricing/ 内置计价逻辑
openai_sora_clientSora 视频生成recipes/ 请求模板
fal_clientFL 聚合平台(400+ 请求类型)requests/
kinovi_web_clientKinovi 聚合(Suno 音乐等)generate/

每个客户端内部都有统一的结构:creds/或credentials/(凭据管理)、error/(错误类型)、requests/(请求定义)。

💡 这样"插件化"的好处是:新增一家供应商,只需要新建一个客户端 Crate,然后在路由器里注册(Provider, Model)分支即可,其他部分完全不用动。generate_video/AGENTS.md 甚至专门写了"如何新增一个供应商/模型"的五步指南。

第三层:两阶段请求生命周期(草稿 → 最终请求)

不同供应商的差异远不止"接口地址不同":Midjourney 需要先上传图片,World Labs 的 Marble 要区分 Draft 和 Plus 档位,而 ArtCraft 自家 API 可以直接用媒体令牌。

ArtCraft 用两阶段设计抹平这些差异(详见 generate_video/AGENTS.md 中的生命周期图):

请求构建器 build2() │ ├─► Draft(草稿):先算成本,不发起网络调用 │ │ estimate_cost() ← 生成前就能显示价格 │ ▼ finalize(context) ← 此时才上传媒体、解析令牌 │ 最终 Request │ └─► Request(直发):支持媒体令牌的供应商跳过草稿阶段

对新手用户来说,这套设计最直接的体感是:点击生成之前,界面上已经能显示这次生成的预估费用——即使最终要花钱调用 Sora 或 Midjourney。

五大生成域:图片、视频、音频、3D 网格、3D 世界

generate/mod.rs 把生成能力划分为五个平行的"域",每个域内都是providers/{供应商}/{模型}的目录结构:

生成域覆盖模型举例可路由的供应商
generate_imageMJ 7/8、FLUX、GPT Image、Nano Banana、SeedreamArtcraft、Midjourney、Fal、Kinovi
generate_videoSora 2、Veo 3、Kling、Seedance、Grok VideoArtcraft、Fal、Grok、Kinovi、直连
generate_audioSuno Music / Remix、Seed AudioArtcraft、Fal、Kinovi
generate_meshHunyuan 3D、Meshy、Tripo3D、RodinArtcraft、Fal
generate_splatWorld Labs Marble 1.0/1.1、TripoSplatArtcraft、Fal、WorldLabs

以 World Labs 为例,providers/worldlabs/ 目录下按模型细分为marble_1p0/、marble_1p1/等子模块,每个子模块包含build.rs(构建请求)、cost.rs(计价)、request.rs(发送请求)三件套——五域、多供应商之间完全同构,这正是该架构可维护性的来源。

为什么这套架构对创作者重要?

回到用户视角,"多供应商集成"带来了三个实实在在的收益:

  1. 按任务选模型:画概念图用 Midjourney,做分镜视频用 Sora 2,建 3D 场景用 World Labs Marble——一个工作流内无缝切换;
  2. 成本透明:两阶段请求让每次生成前都能预估费用,避免"盲烧积分";
  3. 容错与聚合:同一模型往往同时存在 Artcraft 自家通道和 Fal 等聚合通道,供应商 API 波动时路由器可切换路径。

结语:想深入了解源码?

这套"路由器 + 独立客户端 Crate + 两阶段请求"的多供应商架构,值得所有要做 AI 聚合平台的开发者参考。如果你想动手研究,建议按这条路径阅读:

  1. 路由入口:artcraft_router/src/lib.rs
  2. 供应商枚举:router_provider.rs
  3. 视频域生命周期文档:generate_video/AGENTS.md
  4. 各供应商客户端:crates/api_clients/

本地开发环境搭建方法参考 dev_setup.md,开发调试脚本在 script/artcraft/。

【免费下载链接】artcraftArtCraft is an intentional crafting engine for artists, designers, and filmmakers项目地址: https://gitcode.com/gh_mirrors/ar/artcraft

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询