
ArtCraft 多供应商集成架构同时调用 Midjourney、Sora、Grok 与 World Labs 的完整拆解【免费下载链接】artcraftArtCraft is an intentional crafting engine for artists, designers, and filmmakers项目地址: https://gitcode.com/gh_mirrors/ar/artcraftArtCraft 是一款面向艺术家、设计师和电影人的「创作引擎」其核心卖点之一是多供应商 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、Kinovigenerate_videoSora 2、Veo 3、Kling、Seedance、Grok VideoArtcraft、Fal、Grok、Kinovi、直连generate_audioSuno Music / Remix、Seed AudioArtcraft、Fal、Kinovigenerate_meshHunyuan 3D、Meshy、Tripo3D、RodinArtcraft、Falgenerate_splatWorld Labs Marble 1.0/1.1、TripoSplatArtcraft、Fal、WorldLabs以 World Labs 为例providers/worldlabs/ 目录下按模型细分为marble_1p0/、marble_1p1/等子模块每个子模块包含build.rs构建请求、cost.rs计价、request.rs发送请求三件套——五域、多供应商之间完全同构这正是该架构可维护性的来源。为什么这套架构对创作者重要回到用户视角多供应商集成带来了三个实实在在的收益按任务选模型画概念图用 Midjourney做分镜视频用 Sora 2建 3D 场景用 World Labs Marble——一个工作流内无缝切换成本透明两阶段请求让每次生成前都能预估费用避免盲烧积分容错与聚合同一模型往往同时存在 Artcraft 自家通道和 Fal 等聚合通道供应商 API 波动时路由器可切换路径。结语想深入了解源码这套路由器 独立客户端 Crate 两阶段请求的多供应商架构值得所有要做 AI 聚合平台的开发者参考。如果你想动手研究建议按这条路径阅读路由入口artcraft_router/src/lib.rs供应商枚举router_provider.rs视频域生命周期文档generate_video/AGENTS.md各供应商客户端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),仅供参考