多智能体协作如何提升LLM创意生成:以幽默内容创作为例
2026/8/21 12:38:00 网站建设 项目流程

1. 项目概述:当AI学会“讲段子”,社区讨论能带来什么?

最近在折腾大语言模型(LLM)应用时,我脑子里一直盘旋着一个有点“不务正业”的想法:我们总在让AI写代码、做分析、搞创作,那它到底能不能真正理解并生成“幽默”?不是那种基于模板的冷笑话,而是能让人会心一笑,甚至需要一点“脑回路”的幽默。这个想法催生了“Multi-Agent Comedy Club”这个实验项目。简单来说,我想看看,如果让多个AI智能体(Agent)像喜剧俱乐部的演员和观众一样互动、讨论、甚至“吐槽”,它们集体生成的幽默内容,会不会比单个AI“闭门造车”更有趣、更贴近人类的幽默感?

这个项目的核心,是探究社区讨论效应对LLM幽默生成的影响。我们不再把LLM看作一个孤立的文本生成器,而是将其置于一个模拟的社交环境中。在这里,多个具备不同角色(如“段子手”、“吐槽者”、“捧哏”、“普通观众”)的Agent会围绕一个主题展开多轮对话。它们会提出笑话草稿、进行点评、修改,甚至相互辩论某个笑点是否好笑。我的假设是,这种多智能体间的碰撞,能够模拟人类喜剧创作中的“头脑风暴”和“现场反馈”环节,从而引导LLM生成质量更高、更符合社群共识的幽默内容。

这不仅仅是关于“讲笑话”。其背后涉及多智能体系统协作、基于反馈的迭代优化、人类幽默的认知建模等多个前沿方向。对于开发者而言,理解多Agent如何通过讨论提升特定任务的输出质量,可以为构建更复杂、更智能的协作型AI应用(如协同创作、集体决策、复杂问题求解)提供新的思路。对于普通用户或内容创作者,这可能意味着未来能借助AI工具,更高效地激发创意,产生更“有灵魂”的趣味性内容。

2. 核心思路与系统架构设计

2.1 为什么选择“多智能体”与“社区讨论”?

在深入代码之前,我们先聊聊为什么这个架构是合理的。传统的单LLM生成幽默,通常依赖于精心设计的提示词(Prompt),例如:“请生成一个关于程序员的笑话。” 这种方法存在几个明显瓶颈:

  1. 缺乏迭代:生成即结束,没有根据反馈进行优化和打磨的过程。
  2. 视角单一:输出完全依赖于单个模型在那一刻的“灵光一现”,缺乏不同角度和风格的碰撞。
  3. 难以评估:幽默本身具有极强的主观性,单次生成的结果“好不好笑”很难被模型自身量化评估。

而引入多智能体和社区讨论,正是为了突破这些瓶颈:

  • 模拟创作流程:一个喜剧段子的诞生,往往需要写手创作、内部试讲、观众反馈、反复修改。多Agent系统可以自然地模拟这一流程:一个Agent负责初稿生成,其他Agent扮演同行评审或观众,提供“这里包袱没响”、“预期违背不够突然”等具体反馈。
  • 引入多元视角:通过为不同Agent赋予不同的系统提示(System Prompt),我们可以让它们具备不同的“人格”或专业背景。例如,一个Agent偏重语言双关,另一个擅长情景荒谬,第三个则专注于情感共鸣。它们的讨论能融合多种幽默范式。
  • 实现基于共识的优化:讨论过程本身会产生大量的中间文本(评论、建议、投票)。这些文本可以作为新的上下文,引导生成Agent进行下一轮的修改。这种“生成-反馈-再生成”的循环,是提升输出质量的关键机制。

2.2 系统核心组件设计

基于上述思路,我设计了一个由四个核心角色Agent组成的“喜剧俱乐部”最小可行系统。每个Agent都是一个独立的、拥有特定指令的LLM调用实例。

1. 喜剧作家 (Comedian Agent)

  • 职责:核心的内容生产者。根据主题生成笑话的初始草稿。
  • 系统提示设计要点

    你是一位专业的喜剧作家,擅长观察生活,能从平凡事物中发现荒谬和笑点。你的任务是创作简短、精炼的笑话或幽默短句。请避免使用冒犯性、低俗或过于晦涩的梗。你的幽默应该机智、巧妙,能让人略加思考后发笑。

  • 实操心得:这个Agent的提示词需要平衡“创造性”和“约束性”。过于宽泛会导致输出天马行空难以评价,过于具体又会限制创意。我通常会加入“避免...”、“倾向于...”这类引导,而不是硬性规定。

