ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenInterpreter imagegen 工具实战:image_gen.imagegen 图像生成与编辑的完整指南

OpenInterpreter imagegen 工具实战:image_gen.imagegen 图像生成与编辑的完整指南 OpenInterpreter imagegen 工具实战image_gen.imagegen 图像生成与编辑的完整指南【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter本文基于 OpenInterpreter 仓库中的工具描述文件 imagegen_description.md 展开系统讲解image_gen.imagegen工具的适用场景、调用参数prompt、referenced_image_paths、num_last_images_to_include与全部使用准则并结合 codex-rs/ext/image-generation 扩展的 Rust 源码剖析其请求构造逻辑、固定生成参数、历史图片回溯机制与产物落盘规则。读完后你可以准确理解该工具在对话式图像生成/编辑任务中的行为边界以及模型端调用它时必须遵守的约束与错误语义。imagegen 工具定位何时生成新图何时编辑已有图image_gen.imagegen工具的核心能力是根据文字描述生成新图像或依据具体指令编辑已有图像。该描述文件被直接编译进工具规范中——tool.rs 通过include_str!(../imagegen_description.md)将 Markdown 原文作为工具的description字段暴露给模型因此文档中的每一句准则都是模型在调用该工具时的行为契约。文档明确指出两类适用场景按描述生成新图用户要求基于场景描述产出图像例如示意图diagram、肖像、漫画、表情包meme等任意视觉内容编辑已有图像用户要求对已附加或先前生成的图像做定向修改包括增删元素、调整颜色、提升质量/分辨率、风格转换如转为卡通、油画风格。文档同时强调了一条默认路由原则除非用户明确要求用其他方式否则图像编辑一律使用本工具未被明确指示时不要改用python工具处理图像编辑。这一条从源码侧也可以印证工具在扩展中的注册名为imagegen、命名空间为image_gen见 lib.rs并以ToolExposure::Direct方式直接暴露给模型同时通过嵌套的 code-mode 工具面可被代码模式访问tool.rs。参数模型三个字段与互斥规则文档中所有关于referenced_image_paths与num_last_images_to_include的准则对应源码中一个严格反序列化的参数结构deny_unknown_fields出现未声明字段即解析失败参数类型约束说明promptstring必填生成/编辑的文字描述referenced_image_pathsstring[]绝对路径最多 5 个当每个目标图像都有本地文件路径时使用num_last_images_to_includeint1–5且必须实际取得等量图片仅当至少一个目标图像没有本地文件路径时使用关键互斥与兜底规则逐条来自描述文档并可与源码行为一一对应全新生成两个引用参数都必须省略。源码 request_for_call_args 中(paths.is_empty() true, num None)分支会直接构造ImageGenerationRequest编辑场景所有目标图像都有本地路径 → 用referenced_image_paths至少一个没有 → 用num_last_images_to_include未看过的本地图先检查如果尚未查看过某张本地图片先调用view_image查看再编辑取最小够用窗口num_last_images_to_include应设为能覆盖全部目标图像的最小近期对话图片数量上限 5源码常量MAX_EDIT_IMAGES 5tool.rs两者绝不能同时提供源码对该组合直接返回错误provide only one of referenced_image_paths or num_last_images_to_includetool.rs并有对应测试 conflicting_image_selectors_return_tool_error 验证兜底求助若两种机制都无法覆盖全部目标图像应请用户重新附加缺失的图片。源码层还有两条文档未展开、但调用方应当知道的硬限制超过 5 个路径会先于读文件就报错referenced_image_paths must contain at most 5 paths测试 too_many_referenced_image_paths_return_tool_error用num_last_images_to_include请求 N 张但历史中实际只能找到少于 N 张时会报错requested the last N conversation images, but only M were available测试 recent_image_fallback_requires_requested_count。请求构造生成与编辑的统一参数无论走生成还是编辑分支源码都会填充一组固定的服务端参数tool.rs字段生成Generate编辑Editmodelgpt-image-2常量IMAGE_MODELgpt-image-2qualityAutoAutosizeautoautobackgroundAutoAutonNone取响应中第一张图None编辑请求与路径选择的细节值得注意路径式编辑对每个referenced_image_paths中的路径工具在会话环境带文件系统沙箱上下文中读取字节经load_for_prompt_bytes(..., PromptImageMode::Original)处理后转为 data URL 传给后端image_url。读取或处理失败都会转换为面向模型的错误信息指明具体路径若会话中根本没有可用环境会报referenced image paths are unavailable in this session。历史窗口式编辑recent_images会从最近的对话历史倒序扫描收集三类来源的图片——用户消息中的InputImage、与既有FunctionCall/CustomToolCall的call_id匹配的函数/自定义工具输出中的图片以及ImageGenerationCall结果被重新编码为data:image/png;base64,...。孤立orphan的工具输出图片会被 call_id 匹配逻辑排除源码注释也说明无路径图片没有稳定引用该窗口机制是尽力而为可能包含更新的无关图片。测试 recent_image_fallback_selects_newest_images_in_chronological_order 验证了它按最新优先、结果按时间正序选择并正确跳过孤儿输出。执行流程、事件与产物落盘工具执行链路handle_call大致为解析参数并构造请求通过turn_item_emitter发出ImageGenerationBegin事件状态in_progress调用后端generate/edit完成图像处理成功后将结果 base64 解码、写入产物路径发出带saved_path、transparent_background的结束事件失败则发failed状态并把错误回传给模型。关于产物落盘artifact.rs若配置了save_root图片会保存到save_root/generated_images/session_id/call_id.png其中 session/call ID 会被清洗为仅含[A-Za-z0-9-_]其余字符替换为_测试 artifact_path_sanitizes_session_and_call_ids 验证了../session会被清洗为___session落盘失败只记录 warn 日志、不阻断返回图片仍以 base64 形式回给模型返回给模型的输出除图像本身外还会附带一段output_hint文本说明图片默认保存目录、复制到别处而保留原件的约定以及图片已展示给用户、无需在最终回复中再用 Markdown 渲染的提示hint 超过 1024 字节时会被整体省略常量MAX_IMAGE_GENERATION_OUTPUT_HINT_BYTES测试 generated_output_omits_oversized_output_hint。后端通信方面backend.rsCodexImagesBackend经由当前配置的模型 provider 与鉴权信息构造ImagesClient发送请求并附加两个请求头x-codex-image-turn-id当前 turn ID用于请求关联以及可选的 originator 头。工具是否可用由扩展的可用性判定控制仅当模型 provider 属于 OpenAI 或需要 OpenAI 鉴权含 actor 授权时ToolContributor才会注册该工具extension.rs。code-mode 下的调用准则exec 超时与 generatedImage()文档中最具实操性的一条准则针对 code-mode代码模式下的长时间调用imagegen 需要几分钟才能完成。在 code-mode 中使用首行exec指令给首次调用 120 秒超时后续等待沿用相同的让渡yield时长完成后用generatedImage(result)返回图像。这条准则与源码中的 code-mode 支持严格对应GeneratedImageOutput::code_mode_result会把结果封装为{image_url: data:image/png;base64,..., output_hint: ...}对象正是 code-mode 中generatedImage()辅助函数所消费的结构tool.rs测试 generated_output_returns_generated_image_helper_input_in_code_mode。而生成后保持沉默的准则——不要提下载、不要总结图片、不要追问、生成图像后什么都不要再输出——则是为了配合图片已直接展示给用户的产品行为工具输出中携带的output_hint同样声明了这一点避免模型在图像之后再生成冗余的展示或说明。小结一条可对照执行的调用清单把文档准则与源码约束合并可得到一份可直接对照执行的调用清单全新图像只传prompt省略两个引用参数编辑且有本地路径传referenced_image_paths≤5绝对路径先view_image未看过的图编辑且无本地路径传num_last_images_to_include1–5取能覆盖全部目标的最小值两参数互斥且都不能覆盖全部目标时请用户重新附图满足条件就直接生成不做多余确认code-mode 下首行exec给 120 秒完成后generatedImage(result)生成结束后不再输出任何关于下载、总结或后续提问的内容。所有规则均有对应测试覆盖集中于 codex-rs/ext/image-generation/src/tests.rs可作为行为验证的权威依据。【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表