创意头脑风暴Agent通常被误解为一个只会批量生成点子的聊天窗口。实际上,一个能持续产出高质量创意的Agent需要在发散和收敛之间建立闭环:先让模型跳出惯性,再引入约束和评判标准,最后把粗糙想法压成可执行的方案。本文以一个实际案例为主线,拆解从提示词设计到代码实现的关键步骤。

一、为什么直接让模型列点子效果不好
最基础的做法是给模型一句提示词,比如请你为一个在线笔记产品想十个营销点子。这个指令下模型确实会返回十个结果,但多数情况下会出现两类问题。第一是重复同义表达,把修改按钮颜色和优化界面视觉算作两个创意。第二是缺乏产品约束,给出的点子要么过于宽泛,例如提升用户体验,要么完全脱离当前资源,比如建议立刻开发一套元宇宙社区。
出现这种情况的根源不在模型能力,而在任务没有被拆解。人类的头脑风暴通常有主持人控制节奏,先让参与者自由联想,再对原始想法做分类和筛选。Agent要模拟这个角色,就必须把一次生成改成多次调用,每次调用承担不同职能。发散阶段要求数量优先,收敛阶段要求标准明确,追问阶段要求把想法具体化,三个环节缺一不可。
一个可复用的做法是给Agent设计内部状态。不要只把聊天记录当作上下文,而是维护一个想法列表,记录每个想法的来源、变形次数和评分。这样后续的收敛和追问才有依据,而不是重新让模型凭印象判断。
二、核心链路:发散、强制关联、反向假设
发散阶段的关键是限制输出格式,同时提高随机性。可以让模型只输出一个JSON数组,每个元素包含想法名称和一句话说明。温度参数可以调到0.9以上,让模型敢于跳出常见答案。但仅仅提高温度还不够,因为模型仍然倾向于输出训练数据中高频的营销套路。
真正能打破惯性的是强制关联。随机抽取两个不相关的概念或对象,要求模型把它们的特征组合起来。比如把在线笔记和菜市场放在一起,模型可能想到按新鲜度排序的笔记、限时打折的知识专题、摊主吆喝式的内容推荐。这些想法不一定直接可用,但至少不再是一眼就能猜到的常规答案。
另一个有效技巧是反向假设。先让模型列出行业里所有人都在遵守的默认规则,然后逐条要求它反着来。例如大家都认为笔记应用必须打开速度快,那就假设一款故意让人慢慢写的笔记应用,会催生出怎样的功能?这种反向操作能够暴露被默认前提遮蔽的可能性,往往比正向发散更容易产生差异化概念。
import json
import random
def diverge(client, topic, forbidden_ideas, rounds=3):
results = []
for i in range(rounds):
prompt = f"""你是一个创意头脑风暴Agent的发散模块。
主题:{topic}
已经出现过的想法:{forbidden_ideas}
请给出5个从未出现过的新想法,要求:
1. 每个想法不超过15个字;
2. 避免同义重复;
3. 允许反常识,但要能联系到主题。
只输出JSON数组,格式:[{"name": "想法名", "reason": "一句说明"}]"""
resp = client.chat.completions.create(
model="gpt-4o-mini",
temperature=0.95,
response_format={"type": "json_object"},
messages=[{"role": "user", "content": prompt}],
)
data = json.loads(resp.choices[0].message.content)
items = data.get("ideas", [])
results.extend(items)
forbidden_ideas.extend([x["name"] for x in items])
return results
上面这段代码只展示了发散模块的骨架。实际项目中还需要处理JSON解析失败、模型返回字段不稳定等问题。一个稳妥的办法是使用JSON模式或函数调用,要求模型返回固定结构,减少后处理成本。如果模型仍然输出多余文本,可以在提示词末尾再加一句:除了JSON之外不要输出任何解释。
三、收敛与评估:让Agent自己当裁判
发散结束后通常会得到几十个想法,其中大部分不可用。如果直接让模型挑选最好的三个,它容易偏向表述最流畅的项,而不是真正有潜力的项。所以需要把评估拆成多个维度,逐项打分,再根据总分排序。常用维度包括:可行性、差异化程度、与现有资源的匹配度、用户感知强度。
可以让同一个模型扮演裁判角色,但提示词要给出明确的评分标准。每个维度1到5分,要求给出扣分理由。这样既避免模型只给高分,也能留下解释记录,方便后续人工复核。项目里我通常会用两轮评估:第一轮快速淘汰明显不合格的想法,第二轮对剩下的七八个做详细评分,并输出排名前三的方案。
def evaluate_ideas(client, ideas, topic):
prompt = f"""你是创意评估模块。请针对以下想法逐项评分。
主题:{topic}
想法列表:{json.dumps(ideas, ensure_ascii=False)}
评分维度:
- feasibility 可行性:当前团队能否在三个月内做出原型;
- differentiation 差异化:是否与主流产品有明显区别;
- relevance 主题相关:是否紧扣主题。
每个维度1到5分,5为最高。输出JSON数组,每个元素包含name、scores、total、reason。
只输出JSON。"""
resp = client.chat.completions.create(
model="gpt-4o-mini",
temperature=0.3,
response_format={"type": "json_object"},
messages=[{"role": "user", "content": prompt}],
)
data = json.loads(resp.choices[0].message.content)
ranked = sorted(data.get("evaluations", []), key=lambda x: x.get("total", 0), reverse=True)
return ranked
评估模块的温度参数要降低,通常0.2到0.4比较合适。因为这一步追求稳定和可解释,不需要模型继续发散。如果温度过高,同一批想法的总分可能出现明显波动,导致排序结果不可信。另外,评估提示词中要强调只输出评分,不要让模型顺手补充新想法,否则会污染收敛结果。
追问模块是很多人忽略的一环。一个想法拿到高分,并不代表它已经可以进入执行。比如评估后排名第一的点子是让笔记应用像菜市场一样按新鲜度排序,这个想法还需要回答三个问题:新鲜度的定义是什么?排序算法怎么设计?用户如何控制自己的笔记不被降权?追问模块就是针对这些问题逐条逼问,把概念变成可落地的功能描述。
四、避免常见失效模式
创意头脑风暴Agent最容易出现的问题是循环重复。第一轮给出十个想法,第二轮因为上下文里已有这些想法,模型会不自觉地换一种说法再输出一遍。要解决这个问题,必须把已出现想法做去重,并在提示词中明确标注。可以用精确字符串匹配和语义相似度双重过滤,而不是只靠模型自觉。
第二个常见问题是过度发散导致主题漂移。强制关联和反向假设虽然能产生新意,但也会让模型脱离原始约束。每次发散后都需要用评估模块检查相关性,得分低于2分的直接丢弃。不能因为某个想法听起来有趣就保留,否则整个Agent会变成随机词汇生成器。
第三个问题是评估标准过于宽松。如果所有维度都给4分以上,最终排序就没有区分度。可以在提示词中规定5分必须满足非常苛刻的条件,例如该想法能否让用户在社交媒体上主动截图传播。这样模型才会认真区分3分和5分,而不是当老好人。
综合来看,创意头脑风暴Agent的真正价值不是替代人类思考,而是把思考过程结构化。它把灵感的随机碰撞变成可复用的流水线,每一步都能单独调试和优化。当团队需要持续产出文案、功能点或活动方案时,这套链路能够稳定提供经过初步筛选的候选集,再交给人类做最终判断。
创意头脑风暴Agent大模型智能体提示词工程修改时间:2026-10-03 21:44:03