最近我在Coze上搭了一个历史主题图片生成器,输入“宋代街头的茶坊”这种一句话,它就能给我生成四张宋代市井风味的图。这套东西折腾了两周,从最初只会输出“古装美女”的玩具,到后面能区分唐宋明清的服饰场景,中间踩了不少坑。今天把完整的搭建过程、节点配置和调试经验都整理出来。
这个生成器的核心玩法,是用Coze工作流把大模型的文案能力和图像生成插件串成一条流水线:用户输入历史主题,先让LLM节点把需求拆成结构化的画面要素,再去知识库里校验朝代、服饰、器物这些关键信息,最后交给图像生成节点出图。整个流程不需要写代码,在可视化画布里拖拽节点就能完成。
如果你平时做历史科普内容、古风设计,或者单纯想系统学一下Coze工作流的落地方法,这篇应该能给到一套可以直接照抄的参考方案。
1. 为什么用工作流做历史图片生成,而不是让Agent自由发挥
1.1 直接对话生成图片的三个坑
最早我想得简单,直接在Coze智能体里挂一个“图片生成”工具,然后开始对话让它画图。试下来的结果非常不稳定,主要就三个问题。
第一是意图漂移。我说“画一个唐代仕女”,它确实会画一个古装女性,但发型、妆容、服饰经常混搭,有时候会出现清代旗头配唐代襦裙这种离谱组合。原因是模型在自由对话状态下,很难主动去关联“唐代”背后那套复杂视觉知识。
第二是不可控的prompt发散。AI生成图片靠的是提示词,直接对话时,模型写的提示词风格每张都不同,有的偏水墨,有的偏写实,有的偏二次元。同一个历史主题,前后两次生成的结果风格跳跃很大,没法做系列图。
第三是没有“校验”这一步。历史图像最重要的是细节准确,比如宋代女子常穿褙子,唐代女子流行齐胸襦裙。直接丢给模型,它没有校验能力,经常画错。即使错了,你在对话里也很难查它到底哪来的依据。
所以用工作流,本质上是给AI加了一条可控的“流水线”,每个环节的职责都固定下来,输出自然就更稳定。
1.2 工作流等于一条“可视化生产流水线”
Coze工作流给我的感觉,很像工厂里的生产流水线。用户输入是原料,每个节点是一台加工设备,节点之间的连线就是传送带。原料经过打磨、质检、组装,最终变成成品图片。
和自由对话相比,工作流有一个核心优势:确定性。同一个输入进来,走的路径、调用的模型、使用的提示词模板都是固定的,不会每次自由发挥。这在批量做图的时候特别重要,尤其是历史主题这种需要风格统一、知识准确的内容。
另一个优势是“中间过程可干预”。你不喜欢最终图片,可以直接去看是哪个环节出了问题:是知识库没检索到内容,还是提示词生成得不好,还是图像插件本身画得不对。自由对话模式下,AI的思考过程是个黑盒,出了问题只能反复描述、反复试,效率很低。
还有一点,工作流可以把“专业经验”沉淀下来。比如我总结的“唐代仕女提示词模板”,放在工作流里之后,任何不懂历史的小白来用,都能生成质量稳定的图。这就是把个人经验变成了可复用的产品能力。
1.3 我为什么选Coze而不是Dify、n8n、ComfyUI
聊到工作流,绕不开几个同类工具:Coze、Dify、n8n、ComfyUI。我一开始也在纠结,后来逐个试了一遍,才确定Coze最适合这个场景。
先从ComfyUI说起。它是图像生成领域的神器,节点化控制Stable Diffusion很强,但它的节点管的是采样器、模型、LoRA这些底层参数,不负责理解自然语言。我输入“宋代茶坊”,它不会自动帮我拆解成提示词,还得另找一套LLM流程来配合。而且ComfyUI吃本地配置,没有好显卡玩不转。
Dify更偏向企业级的大模型应用开发,支持私有化部署、知识库、Agent编排,功能扎实。但对只想快速做一个小工具的人来说,门槛偏高,需要自己准备模型API、处理部署问题,折腾成本大。
n8n则偏自动化集成,擅长连接各种外部系统,比如把表单数据写到数据库、把通知发到IM,本身没有图像生成生态,做图片生成器还得绕很多弯。
Coze正好卡在这些工具的中间地带:不用部署、插件商店里直接找图像生成工具,有内置知识库,能快速接入对话。对“历史主题图片生成”这种偏内容创作的应用来说,它是最省事的选择。当然,如果以后要大规模商用或私有化,Dify还是值得迁移的,那是另一回事。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 历史主题图片生成器的整体设计与流程拆解
2.1 核心流程:从一句话到一张历史风格图
整套工作流我设计成六个环节:接收输入、意图理解、知识校验、提示词生成、图片生成、结果交付。每个环节都是独立节点,用连线串起来。
第一步接收输入。用户只要填一个主题词,比如“唐代仕女游春”“宋代点茶”“明清书斋一角”,再选一下画幅比例和风格偏好(工笔、水墨、写实等)。非必填项不填也有默认值。
第二步意图理解。一个大模型节点负责把所有输入参数转化成结构化的JSON数据,相当于“导演分镜”,把“唐代仕女游春”变成画面要素:时代背景、主体人物、服饰特点、场景环境、色调风格。
第三步知识校验。这是整套流程里最有价值的一环。系统拿上一步提取出的历史关键词,去历史知识库检索相关片段,再把检索结果附给大模型二次校对。校对完的关键词,比如“齐胸襦裙”“高髻”“披帛”,会被写进最后的图像提示词里。
第四步生成提示词。另一个大模型节点根据固定的模板和知识检索片段,生成完整英文提示词(图像插件对英文支持普遍更好),同时生成负面提示词。
第五步图片生成。提示词传给图片生成插件,按指定比例出图,默认一次生成4张。
第六步结果交付。把生成的图片URL和保存路径输出给用户,结束流程。
这样设计的好处是每一段都可替换。下次想从“历史主题”换到“科幻主题”,只需要改知识库和提示词模板,其他节点照用即可。
2.2 历史知识库:让AI少说胡话的关键
做历史主题图像生成,最怕的就是AI“一本正经地胡说八道”。比如汉代人物穿着明清服饰,这种错误如果靠用户自己去发现,体验就很差。所以我在工作流里加了一个历史知识库,专门用来做事实校验。
知识库的内容素材,来自公开可得的历代服饰研究、古画图录、博物馆文物说明、古代建筑形制介绍等文本资料。我按“朝代-主题-编号”的结构拆成短文档,方便检索。比如“唐代-服饰-齐胸襦裙”“宋代-器物-建盏”“明清-建筑-江南园林花窗”这种。
为什么强调用知识库而不是依赖大模型自身的知识?因为大模型虽然懂很多常识,但对专业性较强的历史细节,很容易混淆相近朝代的特征,尤其是服饰、纹样、器物上的小差异。知识库相当于给模型配了一本可以随时翻阅的手册,回答前先查一下,错误率立刻下降。
实际测试下来,加了知识库之后,生成图里的“朝代特征正确率”明显上升,尤其是“齐胸襦裙是唐代的,褙子是宋代的,立领对襟是明清常见的”这类细节,能稳定输送给图像生成节点。
2.3 节点选型说明:LLM节点、知识库节点、图像插件的分工
Coze工作流的节点很多,但做这个项目真正用到的核心节点就五类,我先拉个表说明它们的分工。
| 节点类型 | 在本项目中的职责 | 选择/配置要点 |
|---|---|---|
| 大模型节点 | 意图理解、提示词生成、历史要素校对 | 选响应快的模型,把任务描述写清楚,开启结构化输出 |
| 知识库检索节点 | 从历史资料库中召回相关片段 | 把文档按“朝代-主题”切片,设置合理召回个数和相似度阈值 |
| 图像生成插件 | 真正执行出图 | 按需选择商店里的图片生成插件,配置尺寸、张数、风格参考 |
| 条件分支节点 | 判断知识库召回是否有效 | 召回为空时走兜底逻辑,用通用历史风格提示词 |
| 变量节点 | 组装提示词片段 | 把知识检索结果、用户输入和模板拼接成最终提示词 |
大模型节点是整个工作流的大脑。我在意图理解里设置的是“你是历史题材图像导演,负责把用户的模糊需求拆解成可绘制的画面要素”,在提示词生成里设置的是“你是古风画师,基于给定的要素写英文图像提示词”。
知识库节点是这套系统的“博物馆资料员”。它不负责创造,只负责把最相关的内容从库里捞出来,交给下一步用。图像生成插件就是“执行画笔”,它不关心历史对不对,只负责把你给的提示词画出来。三者各司其职,整个系统才稳定。
3. 实操搭建:一步步把工作流跑起来
3.1 第一步:创建入口参数
打开Coze的控制台,新建一个智能体,然后在工具集里选择“工作流”,创建一个空白工作流。首先要做的是配置“开始节点”,也就是整个流程的输入参数。
我这边配置了三个参数:
json复制{
"theme": {
"type": "string",
"description": "历史主题描述,例如:唐代仕女游春",
"required": true
},
"aspect_ratio": {
"type": "string",
"description": "画幅比例:1:1、16:9、9:16、3:4",
"required": false,
"default": "1:1"
},
"style": {
"type": "string",
"description": "艺术风格:工笔、水墨、写实、壁画风",
"required": false,
"default": "工笔"
}
}
theme必填,其他两个有默认值,这样用户输入成本很低。配置完开始节点,画布上会出现一个起点。
3.2 第二步:搭建大模型节点做意图解析
工作流里添加一个“大模型节点”,放在开始节点后面。这个节点输入引用开始节点的theme、style参数,输出的是结构化JSON。
它的核心是系统提示词,我实际用的版本大致是这样:
text复制你是中国历史视觉文化专家。用户会给你一个历史主题和风格倾向。请提取出以下要素:
1. dynasty:准确的朝代,只能从输入中推断,不能凭空虚造。
2. subject:画面主体,比如人物、器物、建筑、场景。
3. characters:人物描述,包括性别、年龄段、服饰、发型,没有则写空。
4. environment:场景环境,包括地点、室内外、季节、天气。
5. era_keywords:这个朝代特有的视觉元素,如服饰、器物、建筑、纹样。
请严格输出JSON,不要有多余解释。如果输入包含现代元素,请在era_keywords里标注“需剔除现代元素”。
模型节点下方要设置输出字段,把JSON里的五个字段暴露出来。注意一定要开“结构化输出”,否则模型偶尔会在JSON前后加解释文字,导致后续节点解析报错。
这一步我踩过最大的坑是:模型把“宋代点茶”里的“茶”理解成了现代奶茶,结果生成的图片里出现了塑料杯。后来在系统提示词里加了“明代以前茶文化禁止出现现代饮具”,并用知识库辅助校验,问题才解决。
3.3 第三步:接知识库校验节点
在意图解析后面,加一个“知识库”节点。在Coze知识库管理里先创建一个历史主题资料库,把准备好的历史资料文档导入进去。文档切分策略我选的是“按章节自动切分”,每个片段控制在300字左右,太长了检索噪音大,太短了上下文不够。
知识库节点的配置上,最关键的是检索参数:
text复制知识库:历史主题资料库
查询内容:将上一步生成的 dynasty + subject + era_keywords 拼接为检索语句
召回数量:4 条
相关性阈值:0.35 以上才保留
检索结果会以数组的形式返回。这里加一个“代码节点”或者“变量处理节点”,把检索到的内容拼成一个纯文本块,作为后续提示词生成的知识上下文。
如果检索结果为空或相关性太低,知识库节点后面接一个条件分支节点:走“有结果”分支时,把知识文本注入提示词模板;走“无结果”分支时,直接采用模型自身的知识生成通用历史风格提示词,同时给用户返回一句提醒“未找到精准的历史依据,结果可能偏通用”。
3.4 第四步:提示词生成与图像插件出图
提示词生成我用的是第二个大模型节点。输入是三份材料:用户原始主题、意图解析的JSON、知识库检索文本。它负责在固定模板里“填词”。
实际模板如下:
text复制任务:生成适合图像生成的英文提示词。
约束:
- 必须包含以下历史要素:{era_keywords}
- 服饰和器物描述,严格按照知识库内容:{knowledge_text}
- 画面风格:{style}
- 画幅比例:{aspect_ratio}
- 必须在提示词开头标注朝代,例如“Chinese Tang Dynasty”
- 禁止出现现代元素,包括塑料、玻璃幕墙、现代汽车、电子设备。
输出格式:
positive_prompt: 英文提示词
negative_prompt: 英文负面提示词
图像生成节点我挂在提示词生成节点之后。从Coze插件商店搜索图片生成插件,选择支持文生图的那个,把上一步的positive_prompt和negative_prompt映射到对应字段。
图片生成节点的参数配置如下:
text复制提示词:来自上一步的positive_prompt
负面提示词:来自上一步的negative_prompt
图片尺寸:来自开始节点的aspect_ratio比例映射
生成数量:4张(测试阶段设1张省积分)
风格参考:不填,靠提示词控制
配置完成后,把节点连成线,从开始节点一路拉到结束节点。结束节点输出图片URL列表,工作流就算主体搭完了。
3.5 第五步:测试、发布与接入对话
Coze工作流页面自带“预览/测试”按钮,你可以手动填入theme、aspect_ratio、style三个参数,跑一遍看效果。我第一次全流程测试用的主题是“宋代街头的茶坊”,生成的图片整体氛围对了,但茶坊招牌上出现了不存在的字符,这个是图像模型通用问题,只能通过负面提示词或后期筛选缓解。
测试通过后点发布,再把工作流添加为智能体的“工具”。这样用户在对话里输入历史主题,智能体识别到意图后会自动调用工作流,返回图片。接入飞书、公众号这些渠道,也是在这个智能体层面做分发,工作流不需要改动。
4. 历史主题提示词打磨:怎么把“宋代市井”变成一幅好图
4.1 提示词模板:时代特征+主体元素+艺术风格+构图光线
图片生成的质量,一半靠插件,一半靠提示词。历史主题的提示词,我总结了一个相对固定的四段式结构:时代锚点、主体细节、环境氛围、画质风格。
时代锚点是最重要的一层。在提示词里明确写清“中国唐代”而不是泛泛的“古装”,能显著降低画错朝代的概率。比如写“Chinese Tang Dynasty, 8th century, Chang'an”,图像模型会主动联想盛唐气象。如果你只写“ancient Chinese style”,大概率生成一个明清混合体。
主体细节要具体到发型、服饰、器物。比如唐代仕女,我会写“plump noblewoman, tall double bun hairstyle, long silk shawl, high-waisted ruqun skirt”,这些词都是从知识库检索里提取的。不要写“beautiful ancient woman”这种空泛描述,模型不知道你要什么。
环境氛围对应场景的地点、季节和气候。比如“spring outing by Qujiang Lake, willow trees, gentle breeze, soft morning light”,环境越具体,画面越有故事感。
画质风格放在提示词尾部,加上“Chinese gongbi painting style”“traditional ink wash, delicate linework”等风格词。同时负面提示词里固定写“modern elements, plastic, contemporary clothing, cartoon style”,防止跑偏。
4.2 四个可直接套用的历史主题提示词案例
我直接在项目里存了几个模板,每次生成历史主题图就在这套基础上微调。这里挑了四个有代表性的,写出来给大家参考。
案例一:唐代仕女游春
text复制positive_prompt:
Chinese Tang Dynasty, noblewoman enjoying a spring outing, plump elegant figure,
tall double bun hair with gold hairpins, long silk shawl, high-waisted ruqun in
soft pink and green, holding a round fan, walking by Qujiang Lake, willow catkins,
gentle morning light, gongbi painting style, delicate brushwork, pastel color palette,
8k, highly detailed
negative_prompt:
modern elements, jeans, sunglasses, western face, cartoon, lowres, blurry, watermark
案例二:宋代点茶场景
text复制positive_prompt:
Chinese Song Dynasty, literati tea ceremony, a scholar in plain white robe sitting
beside a low wooden table, holding a tea whisk, black glaze jian ware teacup on table,
steam rising, minimalist interior, bamboo curtain and plum branch in background,
soft afternoon light, ink wash painting style, elegant composition, negative space
negative_prompt:
modern beverage, plastic cup, western tableware, bright neon colors, anime style
案例三:明清江南书斋一角
text复制positive_prompt:
Ming Dynasty Chinese scholar study, rosewood desk, blue and white porcelain vase,
old thread-bound books, ink stone and brush, lattice window with garden view,
loquat tree outside, soft warm candlelight, realistic traditional Chinese painting
style, warm earthy tones, cozy atmosphere
negative_prompt:
modern gadgets, electric lights, contemporary furniture, cluttered background
案例四:商周青铜器纹样文创
text复制positive_prompt:
Chinese Shang Zhou dynasty bronze ritual vessel, taotie pattern, cloud thunder pattern,
green rust patina, symmetrical front view, plain light gray studio background,
heritage catalog style, ultra sharp details, museum quality lighting
negative_prompt:
colorful background, cartoon, distorted vessel shape, modern object
这四个模板覆盖了人物、场景、器物三种类型,历史主题图的核心场景基本都能套用。
4.3 风格一致性:统一色调、画风控制的经验
做系列图的时候,最头疼的问题不是单张质量,而是两张图放一起完全不搭。比如第一张是工笔重彩,第二张却变成了油画质感,这就是提示词里风格词不稳定造成的。
我踩了几次坑后,形成了一套固定做法:风格描述词固化不变。不管主题怎么换,提示词尾部都接同一串风格词,比如“traditional Chinese gongbi painting style, elegant color palette, soft natural lighting, 8k,by xiaohongshu art style”等。主题词随便换,风格词一字不改,画面调性就统一了。
另一个技巧是固定画幅和光线词。历史主题图我基本默认用柔和的自然光,“soft morning light”或“warm candlelight”,避免出现强烈的霓虹感。色调上,不同朝代可以固定一套主色系:汉代偏沉稳的红黑,唐代偏华丽的金红,宋代偏素雅的青白,明清偏温润的暖棕。把主色调写进提示词后,系列图的观感会非常统一。
如果有更高阶的需求,可以给图像生成插件传“风格参考图”,让它学习第一张图的风格。这个需要插件本身支持图生图,我这边用到的插件支持,但如果没有参考图需求,纯提示词控制也够用了。
5. 常见问题与排查技巧实录
5.1 生成出来的图“不够历史”怎么办
这是我最常收到的问题,也是我自己最早遇到的困惑。排查思路其实套路固定:先确定是哪个环节丢了历史特征。
第一步,看意图解析节点的输出。如果这里的era_keywords是空的,说明大模型没理解输入里的朝代信息。这时候要检查用户输入是不是太模糊,比如只写“古代女子”而没有朝代词。解决办法是在LLM节点里加一段提示逻辑:如果输入里没有明确朝代,则输出“unknown_dynasty”,并提示用户补充朝代。
第二步,看知识库检索结果。如果知识库没有召回内容,生成结果就会偏通用。这时候要检查知识库文档有没有覆盖相关主题,比如用户要“汉代服饰”但库里只有服饰综述,没有汉代的专门条目,召回质量就差。解决方案是给知识库补录更细颗粒度的资料。
第三步,检查提示词里有没有“时代锚点词”。如果生成的prompt里开头没有“Chinese Tang Dynasty”类似表述,说明第二个LLM节点没有严格执行模板。把模板约束写得更死,或者在后处理代码节点里强制在prompt头部拼接朝代词,都能解决。
5.2 图片插件报错、节点超时怎么处理
Coze工作流跑久了,总会碰到“插件报错”“节点超时”之类的情况。我最常遇到的报错有三种。
第一种是“插件未安装或不可用”。Coze插件商店里有些图片生成插件是分版本和区域的,创建工作流的时候选了A插件,下次登录可能发现它已下架。解决方法是把插件节点换成商店里当前可用的同类插件,重新映射一下字段。Coze的节点配置是通用的,换插件通常只要改字段映射,不用动整个流程。
第二种是“参数类型不匹配”。比如LLM节点输出的结果是字符串,图片插件却要求传数组,流程就会中断。排查技巧是点击报错节点,查看“实际输入”和“期望输入”,把类型不一致的字段用“变量处理”节点做一次转换。我碰到过最隐蔽的一个坑是:JSON输出里混进了换行符,导致插件解析失败,后来在LLM节点系统提示词里加了“输出不允许换行”才解决。
第三种是“超时”。图片生成类插件耗时普遍比文本类节点长,流程默认超时时间可能不够。处理方法有两个:一是给图片生成节点单独开“重试”机制,超时就重试一次;二是把一次生成4张改成先生成1张,用户满意后再触发扩量。
5.3 知识库检索不准、图文不符的排查思路
图文不符的一个典型场景是:用户要“宋代点茶”,知识库也正常召回了内容,生成的图里却有明清家具。这种情况大概率是提示词生成阶段把知识库内容和模板拼接出了问题。
排查第一步,打开中间输出的知识库文本,看召回内容里有没有混入其他朝代的信息。多路召回时,如果阈值设得太低,可能把“宋代点茶”和“清代茶具”都召回进来,然后LLM节点把两条信息糅在一起,图片就串朝代了。解决方法是把召回条数从4降到2,同时把相关性阈值从0.35提到0.5左右。
排查第二步,看有没有做“冲突消解”。比如知识库里说“宋代常见黑釉建盏”,而图像模型默认联想“白瓷盖碗”,这时候要在提示词生成节点里增加一条指令:当知识库内容和通用常识冲突时,以知识库为准。我后来还在模板里加了一句“if knowledge base provides specific objects, use them absolutely”,图文匹配度立刻上来了。
排查第三步,定期检查知识库文档质量。如果文档标题是“古代茶具概述”,里面唐宋明清混在一块写,检索系统拿它没有办法。我的做法是每篇文档只讲一个朝代的一个主题,标题上直接挂朝代和主题标签,比如“宋代-茶具-黑釉建盏”“明代-茶具-紫砂壶”,检索准确率会高很多。
5.4 踩坑总结与省钱技巧
最后分享几个真实教训和成本控制的经验。
第一个教训:不要一上来就追求复杂的多分支。我第一次搭建时设计了七八个条件分支、循环节点,结果调试到崩溃。后来简化成“主流程+一个兜底分支”,稳定后再慢慢加功能。新手建议先把最简单的六节点链路跑通,再逐步丰富。
第二个教训:CCoze里的大模型节点虽然方便,但不要所有判断都丢给它。能固定字符串处理的就用变量拼接,能走条件分支的就不调LLM。一方面省积分,另一方面响应速度更快、更稳定。
第三个经验:测试阶段严格控制图片生成数量。把“数量”参数留一个变量,测试时设1,稳定后再改成4。一张图片生成消耗的积分比大模型调用贵很多,别在调试阶段白白烧掉。
第四个经验:把历史知识库当成一个“活档案”,持续更新。每发现一次生成结果出现朝代错误,就回到知识库里补一条对应资料。运行一个月后,这套系统的知识库越来越厚,生成质量也会有明显进步。
我自己实际跑下来的体会是:把“历史知识校验”放在图片生成之前,是这套工作流真正从玩具变成工具的分水岭。早期版本生成的图经常“看起来像古装但说不清哪个朝代”,加上知识库并固定提示词模板之后,稳定性完全是两个级别。如果你也想做类似的图像生成器,建议优先把知识库和提示词模板这两块打磨好,它们比选哪个图像插件重要得多。
最后再送一个小技巧:把验证过好用的提示词模板直接保存成工作流里的常量变量,下次换主题时只需要改theme入口,其他环节自动复用。我目前已经沉淀了十几套朝代、场景、风格模板,整个工作流基本处于“换主题就能出图”的状态。你可以在这个基础上继续扩展,比如接入参考图、增加多轮修正节点,玩法还有很多。
