
IntentKit Venice 图像生成工具集基于 Venice AI 的多模型文生图实战指南【免费下载链接】intentkitIntentKit is an open-source, self-hosted cloud agent cluster that manages a collaborative team of AI agents for you.项目地址: https://gitcode.com/GitHub_Trending/int/intentkit导读本文面向在 IntentKit 中为 Agent 装配图像生成能力的开发者与运营者完整讲解venice_image工具集中 7 个文生图子工具的模型选型、参数体系、调用方式与底层实现。文章以 image_generation/README.md 为核心骨架结合 image_generation 目录 下的真实源码、schema.json 与 API 封装层逐项还原参数默认值、请求载荷构造、S3/CDN 存储链路与错误处理机制。读完本文你将能够为 Agent 正确启用并调优任意一个 Venice 文生图模型理解prompt / cfg_scale / style_preset / safe_mode等关键参数对生成结果的实际影响并掌握一次完整调用从提示词到可访问 URL 的全过程。一、功能定位Agent 内建的自然语言图像合成能力Venice 图像生成工具集工具类别名venice_image的核心目标是让 Agent 能够仅凭一段自然语言提示词prompt直接合成全新图像。它不是一张静态图片而是 IntentKit 工具注册体系中一个独立的工具类别归属于 intentkit/tools/venice_image 目录。从 venice_image/init.py 的源码结构看该类别共注册 10 个工具除本文聚焦的 7 个生成类子工具外还包括image_enhance局部增强、image_upscale2x/4x 放大与image_vision图像理解三个配套能力。所有生成子工具均继承自同一个基类因此遵循同一套参数协议——这就是原文档强调的Unified Interface每个模型是独立子工具但共享相同的核心选项Agent 无需为不同模型学习不同的调用方式。支持的模型一览子工具名namemodel_id定位与擅长领域prompt 上限尺寸约束venice_image_generation_fluently_xlfluently-xl专业写实、光影与艺术质感注重解剖结构正确性1500 字符2048×2048宽高需为 8 的倍数venice_image_generation_flux_devflux-devBlack Forest Labs 出品120 亿参数 rectified flow transformer适合研究与创新工作流2048 字符2048×2048宽高需为 8 的倍数venice_image_generation_flux_dev_uncensoredflux-dev-uncensoredflux-dev 的无审查版本允许不受限制的内容含 NSFW2048 字符2048×2048宽高需为 8 的倍数venice_image_generation_lustify_sdxllustify-sdxl照片写实 SDXL 检查点以 NSFW 为主但同样支持 SFW 内容物体、动物、幻想题材1500 字符2048×2048宽高需为 8 的倍数venice_image_generation_pony_realismpony-realism高细节动漫/角色设计配合 Danbooru 标签如score_9、female/male效果最佳被标记为most_uncensored1500 字符2048×2048宽高需为 8 的倍数venice_image_generation_venice_sd35venice-sd35Stability AI Stable Diffusion 3.5 LargeMMDiT 架构面向艺术、插画与设计内容1500 字符2048×2048宽高需为 16 的倍数venice_image_generation_stable_diffusion_3_5stable-diffusion-3.5SD3.5 Large 的备用 model_id 入口能力与上者一致1500 字符2048×2048宽高需为 16 的倍数以上信息取自各模型子工具的类定义例如 image_generation_fluently_xl.py、image_generation_flux_dev.py 与 image_generation_venice_sd35.py。每个子工具只声明name、model_id、price统一为 50 积分与description参数解析与执行逻辑全部继承自基类这解释了为什么所有模型行为一致。二、启用与可见性控制schema 状态机与配置结构在调用任意生成子工具之前需要先在工具配置中启用该类别并设定每个子工具的可见性。整个配置契约由 schema.json 定义enabledboolean默认false工具类别总开关。若为falseget_tools会直接返回空列表所有子工具不可用见 venice_image/init.py 中if not config.get(enabled, False): return []。statesobject每个子工具独立的状态值取值为三态枚举disabled对所有人关闭publicAgent 所有者 所有用户可见private仅 Agent 所有者可见。状态过滤逻辑位于 venice_image/init.py 的get_tools函数遍历config[states]跳过disabledpublic恒启用private仅在is_privateAgent 所有者上下文时启用。工具实例通过工厂函数get_venice_image_tool按名称映射到类_TOOL_NAME_TO_CLASS_MAP并使用进程级_cache缓存——因为工具是无状态的只依赖配置与存储缓存可避免重复实例化。一个典型的启用片段JSON 风格{ enabled: true, states: { image_generation_fluently_xl: public, image_generation_flux_dev: public, image_generation_flux_dev_uncensored: private, image_generation_lustify_sdxl: disabled, image_generation_pony_realism: private, image_generation_venice_sd35: public, image_generation_stable_diffusion_3_5: disabled }, safe_mode: true, hide_watermark: true, embed_exif_metadata: false, negative_prompt: (worst quality: 1.4), bad quality, nsfw }其中safe_mode / hide_watermark / embed_exif_metadata / negative_prompt为类别级默认参数可在工具配置中被覆盖其默认值定义在 base.py 的getToolsetConfig与 config.py 的VeniceImageConfig中。另外该工具集是否可用还依赖系统级配置venice_api_key——available()函数venice_image/init.py仅在配置了 Venice API Key 时返回True。三、输入参数详解字段、默认值与底层校验所有生成子工具共享同一套输入协议其 Pydantic 模型定义在 image_generation_input.py。下表完整继承原文档的参数说明并补充了源码中的约束与默认值字段类型说明必填默认值源码约束promptstring图像内容的核心描述越具体、越详细效果越好是—各模型上限 1500/2048 字符model_idstring使用的 AI 模型由每个子工具内部硬编码N/A硬编码见第一节模型表widthint输出图像宽度像素否1024最大 2048Flux/SDXL 系需为 8 的倍数SD3.5 系需为 16 的倍数heightint输出图像高度像素否1024最大 2048倍数约束同上formatpng \| jpeg \| webp输出图像格式否png字面量校验style_presetstring枚举视觉风格预设如Photographic、Anime、Abstract等否Photographic完整列表见下文negative_promptstring希望排除的元素或概念如nsfw, low quality否工具集默认(worst quality: 1.4), bad quality, nsfw未传时取toolConfig.negative_promptseedint随机种子复用相同值可复现结果否随机None时由 API 随机cfg_scalefloat约 1–20提示词保真度越高越贴近提示词越低多样性越强否7.5载荷构造时cfg_scale or 7.0return_binarybool恒为False输出为托管 URL 而非内联二进制N/AFalse载荷硬编码safe_modebool开启后对 NSFW 内容进行过滤/模糊继承true类别级配置默认Trueembed_exif_metadatabool开启后把提示词等信息写入输出文件 EXIF 元数据继承false类别级配置默认Falsehide_watermarkbool尽可能隐藏 Venice 水印继承true类别级配置默认True字段级校验逻辑见 image_generation_input.pywidth/height使用 PydanticField(le2048)强制上限format使用Literal限定三种取值cfg_scale注释明确给出 1–20 的推荐区间。3.1 风格预设Style Presets原文档指出预设超过 30 个并指向 schema。源码中 image_generation_input.py 的STYLE_PRESETS列表实际定义了78 个可用值按主题归类如下艺术流派Photographic、Anime、Cinematic、Digital Art、Abstract、Cubist、Graffiti、Hyperrealism、Impressionist、Pointillism、Pop Art、Psychedelic、Renaissance、Steampunk、Surrealist、Typography、Watercolor、Minimalist、Monochrome、Gothic3D / 材质 / 手工3D Model、Craft Clay、Isometric Style、Line Art、Lowpoly、Origami、Pixel Art、Texture、Collage、Flat Papercut、Kirigami、Paper Mache、Paper Quilling、Papercut Collage、Papercut Shadow Box、Stacked Papercut、Thick Layered Papercut摄影 / 电影质感Analog Film、Enhance、Food Photography、Real Estate、Film Noir、HDR、Long Exposure、Neon Noir、Silhouette、Tilt-Shift游戏与流行文化Fighting Game、GTA、Super Mario、Minecraft、Pokemon、Retro Arcade、Retro Game、RPG Fantasy Game、Strategy Game、Street Fighter、Legend of Zelda题材 / 情绪 / 场景Advertising、Fantasy Art、Neon Punk、Dreamscape、Dystopian、Fairy Tale、Grunge、Horror、Nautical、Space、Stained Glass、Techwear Fashion、Tribal、Zentangle、Alien、Disco、Architectural预设值在模型的description中被动态拼入如 image_generation_fluently_xl.py 第 24 行Agent 因而可以在工具描述中直接看到可用列表。3.2 提示词示例In the style of a Renaissance oil painting, a fierce orange tabby cat with a crown, surrounded by lush velvet drapery and golden sunlight.一个完整的最小可运行请求JSON{ prompt: A highly detailed portrait of a robot playing chess, cinematic lighting, photoreal 4k, width: 1536, height: 1024, format: jpeg, style_preset: Cinematic, cfg_scale: 10, negative_prompt: text, watermark, blurry, seed: 424242 }注意width: 1536、height: 1024均为 8 的倍数满足 Fluently XL 等模型的尺寸约束。四、在 Agent 中调用从提示词到图像 URL原文档给出了伪代码调用范式实际在 IntentKit 中Agent 通过统一的send_tool机制按工具名调用示例如下result await agent.send_tool( venice_image_generation_fluently_xl, { prompt: A futuristic cityscape at sunset, neon lights, flying cars, cinematic, style_preset: Cinematic, width: 1280, height: 704 } ) url result[image_url]从 image_generation_base.py 的_arun执行链路看一次调用的完整流程是通过getToolsetConfig(context)读取 Agent 的工具配置含safe_mode、hide_watermark、embed_exif_metadata、默认negative_prompt调用apply_venice_rate_limit(context)——若配置了rate_limit_number与rate_limit_minutes则按number次 /minutes * 60秒的窗口对用户限流组装请求载荷见第五节调用post(/api/v1/image/generate, payload, context)发起 API 请求解码 base64 图像、计算 SHA256、写入 S3 对象存储返回 CDN URL。4.1 真实的载荷构造_arun中构造的完整载荷如下摘自 image_generation_base.py注意steps固定为 30return_binary固定为Falsecfg_scale为空时回退到 7.0payload { model: self.model_id, prompt: prompt, width: width, height: height, seed: seed, format: format, steps: 30, safe_mode: toolConfig.safe_mode, hide_watermark: toolConfig.hide_watermark, embed_exif_metadata: toolConfig.embed_exif_metadata, cfg_scale: cfg_scale or 7.0, style_preset: style_preset, negative_prompt: final_negative_prompt, return_binary: False, } # 剔除 None 值后发送 payload {k: v for k, v in payload.items() if v is not None}seed为None时会被剔除交给 Venice API 自行随机negative_prompt未显式传入时使用类别默认值。五、输出格式成功、失败与对象存储链路5.1 成功响应原文档给出的返回结构为包含success、image_url、seed、generation_time_s的字典。结合源码实际返回还包含image_bytes_sha256与 API 回传的请求元数据{ success: true, image_url: https://s3.my-storage.net/venice_image/fluently-xl/abc123f....png, seed: 424242, generation_time_s: 22.4, image_bytes_sha256: 3f8a...图像内容的 SHA256 哈希 }图像存储链路image_generation_base.py 与 api.pyVenice API 返回 base64 编码的images[0]工具先base64.b64decode还原字节流计算hashlib.sha256(image_bytes).hexdigest()作为内容寻址哈希构造存储 keyvenice_image/{model_id}/{image_hash}.{file_extension}扩展名取自 API 回传的request.data.format回退到请求中的format参数调用 clients/s3.py 的store_image_bytes写入对象存储再通过get_cdn_url生成可公开访问的 CDN URL 放入image_url字段。这意味着同一提示词与种子生成的相同图像会因内容哈希一致而被去重存储同时 Agent 拿到的永远是可访问的托管链接而非内联二进制。5.2 失败响应{ success: false, error: API returned error: prompt too long, result: null }错误处理有两层兜底见 api.py网络层httpx.AsyncClient(timeout180.0)任何RequestError或未知异常被捕获为{success: False, error: Connection error: ...}HTTP 层非 200 响应尝试解析 JSON 中的message/detail字段作为错误信息JSON 解析失败时回退为状态码与响应文本。在 image_generation_base.py 中API 错误被包装为ToolExceptionVenice Image Generation API error: ...向上抛出base64 解码失败、图像数据为空同样以ToolException形式暴露。5.3 响应分派机制make_venice_api_request的_handle_response会根据响应头content-type分派若200且类型以image/开头生成类工具实际使用 JSON 返回 base64此分支主要服务 upscale 等二进制返回场景直接落 S3 并返回{success: true, result: CDN URL}否则按 JSON 解析。请求头Accept: image/*, application/json表明该 API 层同时兼容两类响应。六、高级能力局部重绘Inpainting与 EXIF 元数据6.1 局部重绘生成基类虽未在_arun中透传inpainting参数但输入协议已完整定义该结构image_generation_input.py供具备重绘能力的 Venice 模型端点使用{ inpainting: { image_url: https://.../original.png, strength: 50, mask: { image_prompt: 对原始图像的文本描述需包含用户将要重绘的部分, inferred_object: 通过重绘新增的内容, object_target: 原图中要被覆盖重绘的元素 } } }其中strength取值范围 0–100Pydanticge0, le100控制重绘强度mask包含三个必填字段image_prompt对原图的描述含将被修改的特征、inferred_object重绘新增的内容、object_target原图中被重绘覆盖的元素。6.2 EXIF 元数据当类别配置embed_exif_metadata: true时请求载荷会携带该字段Venice API 将把提示词与生成参数写入输出图像的 EXIF 元数据便于溯源与归档。默认关闭见 config.py。七、配置默认值速查与调优建议以下默认值来自 config.py 与 base.py是类别级配置的真实回退值配置项默认值说明safe_modetrue对成人内容进行模糊/过滤建议涉及公共可见工具时保持开启hide_watermarktrue尽可能移除 Venice 水印embed_exif_metadatafalse是否将提示词写入 EXIFnegative_prompt(worst quality: 1.4), bad quality, nsfw未显式传negative_prompt时使用rate_limit_numberNone不限时间窗口内最大调用次数rate_limit_minutesNone不限限流时间窗口分钟调优建议追求复现固定seed并保持cfg_scale、style_preset、negative_prompt一致贴近提示词调高cfg_scale10–20 区间更严格探索多样性调低至 1–7NSFW 场景只有flux_dev_uncensored、lustify_sdxl、pony_realism具备无审查能力safe_mode的过滤效果因模型而异公共场景务必评估内容政策尺寸合规Flux/SDXL 系列宽高必须是 8 的倍数SD3.5 系列必须是 16 的倍数否则 API 可能报错防滥用为private状态的模型单独配置rate_limit_number/rate_limit_minutes限流在 base.py 的apply_venice_rate_limit中按用户维度执行。八、典型使用场景艺术与设计即时产出草图、情绪板或成品图加速创意迭代营销与内容为博客、社媒、广告、封面快速生成视觉灵感构思与研究可视化概念、发明构想或假设场景教育按需生成教学视觉素材角色/概念设计利用动漫向模型如 Pony Realism生成头像、原创角色与漫画素材。九、限制与合规注意提示词与模型决定上限生成质量取决于提示词质量与模型选择工具本身不做内容增强NSFW 过滤因模型而异不同模型的审查强度不同safe_mode只提供一层保护请结合模型描述判断风格与题材组合受限并非所有风格预设都适用于所有模型许可证约束flux-dev系列遵循 FLUX.1 [dev] 非商用许可SD3.5 系列须遵守 Stability AI 可接受使用政策两处约束分别写于 image_generation_flux_dev.py 与 image_generation_venice_sd35.py 的描述中使用服务前务必遵守 Venice AI 服务条款与被选模型的许可条款。十、延伸阅读工具集总览与配置契约intentkit/tools/venice_image/README.md、schema.json生成基类与载荷构造image_generation_base.py输入参数与风格预设完整列表image_generation_input.pyAPI 封装与 S3 存储链路api.py、clients/s3.py同类别配套工具图像增强 image_enhance、放大 image_upscale、理解 image_vision【免费下载链接】intentkitIntentKit is an open-source, self-hosted cloud agent cluster that manages a collaborative team of AI agents for you.项目地址: https://gitcode.com/GitHub_Trending/int/intentkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考