好文集ChatGPT Plus¥119

图片存下来了,Prompt 呢?

文章目录

我以前经常遇到一个挺烦的情况。

在 ChatGPT 里折腾半天,终于出了一张满意的图。我把图片存下来,准备以后复用这套画风,或者拿它继续改。

然后我发现:图片是存下来了,但我已经想不起来它是怎么来的。

当时输入的 Prompt 是哪一版?

中间改了几轮?哪一轮换了光线,哪一轮改了服装?

最初上传的参考图是哪几张?

如果这张图是从上一张继续改出来的,它到底继承了哪些内容?

聊天记录里可能有答案。但一个会话里上百条消息,几个 Project 又混在一起时,回去翻记录很快就变成了体力活。

所以我开始想做一个工具,把 ChatGPT 里的生图内容导出来。

最开始看起来,这似乎就是个“把图片存下来”的问题。

真正做起来之后我才发现,图片下载反而是最简单的部分。难的是:怎么把图片和它对应的创作过程,准确地放在一起。

图片不是全部,创作过程也得跟着走

假设我先输入一段 Prompt,生成了古风人像。

接着我说:“把背景换成霓虹街道,人物不变。”

这时又生成了一张新图。

如果工具只是把会话里的图片和 Prompt 全部抓下来,可能会出现两种情况:要么所有 Prompt 混成一团,要么后面那条“霓虹街道”被错误地挂到前面的古风图上。

图片还在,因果关系却错了。

对创作者来说,这会让归档失去很多价值。因为我想找的不只是“那张图”,而是:

  • 它是由哪条基础 Prompt 生成的;

  • 后续做过哪些修改;

  • 哪些参考图参与了生成;

  • 这几轮修改最后分别产生了什么结果。

我希望保存下来的,是一条能回头看懂的创作链路。

第一个麻烦:聊天里提到 Prompt,不代表它真是 Prompt

传统做法很容易从文本关键词入手:看到“背景”“图片”“Prompt”之类的词,就把附近的消息当作提示词。

但聊天里的这句话:

给你的插件增加一个 Prompt 导出功能。

显然不一定是生图 Prompt。

还有“背景为什么不对?”“这张图有个问题”——它们提到了背景和图片,却只是普通交流。

所以我把判断重点放在图片生成的上下文上:这条用户消息后面是否确实出现了生成结果?它与这张图之间有没有明确的先后关系?

这也不是说只要前面有文字、后面有图,就一定能百分之百判断正确。真实会话可能包含多张图、多次修改,甚至穿插闲聊。工具需要尽可能依照生成顺序和消息关系来识别,而不是单靠几个关键词猜。

第二个麻烦:修改只写了半句话,单独看根本不完整

很多时候,后续修改不会再把完整 Prompt 重写一遍。

比如:

背景换成纯白,人物和光线保持不变。

这句话单独拿出来,不知道人物是谁、原来的光线是什么,也不知道参考图在哪里。

它其实是接在上一版之后的一次增量修改。

所以工具会把创作过程分成两部分:

Base Prompt:这条创作链最初的基础提示词。

Revision:在前一版基础上追加的修改。

例如第三张图的上下文可以理解为:

Image 3 = Base Prompt + Revision 01 + Revision 02

这样回头看结果时,不用猜“这一张当时到底改了什么”。基础内容和每轮变化都能一起找到。

而且时间顺序很重要。后面才出现的 Prompt,不应该反过来影响更早生成的图片。后续把画风改成赛博朋克,不能让前一张古风图的记录也跟着变。

参考图和生成结果,也不能混为一谈

我做视觉探索时,经常会上传截图、摄影作品或者风格参考。

这些参考图是创作输入,不是 AI 生成的成果。

如果把它们和生成图不加区分地一起导入素材库,图片越存越多,最后很难看出哪些是参考、哪些是产出。

所以我把图片分成三类:

  • Generated:AI 新生成的图片;

  • Edited:基于参考图或上一版继续修改得到的图片;

  • Reference:用户上传的参考图、截图或垫图。