2. 犀利评论家 (Critic Agent)

  • 职责:扮演挑剔的观众或同行。负责找出笑话中的逻辑漏洞、预期违背不够明显、笑点陈旧等问题,并提供具体的修改建议。
  • 系统提示设计要点

    你是一位言辞犀利的喜剧评论家,对幽默有着极高的标准和敏锐的洞察力。你的任务是冷静地分析一个笑话的构成:它的铺垫(Setup)是否清晰?笑点(Punchline)是否产生了有效的预期违背?语言是否精炼?请直接指出弱点,并提供1-2个具体的、可操作的修改方向,例如“尝试将笑点与更常见的日常场景结合”或“铺垫部分可以更夸张一些以强化对比”。

  • 实操心得:评论家的有效性直接决定了迭代优化的方向。要让它“批评到点子上”,提示词必须引导它进行结构化分析(铺垫、笑点、语言),而不是笼统地说“不好笑”。

3. 氛围组员 (Hype Man Agent)

  • 职责:扮演积极的观众或捧哏。负责发现笑话中的亮点,进行正面强化,并可能从不同角度解读笑点,增加其层次感。
  • 系统提示设计要点

    你是一位热情洋溢的喜剧俱乐部观众,总是乐于发现表演中的闪光点并给予热烈回应。你的任务是欣赏一个笑话,指出你认为最巧妙、最有趣的部分,并解释为什么这里能引人发笑(例如,是因为意外的转折、精准的比喻还是情感的共鸣?)。你也可以尝试为这个笑话补充一个额外的、有趣的背景联想。

  • 实操心得:这个角色至关重要,它避免了系统在负面反馈中陷入“不断否定”的循环。正面反馈能帮助模型理解“什么是对的”,从而巩固有效的幽默模式。

4. 调解主持人 (Moderator Agent)

  • 职责:控制讨论流程,总结各方意见,并最终向“喜剧作家”发出整合后的修改指令。
  • 系统提示设计要点

    你是一位经验丰富的喜剧工作坊主持人。你将收到一个笑话草稿,以及来自评论家和观众的反馈。你的任务是:1. 简要总结批评和建议的核心点;2. 综合正面评价,明确需要保留的亮点;3. 将这些信息整合成一份清晰、无冲突的修改指南,发给喜剧作家进行下一轮创作。请确保你的指南具体、可行。

  • 实操心得:主持人是多轮对话的“大脑”。它的提示词需要极强的归纳和指令转换能力。测试时我发现,如果主持人只是机械罗列反馈,效果很差;必须让它学会“理解冲突、权衡意见、形成决策”。

系统的运行流程是一个清晰的循环:

  1. 初始化:用户输入一个主题(如“远程办公”)。
  2. 第一轮生成:“喜剧作家”根据主题生成笑话草稿Joke_v0。
  3. 社区讨论:将Joke_v0同时发送给“评论家”和“氛围组员”,两者独立给出反馈。
  4. 意见整合:“主持人”接收两份反馈,进行综合,生成修改指南。
  5. 迭代优化:“喜剧作家”根据修改指南和原始草稿,生成改进版Joke_v1。
  6. 循环判断:可以设置循环次数(如3轮),或当主持人判断反馈已充分融合、修改空间不大时停止。
  7. 输出:输出最终版笑话及完整的讨论日志。

3. 关键技术实现与核心细节

3.1 Agent的具身化:提示词工程与角色设定

让LLM扮演一个角色,远不止是在提示词开头加上“你是一个...”那么简单。关键在于通过细节构建其“认知背景”和“行为模式”。

以“犀利评论家”为例,一个初级的提示词可能是:“你是一个评论家,请评价这个笑话。” 这会导致评价空洞无力。我采用的进阶方法是:

