AIRI 图像生成接入 Replicate:配置、内置预设与云端推理实现解析 人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载本篇指南基于 AIRI 仓库中的官方文档与配套源码讲解如何在 AIRI 中配置 Replicate 作为云端图像生成Artistry服务商覆盖 Token 获取、设置项逐项说明、内置模型预设并深入 ReplicateProvider 的默认参数合并、占位符替换与任务轮询机制读完后可独立完成配置、验证与故障排查。一、Replicate 在 AIRI 中的定位Replicate 让 AIRI 使用云端图像生成模型无需自行部署 ComfyUI 或下载模型权重直接向 Replicate 平台上公开的模型发起推理请求即可。完成配置后可在设置 → 艺术模块中选择 Replicate 作为图像生成来源。从源码结构看AIRI 的 Artistry艺术创作模块支持三种提供商comfyui本地自托管、replicate云端、nanobananaGoogle AI Studio三者统一注册在主进程的提供商注册表中// apps/stage-tamagotchi/src/main/services/airi/widgets/artistry-bridge.ts#L102-L105 export const artistryProviders new Mapstring, ArtistryProvider() artistryProviders.set(comfyui, new ComfyUIProvider()) artistryProviders.set(replicate, new ReplicateProvider()) artistryProviders.set(nanobanana, new NanoBananaProvider())所有提供商必须实现统一的ArtistryProvider接口base.ts核心方法包括generate(request)提交生成请求返回任务句柄jobIdproviderJobIdgetStatus(jobId)查询任务状态queued / running / succeeded / failed / cancelled成功时携带imageUrlsetJobCallback(jobId, callback)可选的状态推送回调Replicate 提供商实现了该能力因此主进程无需纯轮询即可拿到结果initialize(config)用全局配置初始化提供商Replicate 在此阶段创建客户端。选择 Replicate 的典型动机不想占用本地 GPU、不想维护模型部署且希望从 Replicate 可用的模型列表中灵活挑选云端推理服务。二、第一步获取 API Token登录你的 Replicate 账户进入账户设置页中的 API Tokens 页面创建一个新的 API Token确认账户已配置可用的计费方式或额度云端推理按调用计费无额度会导致请求被拒复制 Token 并妥善保存。界面文案中也提示了 Token 的形态以r8_开头见 settings.yaml 中 API 密钥字段说明。安全提醒不要将 Token 提交到仓库、放入截图或发送给他人。泄露后请立即在 Replicate 控制台撤销并创建新 Token。三、第二步在 AIRI 中配置入口路径为设置 → 服务商 → 艺术 → Replicate设置模块总览页在 settings/modules/artistry.vue 中以 RadioCard 形式列出none / comfyui / replicate / nanobanana四个选项Replicate 对应路由/settings/providers/artistry/replicate。配置页组件为 replicate.vue共四个设置项与文档描述一一对应设置项组件持久化键默认值说明API 密钥FieldInputtypepasswordartistry-replicate-api-key空字符串以r8_开头的 Replicate API Token默认模型FieldInputartistry-replicate-default-modelblack-forest-labs/flux-schnell角色卡未指定模型时使用的owner/model字符串以 Replicate 模型页面显示的精确 ID 为准宽高比FieldInputartistry-replicate-aspect-ratio16:9默认图像宽高比如16:9、1:1、9:16推理步数FieldRangemin1, max50, step1artistry-replicate-inference-steps4扩散过程步数越低越快越高质量越好这四条持久化状态定义在 Pinia store artistry.ts 中并通过useLocalStorageManualReset落地到本地存储// packages/stage-ui/src/stores/modules/artistry.ts#L58-L73 const replicateApiKey useLocalStorageManualResetstring(artistry-replicate-api-key, , persistenceOptions) const replicateDefaultModel useLocalStorageManualResetstring( artistry-replicate-default-model, black-forest-labs/flux-schnell, persistenceOptions, ) const replicateAspectRatio useLocalStorageManualResetstring( artistry-replicate-aspect-ratio, 16:9, persistenceOptions, ) const replicateInferenceSteps useLocalStorageManualResetnumber( artistry-replicate-inference-steps, 4, persistenceOptions, )配置如何校验与同步store 中有一个configured计算属性用于判断当前活动提供商是否已配置完整——对 Replicate 而言等价于 API 密钥非空artistry.tsif (activeProvider.value replicate) { return !!replicateApiKey.value }在桌面端渲染进程还会通过 artistrySyncConfig 事件把replicateApiKey / replicateDefaultModel / replicateAspectRatio / replicateInferenceSteps等全局配置同步给主进程写入 Electron 配置持久层。主进程侧的 schema 校验定义在 configs/artistry.ts落盘到options.json其默认值与前端 store 完全一致// apps/stage-tamagotchi/src/main/configs/artistry.ts#L5-L19 export const artistryConfigSchema object({ artistryProvider: optional(string(), none), artistryGlobals: optional(object({ ... replicateApiKey: optional(string(), ), replicateDefaultModel: optional(string(), black-forest-labs/flux-schnell), replicateAspectRatio: optional(string(), 16:9), replicateInferenceSteps: optional(number(), 4), ... }), {}), })四、内置模型预设开箱即用的图像生成与编辑配方仓库在 stage-shared/src/artistry.ts 中内置了REPLICATE_IMAGEGEN_PRESETS与REPLICATE_IMAGEEDIT_PRESETS两组预设每个预设包含模型 ID、展示名、参考单价、提示词前缀模板和一组 provider 参数。图像生成预设覆盖不同风格的模型预设模型 ID参考单价关键参数p-imageprunaai/p-image$1 / 200 imgsaspect_ratio: 16:9z-turboprunaai/z-image-turbo$1 / 200 imgs1024×768、guidance_scale: 0、num_inference_steps: 8flux-schnellblack-forest-labs/flux-schnell$1 / 333 imgsgo_fast: true、aspect_ratio: 1:1、output_format: webpz-turbo-loraprunaai/z-image-turbo-lora:...$1 / 217 imgs1024×1024、附带lora_weights指向 Hugging Face 权重wai-ilxaisha-ai-official/wai-nsfw-illustrious-v11:...$1 / 151 imgsSDXL 系参数steps: 30、cfg_scale: 7、scheduler: Euler a等anillustriousaisha-ai-official/anillustrious-v4:...$1 / 188 imgssteps: 30、refiner、adetailer_*人脸/手部修复开关等图像编辑预设则给出一个Texture Swapper示例// packages/stage-shared/src/artistry.ts#L138-L150 export const REPLICATE_IMAGEEDIT_PRESETS [ { id: prunaai/p-image-edit, label: P-Image-Edit (Texture Swapper), cost: Turbo, prompt: The womans dress is changed to black, preset: { turbo: true, images: [{ value: {{IMAGE}} }], aspect_ratio: 1:1, }, }, ]注意{{IMAGE}}占位符——这正是 Replicate 提供商内建能力的一部分见下文占位符替换机制。这些预设中的cost是仓库内写死的参考标注实际价格以 Replicate 模型页面为准。五、ReplicateProvider 实现深读5.1 初始化与请求参数合并ReplicateProvider 用官方的replicateSDK在 stage-tamagotchi/package.json 中声明为 workspace 依赖构造客户端initialize会把渲染进程传来的四个配置项注入为实例状态// apps/stage-tamagotchi/src/main/services/airi/widgets/providers/replicate.ts#L36-L51 async initialize(config: any): Promisevoid { if (config?.replicateApiKey) { this.apiKey config.replicateApiKey this.replicate new Replicate({ auth: this.apiKey }) } else { this.apiKey this.replicate null } if (config?.replicateDefaultModel) this.defaultModel config.replicateDefaultModel if (config?.replicateAspectRatio) this.aspectRatio config.replicateAspectRatio if (config?.replicateInferenceSteps) this.inferenceSteps config.replicateInferenceSteps }未配置 Token 时直接抛错Replicate provider is not configured. Missing API Key.这也是认证失败排查的第一现场。generate()的参数合并遵循三级优先级replicate.ts默认基线const inputOptions: Recordstring, any { go_fast: request.extra?.go_fast ?? true, aspect_ratio: request.extra?.aspect_ratio ?? this.aspectRatio, output_format: request.extra?.output_format ?? png, output_quality: request.extra?.output_quality ?? 80, num_inference_steps: request.extra?.num_inference_steps ?? this.inferenceSteps, }可见代码内还隐含两个文档未提及的默认值go_fast: true、output_format: png、output_quality: 80。请求覆盖来自角色卡/组件providerOptions的extra字段会整体合并覆盖默认值其中image、internalJobId、remixId是内部字段会被剔除prompt字段被刻意从覆盖中剥离注释标注 BY DESIGN以免覆盖上游已拼接了promptPrefix的提示词。模型解析request.model || request.extra?.model || this.defaultModel即显式模型 附加字段模型 全局默认模型。5.2{{IMAGE}}/{{PROMPT}}占位符递归替换预设中出现的{{IMAGE}}、{{PROMPT}}会在提交前被递归替换replicate.ts{{IMAGE}}替换为源图的 data URL。若传入的 base64 已带data:前缀则直接使用否则包装为data:image/jpeg;base64,...——这让以现有图片为输入的编辑类模型如 P-Image-Edit 预设可以直接引用本地图像{{PROMPT}}替换为截断后的提示词。truncatePrompt默认上限380 字符超出部分截断并追加...replicate.ts避免超长提示词触发模型端报错若extra中不含{{PROMPT}}占位符则提示词会直接写入inputOptions.prompt并被同样截断。替换函数对字符串、数组、嵌套对象均做深度遍历因此images: [{ value: {{IMAGE}} }]这类结构也能被正确填充。5.3 任务模型异步执行与状态推送Replicate 的run()是阻塞式等待完成的调用但接口约定要求generate()立即返回任务句柄因此实现上将生成放入后台任务replicate.ts// 返回句柄后立即返回后台异步执行 const jobId request.extra?.internalJobId || Math.random().toString(36).slice(2) this.runGeneration(jobId, model, inputOptions) return { jobId, providerJobId: jobId }runGeneration内部调用this.replicate.run(model, { input })并对返回值做三种形态的兼容提取replicate.tsSDK 新版本返回的FileUpload对象——取其url().href带字符串url属性的对象——直接取url纯字符串——URL 本身。提取到的 URL 必须是http或data:前缀否则按失败处理。状态机通过updateStatus写入jobResultsMap 并触发callbacks中注册的回调完成后延迟 10 秒清理回调与结果防止内存泄漏。主进程侧的 artistry-bridge.ts 会优先检测setJobCallbackReplicate 提供商支持回调因此走回调等待分支对不支持回调的提供商则退化为每 2 秒轮询一次getStatus整体超时 5 分钟artistry-bridge.ts。无头生成路径generateHeadless还额外做了请求去重以提示词、模型、提供商、参数与全局配置的 SHA-256 指纹合并完全相同的在途请求避免重复计费artistry-bridge.ts。此外widget 触发链路还有一个触发指纹防护同一 widget 实例只有当mode:remixId:prompt组合发生变化时才会真正发起新的计费调用artistry-bridge.ts用于防止响应式 UI 循环造成的重复云端调用失败时会清除指纹以允许重试。六、第三步验证配置打开设置 → 艺术选择Replicate对应globalProvider置为replicate配置完整度由前述configured计算属性把关使用一条不含敏感信息的提示词生成图片成功返回图片即表示 Token、模型 ID 和账户额度均可用。由于artistry/comfy组件的 widget 在桥接层被强制设为无限 TTLLiving Wall 模式见 artistry-bridge.ts生成完成前组件会持续显示 running 状态与actionLabel如 Requesting cloud generation...可直接据此观察任务进展。七、排查指南结合文档与实现把排查项落到具体代码位置症状排查方向代码依据认证失败检查 Token 是否粘贴完整应以r8_开头未配置时generate()直接抛出 Missing API Keyreplicate.ts请求被拒绝/失败检查账户额度、模型访问权限、模型 ID 是否为 Replicate 页面显示的精确owner/model字符串模型解析链路replicate.ts L58输出无法识别模型返回的输出若不是可识别的图片 URL/对象会报 Output does not contain a recognizable image URLreplicate.ts生成结果不符合预期先确认目标模型支持的比例与参数范围不同模型的 schema 差异很大如aspect_ratio与width/height并存时以模型为准再降低推理步数或更换模型参数合并优先级replicate.ts L61-L82长提示词被截断提示词超过 380 字符会被截断并追加...日志中可见 Truncating promptreplicate.ts5 分钟后超时无头/轮询路径整体超时为 5 分钟超时状态为 errorartistry-bridge.ts失败状态下 widget 会保留错误信息actionLabel: Error: ...截取前 50 字符主进程日志前缀为providers-replicate可据此过滤定位具体报错。八、小结AIRI 的 Replicate 集成是一个配置最小化 参数可扩展的设计渲染进程只保存 API 密钥、默认模型、宽高比、推理步数四项持久化配置其余细节通过预设REPLICATE_IMAGEGEN_PRESETS/REPLICATE_IMAGEEDIT_PRESETS与providerOptionsJSON 覆盖机制注入主进程侧统一走ArtistryProvider接口配合占位符替换、380 字符截断、回调式状态推送与触发指纹去重在免部署的前提下提供可控的云端图像生成链路。若你需要更强的工作流定制可参考同级的 ComfyUI 配置文档 对比两种方案的取舍。赞分享人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载相关推荐AIRI 接入 Replicate 云图像生成从 API Token 配置到源码级原理解析AIRI 接入 Replicate 云图像生成从 API Token 配置到源码级原理解析 AIRI 的 Artistry 模块支持多种图像生成后端其中 RAI 应用人工智能大模型数字人AI Agent语音前端后端桌面应用移动开发即时通讯3D渲染BrewUI Doctor功能教程一键诊断并修复你的Homebrew环境BrewUI Doctor功能教程一键诊断并修复你的Homebrew环境 BrewUI 是 Homebrew 官方推出的 macOS 图形界面客户端而它的桌面应用开发工具AutoGPT Platform 图像生成进阶深入解析 Replicate Flux Advanced Block 的完整配置与工作原理AutoGPT Platform 图像生成进阶深入解析 Replicate Flux Advanced Block 的完整配置与工作原理 导读 本文围绕 Au人工智能AI Agent自主智能体Agent 工作流工作流自动化后端前端上一篇如何攻克AI评估面试题LLM-as-a-Judge、红队测试与幻觉检测详解下一篇forkd doctor 17项预检清单KVM、hugepages、uffd_wp不通过逐项排查与修复指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考