默认导出 Generated 和 Edited。Reference 可以作为输入信息记录下来,例如“本次使用了 2 张参考图”;如果确实需要,也可以再开启参考图导出。

这样处理之后,图库里至少能先看清哪些是创作结果,哪些是创作时用到的材料。

为什么要把信息写进 Eagle 注释?

图片放进本地文件夹,解决的是“文件放在哪里”。

但之后想按项目、主题或创作过程找回来,文件夹本身不一定够用。

我平时会用 Eagle 管理视觉素材,所以这个工具也接了本机运行的 Eagle。导入图片时,除了图片本身,还会把创作信息写进素材注释里,像这样:

【Base Prompt】 白发少女,黑色背景,清冷光影……

【Revision 01】 背景换成纯白,人物与光线保持不变。

【Input Reference】 使用 1 张用户参考图

Chain #1 Type: REVISION Image: EDITED

同时还可以补充 ChatGPT、Generated、Edited 等标签;如果会话属于某个 Project,也能把 Project 信息带进素材标签。

对我来说,这一步的意义是:以后在 Eagle 里看到图片时,旁边还能找到它的来源和修改过程,不必再打开聊天记录拼线索。

工具通过浏览器和本机 Eagle 通信,图片与资料留在本地处理。这不代表任何本地软件都天然没有安全风险;它只是避免了为了导出再把素材交给第三方云端中转。

长对话和批量导出,最容易在细节上出问题

ChatGPT 页面不会把所有历史消息一直放在当前页面里。长对话通常会按需加载内容,所以只读取当前页面上能看到的部分,可能漏掉前面的图片和提示词。

另外,一次导出很多图片时,也会遇到重复导入、请求过快、网络中断等问题。

目前这版工具围绕这些情况做了几类处理:

  • 增量记录:通过会话、消息和图片资产等信息记录已成功导出的内容,重复运行时可以跳过已完成项目;

  • 内容去重:可选用图片内容的 SHA-256 指纹判断完全相同的文件;

  • 分批处理:图片按批次提交给 Eagle,减少一次塞入太多文件造成的压力;

  • 请求等待与重试:遇到请求频率限制时,读取可用的等待时间;否则按退避策略重试;

  • 断点续传:批量任务中断后,保留已经完成的会话,下次可以接着处理;

  • 手动触发:打开插件后不会自动开始批量请求,需要用户主动确认后才执行。

这些处理不能保证网页结构或服务端接口以后都不会变化。当前“完整对话模式”依赖 ChatGPT 网页中的会话数据;如果页面结构调整,工具可能需要跟着适配。插件也保留了 DOM 模式作为一种降级方案。

它现在还做不到什么?

我觉得发布一个工具时,最好把暂时没覆盖的范围也交代清楚。

当前版本还没有扫描 ChatGPT 全局 Images 图片库。某些图片如果只留在全局图片库、没有保存在可读取的会话脉络里,这一版可能不会补回来。

当前重点仍然是:把会话里的生成结果、提示词和修改顺序一起导出来。

所以它不是“所有图片都能找回来”的恢复工具,也不能替代你对重要文件做备份。它解决的是我自己创作过程中反复遇到的一件事:图片找到了,但当时怎么做出来的,找不到了。

我为什么把它开源?

这工具一开始就是我为了自己的工作流做的。

我不想每次看到一张满意的图,都再去聊天记录里翻一遍;也不想把参考图、生成图和修改过程全混在一个文件夹里。

做到后来,我发现自己真正需要的不是一个更快的“下载器”,而是一套能把图片和上下文一起留下来的归档方式。

源码已经放在 GitHub:

TideKnight/voxcat-chatgpt-prompt-eagle-exporter

当前文档对应的版本是 VOXCAT: ChatGPT Prompt & Eagle Exporter v0.4.2-beta1。安装方式和具体功能,以仓库里的说明为准。

如果你也经常在 ChatGPT 里做视觉探索,可能会懂这种感觉:出图时花了很多轮,最后真正想留下来的,不只是那张成片,还有它一路走到这里的过程。

全文完
查看原文