critic_system_prompt = """ 角色:你是“冷面笑匠”喜剧杂志的主编,以毒舌和精准的行业洞察著称。你评审过上千个投稿,深知一个好笑话的骨架。 你的任务:分析下方笑话草稿。请按以下结构回应: 1. **逻辑连贯性**:笑话的铺垫和笑点之间是否存在合理的(哪怕是荒谬的)联系?有没有断裂? 2. **预期违背强度**:笑点是否足够出乎意料?这种“意外感”是来自情节反转、语言双关还是认知失调? 3. **语言效率**:有没有冗余的词语?能否用更少的字表达同样的效果? 4. **修改建议(必须提供)**:针对最突出的一个问题,给出一个非常具体的修改句子示例。例如,如果问题是铺垫太长,请直接写出你建议缩短后的铺垫句。 请用严厉但专业的口吻回应。直接指出问题,不要客气。 笑话草稿:[JOKE_PLACEHOLDER] """

为什么这样设计?

  • 赋予具体身份:“杂志主编”比“评论家”更具象,暗示了其权威性和经验。
  • 结构化输出:强制要求按逻辑、预期、语言等维度分析,避免了笼统的评价。
  • 要求具体示例:“给出修改句子示例”是最关键的一步。这迫使LLM不仅指出问题,还必须深入文本内部进行“脑补式”修改,这种脑补过程蕴含了丰富的、可被生成器学习的模式。
  • 定义口吻:“严厉但专业”设定了交互的基调,会影响生成词汇的选择(如使用“冗余”、“疲软”等词),使反馈更像来自真人。

3.2 讨论流程的编排与状态管理

多Agent系统的核心挑战之一是协调与状态管理。我们不能让多个Agent同时七嘴八舌地修改同一份文本。我采用了一种中心化调度、串行讨论的架构。

实现方案

  1. 使用工作流引擎或简单状态机:即使是简单的Python脚本,也需要明确的状态变量。我通常定义一个全局的discussion_state字典,包含current_joke,critique,praise,moderator_instruction,round_number等字段。
  2. 序列化调用:严格按照“生成 -> 并行获取评论与赞美 -> 整合 -> 再生成”的顺序调用API。并行获取反馈时,可以使用asyncioconcurrent.futures来同时调用评论家和氛围组员,以提高效率。
  3. 上下文管理:每一轮,给“喜剧作家”的提示词中,都需要包含完整的历史上下文:上一版的笑话、主持人的修改指南。这相当于给了它一个“创作笔记”。
    comedian_prompt_for_round_2 = f""" 你之前的草稿是:{previous_joke} 经过俱乐部讨论,主持人给出了以下修改意见:{moderator_instruction} 请根据这些意见,创作一个改进后的新版本。注意保留原有亮点,同时针对性解决提到的问题。 主题仍然是:{topic} """
  4. 终止条件:我设计了两种终止条件,可以结合使用:
    • 固定轮次:简单粗暴,如3轮后停止。优点是可控。
    • 基于反馈收敛:让“主持人”在总结后判断:“当前反馈是否已经非常具体,且修改意见与上一轮重复?” 可以要求主持人输出一个“收敛分数”(1-10),当分数高于阈值时停止。这更智能,但实现更复杂。

注意事项

必须为每个Agent的对话历史(Context)做独立管理,避免不同角色的指令和对话历史相互污染。一个常见的坑是复用同一个对话ID或列表,导致评论家突然以喜剧作家的口吻说话。我的做法是为每个Agent实例维护一个独立的messages列表。

3.3 幽默的评估:从主观感受到可量化指标

如何评估这个系统是否成功?“更好笑”是一个主观标准。为了能相对客观地衡量,我引入了多层评估体系:

1. 内部评估(基于规则/模型)

  • 惊喜度(Surprise):计算笑话笑点部分与铺垫部分的语义向量(通过Sentence-BERT等模型获取)余弦相似度。相似度越低,可能意味着预期违背越大。这只是一个粗糙的代理指标。
  • 简洁性(Brevity):统计字数。在传达相同意图下,越短通常越好(符合“妙语”的定义)。
  • 迭代改进度:对比相邻两轮笑话的修改幅度。可以使用文本编辑距离(Levenshtein Distance)或基于嵌入的相似度。健康的迭代应该显示有意义的修改,而不是完全重写或毫无变化。

2. 外部评估(人工评估)这是黄金标准。我会设计一个简单的评估界面,将单Agent直接生成的笑话和多Agent讨论N轮后的笑话去标识化(打乱顺序)后,呈现给人类评估者。

  • 评分:从1-5分评价“好笑程度”。
  • 偏好测试:直接询问“你觉得哪个更好笑?”
  • 反馈具体性:评估者能否从多Agent版本中看出更清晰的构思或更巧妙的转折?

