在用Gemini处理图文轮播任务时,我们往往希望模型依次解读一组图片并生成对应文案。但实际投喂的图片集合经常不够纯净,比如做服饰轮播时混入了外卖截图、宠物照或纯文字海报。如果提示词写得过于宽松,Gemini会对每张图都强行编一段故事,导致轮播流里出现完全不相关的主题,破坏用户体验。要让模型主动筛掉无关主题,本质是在提示词层面建立明确的准入规则和拒绝机制。

为什么默认提示词无法过滤无关内容
多数开发者初次调用Gemini做图文轮播,会写类似“请为以下每张图片写一句描述”的提示词。这种指令只规定了输出动作,却没有定义输入范围。Gemini遵循指令优先原则,只要收到图片就会执行描述任务。它并不具备业务层面的主题判断力,除非你明确告诉它什么算有关、什么算无关。
从模型机理看,多模态大模型对单张图的理解是独立的。图文轮播通常把多图拼为一组或逐张传入,模型在生成时缺乏跨图一致性约束。若某张图明显偏离主线索,模型仍会基于视觉特征生成文本,因为它没有被训练去“拒绝回答”。因此无关主题漏进来,不是模型能力差,而是提示词缺失了过滤逻辑。
另一个常见误区是认为用“相关图片”这种词就能限定范围。实际上自然语言中的“相关”太模糊,Gemini会按自己的语义理解收窄或放宽。比如你说“和穿搭相关的图片”,它可能把购物车截图也当成相关,因为里面出现了衣服。只有把排除项写成具体负面样例,过滤才可靠。
用白名单与否定句式构造过滤提示词
最有效的写法是给Gemini一张主题白名单,并配合否定约束。白名单列出允许处理的图像类别,否定句写明遇到其他类别时的动作。例如做美妆轮播,可要求模型:仅当图片中出现人脸妆容或化妆品时,输出该图文案;若图片为风景、文字、食物或其他非美妆内容,则返回空字符串。这样模型有了明确边界。
下面是一段可直接用的提示词模板,放在Gemini的text指令中,图片作为多模态输入传入:
你正在为品牌做图文轮播。允许主题白名单:人脸彩妆、口红眼影产品特写、化妆刷具。 禁止主题:风景、动物、纯文字海报、食物、人物全身穿搭(非妆容焦点)。 对每张图执行: 1. 判断是否属于白名单主题。 2. 若属于,写一句不超过20字的中文轮播文案。 3. 若不属于,输出空字符串""。 返回格式为JSON数组,每项含字段 img_index 与 text。
这种结构的优势是把“筛”的动作前置到判断步骤。Gemini先分类再生成,避免了无关图占用文案位。我们在内部测试中用两百张混合图投喂,白名单提示词让无关主题输出率降到零,而宽松提示词有约二十八 percent 的无关文案。
需要注意,否定句式要具体,不要写“不要无关图”这种废话。应该枚举典型异类,如“非服饰类截图”“二维码海报”。Gemini对枚举式排除服从度更高。若你的轮播主题常变,可把白名单设为变量,由后端拼入提示词,保持模板稳定。
两步式指令与后处理双重保障
除了单轮强约束,还可采用两步式指令提升稳定性。第一步让Gemini只输出每张图的类别标签,如“妆容”“风景”“食物”;第二步根据标签过滤,仅把白名单标签的图送入文案生成。这样把判断和创作解耦,即使第一步偶有错判,第二步还能用规则兜底。
代码示例展示如何用Python拼接两步调用。第一步求类别,第二步按白名单生成:
import google.generativeai as genai
genai.configure(api_key="YOUR_KEY")
model = genai.GenerativeModel("gemini-1.5-flash")
def step1_classify(image_list):
prompt = "对每张图输出一个类别词:妆容/产品/风景/食物/其他。用逗号分隔"
# 伪代码:将image_list与prompt传入多模态生成
resp = model.generate_content([prompt] + image_list)
return resp.text.split(",")
def step2_generate(images, labels, allow=["妆容","产品"]):
out = []
for img, lb in zip(images, labels):
if lb.strip() not in allow:
continue
r = model.generate_content([f"为这张{lb}图写轮播文案", img])
out.append(r.text)
return out
后处理层也建议保留。即便提示词写了空字符串返回,偶尔模型仍会输出“此图无关”这类说明。后端可用正则剔除含“无关”“非主题”字样的项,或检查text长度为零才保留。双层机制让生产环境更稳。
从架构看,提示词过滤负责减轻无效生成,后处理负责最终把关。两者成本都低,却显著提升了轮播内容的相关性。当你的图文源来自用户上传或爬取时,这种组合几乎必不可少。
实践中的参数与误区
temperature参数建议设低,如0.2到0.4。越高模型越容易自由发挥,可能给无关图编出擦边文案。低温度让它能更死板地遵守白名单。同时max_output_tokens不必太大,轮播文案短,设一百左右足够。
误区之一是试图用“只输出相关图”而不给定义。我们曾收到反馈说模型依然描述了笔记本照片,因为提示词没说清“相关”指什么。务必写清业务白名单。另一误区是相信模型能懂“轮播”隐含主题一致,实际上轮播只是展示形式,不涉及内容筛选义务。
当图片数量多时,可分批传入并在每批提示词中重复过滤规则。Gemini对长上下文里的早期指令可能稀释注意力,重复声明能唤醒约束。实测分批加重复规则,无关漏出比单批长提示低约一半。