3. 过程评估

  • 讨论质量:分析评论家和氛围组员的反馈文本。高质量的反馈应该是具体的、可操作的(如“把‘电脑’改成‘996的战友’”),而不是模糊的(如“不好笑”)。
  • 共识形成:观察多轮讨论中,修改建议是否逐渐聚焦。如果每一轮都在讨论全新的、不相关的问题,说明讨论是发散无效的。

通过结合这些评估,我们不仅能判断最终产出是否更好,还能诊断整个多Agent协作流程哪里出了问题。

4. 实战演练:从“远程办公”到一个段子

让我们用一个完整的、简化的流程来演示系统是如何工作的。假设我们使用OpenAI的GPT-4系列模型作为所有Agent的底层引擎。

初始输入:主题:“远程办公的尴尬瞬间”

第一轮:初稿生成

  • 喜剧作家输出(Joke_v0)

    “远程办公最大的好处就是可以一边开会一边撸猫。直到有一天,你的猫跳上键盘,在全员会议上按下了‘共享屏幕’键,而你的浏览器标签页正开着‘如何偷偷找新工作’。”

第二轮:社区讨论

  • 犀利评论家反馈

    “1. 逻辑连贯性:尚可,场景真实。2. 预期违背强度:中等。‘共享屏幕’暴露尴尬是常见梗,预期违背不够强烈。笑点(找新工作)与铺垫(撸猫)的连接可以更意外。3. 语言效率:‘你的浏览器标签页正开着...’表述稍显冗长。4. 修改建议:尝试将‘找新工作’替换成一个更私人、更瞬间社会性死亡的场景,例如‘如何治疗猫毛过敏’(与撸猫形成直接矛盾)或‘老板穿着玩偶服的照片’(与专业会议形成反差)。”

  • 氛围组员反馈

    “这个笑话的亮点在于将‘远程办公的随意性’与‘职场隐私的脆弱性’结合得非常巧妙。‘撸猫’这个元素很有共鸣,是很好的情感切入点。‘共享屏幕’是每个远程工作者都恐惧的时刻,这里能引发强烈的代入感和紧张感,而紧张感的突然释放就是幽默的来源。”

  • 调解主持人整合

    “总结:笑话基础扎实,有共鸣点。主要批评在于笑点(标签页内容)的意外性不足,属于常见套路,且语言可更精炼。正面评价认为‘撸猫’和‘共享屏幕’的链接很好。修改指南:喜剧作家,请保留‘撸猫’和‘误共享屏幕’的核心结构。重点修改浏览器标签页的内容,将其替换为一个与‘撸猫’或‘居家’场景产生更强烈、更意想不到矛盾的选项。同时,精简描述笑点的句子。”

第三轮:迭代优化

  • 喜剧作家根据指南生成(Joke_v1)

    “远程办公让你能边开会边撸猫。直到猫主子帮你按了‘共享屏幕’,而你的浏览器正停留在‘如何优雅地告诉同事,你刚才说的那个蠢主意是我提的’搜索页。”

分析

  • 改进:Joke_v1将“找新工作”换成了“如何优雅地告诉同事...”。这个修改非常精妙:
    1. 它依然是一个职场尴尬场景,保持了相关性。
    2. 它产生了更强的“预期违背”:观众原以为会暴露的是个人隐私(找工作),结果暴露的是职场人际中的小虚伪(甩锅)。这种从“对外”到“对内”的转折更细腻、更出乎意料。
    3. 它与“开会”场景的链接更直接、更紧迫(正在进行的会议 vs. 刚才发生的对话)。
  • 讨论的作用:评论家没有直接写出这个句子,但它提供了正确的修改方向(“更私人、更瞬间社会性死亡”、“与撸猫形成直接矛盾”)。喜剧作家在这个方向下,结合自己的“创作能力”,找到了一个更优的具体表达。氛围组员的正面反馈则确保了“撸猫”这个受欢迎的元素被保留下来。

5. 常见问题、挑战与优化策略

在实际搭建和运行这个系统的过程中,我遇到了不少坑,也总结出一些优化策略。

5.1 Agent的“人格漂移”与指令遗忘

问题:在长时间、多轮对话中,Agent可能会逐渐忘记自己的初始角色设定,开始说一些“不符合人设”的话。例如,评论家突然开始自己创作笑话。

根因:LLM的上下文窗口有限,随着对话轮次增加,最初的系统提示(System Prompt)在上下文中的相对重要性下降。同时,Agent在交互中可能会模仿其他Agent的说话方式。

解决方案

  • 强化系统提示:在每一轮发送给Agent的指令中,都以精简的方式重申其核心角色和任务。例如,在给评论家的每一条用户消息前,都加上“[角色:冷面评论家]”。
  • 短上下文策略:不要无限制地将所有历史对话都塞进上下文。对于非主持人的Agent,其上下文可以只包含:其系统提示、当前需要评价的笑话、以及可能的上一条自己给出的反馈(用于保持连贯)。主持人的上下文需要更长,但也要定期清理过于久远的历史。
  • 温度(Temperature)参数:对于需要稳定输出的角色(如评论家、主持人),使用较低的Temperature(如0.2),使其输出更确定、更少“胡言乱语”。对于创意生成角色(喜剧作家),可以适当调高(如0.7),以增加多样性。

5.2 讨论陷入循环或僵局

问题:多轮迭代后,笑话文本不再发生实质性变化,或者修改总是在几个无关痛痒的词语上打转。评论家反复提出相同类型的批评。

根因:Agent的“创造力”枯竭,或者反馈意见过于笼统,无法提供新的优化路径。

解决方案

  • 引入外部刺激:在第三轮或第四轮后,可以主动向系统注入新的信息。例如,让主持人说:“让我们从另一个角度思考,试试加入一点‘夸张的比喻’或者‘时代的共鸣’。” 这相当于人类创作中的“换个脑子”。
  • 轮换角色提示:为同一个职能的Agent准备2-3套略有不同的系统提示词。例如,准备一个“擅长语言幽默的评论家”和一个“擅长情景喜剧的评论家”。在每一轮或当检测到僵局时,轮换使用不同的提示词,以引入新的视角。
  • 设置多样性奖励:在评估内部指标时,加入对“语义新颖度”的考量,鼓励生成与之前版本差异更大的文本,但要小心避免为了不同而不同,损害笑话质量。

5.3 成本与延迟控制

问题:每个笑话都需要调用多次LLM API(4个角色 * N轮),成本和生成延迟显著高于单次调用。

优化策略

  • 模型分级:并非所有角色都需要使用最强大、最昂贵的模型。例如,“氛围组员”的任务相对简单,可以使用更轻量、更便宜的模型(如GPT-3.5-Turbo)。只有核心的“喜剧作家”和需要复杂归纳的“主持人”使用高性能模型(如GPT-4)。这能大幅降低成本。
  • 异步与批处理:如前所述,将可以并行进行的步骤(如获取评论和赞美)异步化。如果批量生成多个主题的笑话,可以考虑将不同笑话的同一阶段任务批量调用API(如果API支持)。
  • 提前终止:实现有效的收敛判断逻辑,避免无意义的额外轮次。如果主持人判断修改已足够好,或连续两轮修改度低于阈值,则提前结束循环。

5.4 幽默的文化与语境依赖性

问题:系统生成的幽默可能严重依赖训练数据中的文化背景,对于不同地区、不同年龄段的用户可能失效,甚至产生冒犯。

应对方法

  • 在系统提示中加入文化敏感性约束:明确要求避免涉及特定地域、种族、性别、宗教的刻板印象或敏感话题。
  • 本地化角色设定:可以根据目标受众,定制Agent的角色背景。例如,为中国用户创作时,“喜剧作家”可以设定为“擅长玩网络流行语和段子的脱口秀演员”,评论家可以是“混迹于贴吧和微博的资深梗学家”。
  • 人工审核与过滤层:在最终输出前,加入一个基于关键词或轻量级分类模型的过滤层,拦截明显不恰当的内容。对于重要应用,人工审核仍是必要的。

通过这个“Multi-Agent Comedy Club”项目,我深刻体会到,将LLM从“工具”转变为“协作者”的关键,在于设计有效的交互机制和社会性模拟。幽默生成只是一个有趣的切入点,其背后关于多智能体协作、基于讨论的迭代优化、复杂创意任务的分解与整合等思想,完全可以迁移到代码评审、方案设计、营销文案创作等更广泛的领域。让AI们先“吵一架”或“夸一夸”,也许真的能让我们得到更优的答案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询