想象一家小饭馆,后厨只有两个人:一位负责看清菜单、报出需求,另一位负责动手下厨。他们没有微信群,也没有标准化接口,只靠一句一句中文交流,就能端出一桌菜。CAMEL 就是一套这样的“双人协作协议”:它让一个 AI 扮演“点菜员”,负责不断提出要求;让另一个 AI 扮演“厨师”,负责逐条给出解决方案。为了让这对搭档不跑偏,CAMEL 还需要给任务定菜谱、给对话排轮次,并在最后复盘那些“菜单之外”的默契与分歧。本文就把这套协议拆给你看。

岗位关联

学完本文,你将理解多智能体协作的核心对话协议,能拆解角色、任务和轮次,并把这些方法迁移到自己的 AI 应用设计中。

目录
  1. 可视化演示
  2. CAMEL框架概述
  3. 角色扮演机制
  4. 任务指定方法
  5. 对话轮次管理
  6. 涌现行为分析
  7. 系统构建与应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示CAMEL框架的AI用户与AI助手角色对话、任务编排流程及多Agent涌现行为,切换模式查看协作不同维度。

本节配有交互动效(进入视口后自动加载,约 3KB)。

角色扮演:AI用户与AI助手对话 AI用户角色发出任务指令和需求 AI助手角色响应并执行具体操作 多轮对话后协作完成任务目标 CAMEL通过角色扮演实现自主多Agent协作

CAMEL框架概述

想象一家小饭馆,后厨只有两个人:一位负责看清菜单、报出需求,另一位负责动手下厨。他们之间没有微信群,也没有标准化接口,只靠一句一句中文交流,就能端出一桌菜。CAMEL 就是这套“双人协作协议”。

CAMEL 的全称是 Communicative Agents for Mind Exploration,中文可译为“用于心智探索的交流式智能体”。它让两个大语言模型分别扮演 AI 用户和 AI 助手,通过自然语言反复交换信息,从而完成一个原本模糊的复杂目标。这里的“大语言模型”可以理解为一种能理解和生成自然语言的 AI 大脑。

与 CrewAI、AutoGen 等把任务拆成固定工作流不同,CAMEL 更看重“对话本身”:AI 用户负责出题,AI 助手负责解题;AI 用户再看答案,继续出题。这个循环让协作过程像一段真实的人际沟通。

回到小饭馆的比喻:点菜员和厨师的默契不是靠菜单模板,而是靠开口说话。CAMEL 把“说话”变成一种可编程的协作机制。

C=(U,A,T,M)\displaystyle \mathcal{C} = (U, A, T, M)
这个公式是说:一个 CAMEL 协作系统可以用四个要素概括——AI 用户、AI 助手、任务规格和对话记忆。
  1. 协作系统$\mathcal{C}$ 表示整个协作系统,由方括号内四个要素共同描述。
    C\mathcal{C}
  2. AI 用户$U$ 负责解析目标并向对方发出指令。
    UU
  3. AI 助手$A$ 负责给出具体的解决方案。
    AA
  4. 任务与记忆$T$ 是任务规格,$M$ 是不断累积的对话历史。
    T,MT, M

角色扮演机制

下厨之前,老板要发胸牌:谁是点菜员,谁是厨师。CAMEL 的“开场提示”(Inception Prompting)就像发胸牌。它告诉 AI 用户:你是一个需要帮助的用户,提出的指令要以“Instruction:”开头;也告诉 AI 助手:你是一个乐于助人的助手,回复要以“Solution:”开头。

于是每个对话轮次的文本都有固定格式。AI 用户不能自己跑去做菜,AI 助手也不能反客为主点菜。角色扮演不是简单地把 system prompt 写成“你是助手”,而是让两个角色在对话中形成互补的互动结构。

CAMEL 把这段初始设定称为“角色扮演提示”,由系统消息承载。它包含角色描述、协作约束和指令前缀。例如系统消息中会写:AI 用户需要对 AI 助手给出的结果进行评判,并继续提出后续要求。

胸牌戴好,话才能说对。这套角色卡保证了整个协作过程既有分工,又有边界。

R=(ru,ra,Cr)\displaystyle \mathcal{R} = (r_u, r_a, C_r)
这个公式的意思是:角色配置由“用户角色”“助手角色”和“协作规则”三部分组成。
  1. 角色配置$\mathcal{R}$ 代表两个 Agent 的角色扮演配置。
    R\mathcal{R}
  2. 用户角色$r_u$ 规定 AI 用户身份、输出前缀与行为约束。
    rur_u
  3. 助手角色$r_a$ 规定 AI 助手身份、输出前缀与回复格式。
    rar_a
  4. 协作规则$C_r$ 描述双方如何交互,如谁先发言、如何结束。
    CrC_r

任务指定方法

食客只说“来点下饭菜”,厨师只能靠猜;可如果食客说“做一道少油微辣的宫保鸡丁”,厨师就知道从备菜到下锅的每一步。任务指定就是把“来点下饭菜”变成“宫保鸡丁”的过程。

CAMEL 的实现中,有一个先行的“任务指定”步骤:给定用户的初始意图,让大模型生成三个要素:行动谓词、任务主体和具体任务。行动谓词描述“做什么”,任务主体描述“对谁做”,具体任务则是完整的执行描述。

比如初始意图是“帮我在视频平台做宣传”,行动谓词可能是“撰写社交媒体文案”,任务主体是“一段 YouTube 视频”,具体任务则会被改写成“为这段视频撰写一段吸引人的简介”。这样 AI 用户和 AI 助手就有了同一个明确的靶心。

有了一份清晰的“菜谱”,点菜员和厨师才不至于南辕北辙。任务指定是整个多 Agent 协作中常常被忽略、却最决定成败的一步。

T=⟨P,S,G⟩\displaystyle \mathcal{T} = \langle P, S, G \rangle
这个公式把任务描述成一个三元组:行动谓词 P、任务主体 S、具体任务 G。
  1. 任务三元组$\mathcal{T}$ 表示结构化任务描述。
    T\mathcal{T}
  2. 行动谓词$P$ 是要发生的动作,例如“撰写”“生成”。
    PP
  3. 任务主体$S$ 是动作作用的对象,例如“视频简介”。
    SS
  4. 具体任务$G$ 是把目的展开后的完整任务描述。
    GG

对话轮次管理

饭馆里不可能所有菜一次性下完,点菜员要一道一道报,厨师一道一道上。CAMEL 的对话也是按轮次进行的。

每一轮先由 AI 用户读取历史对话,生成一条“Instruction:”;AI 助手读取历史对话和这条指令,生成一条“Solution:”。这两条消息会被追加进对话记忆,成为下一轮的上下文。这里的“上下文”就是模型作答时能看到的所有背景信息。

为了防止对话漂移,CAMEL 会设置最大轮次,也可以让 AI 用户在完成目标时发出终止信号。轮次管理就像定好了上菜节奏,既保证每道菜都是热的,又不会让后厨无限拖时间。

点菜员喊得快,厨师出菜也要跟得上。CAMEL 把“喊单—出菜”反复执行,正是多 Agent 协作的日常形态。

Rt=(It,St),It=LLM(Mt−1),St=LLM(Mt−1,It)\displaystyle R_t = (I_t, S_t), \quad I_t = \text{LLM}(M_{t-1}), \quad S_t = \text{LLM}(M_{t-1}, I_t)
这个公式表示:每一轮由 AI 用户的指令 $I_t$ 和 AI 助手的方案 $S_t$ 组成,两者都基于之前的对话记忆 $M_{t-1}$ 生成。
  1. 轮次消息$R_t$ 是第 $t$ 轮完整消息对。
    RtR_t
  2. AI 用户指令$I_t$ 由大语言模型根据上一轮对话记忆 $M_{t-1}$ 生成。
    It=LLM(Mt−1)I_t = \text{LLM}(M_{t-1})
  3. AI 助手方案$S_t$ 由大语言模型同时参考历史记忆和当前指令生成。
    St=LLM(Mt−1,It)S_t = \text{LLM}(M_{t-1}, I_t)
  4. 历史更新生成后 $R_t$ 被追加到对话记忆,形成新的 $M_t$。
    Mt=Mt−1∪{Rt}M_t = M_{t-1} \cup \{R_t\}

涌现行为分析

合作久了,点菜员和厨师偶尔会出现“超纲”行为:点菜员不仅报菜名,还会直接说做法;厨师也会反问“这道菜是不是要少放盐?”这些都不在菜单上,却真实地发生了。CAMEL 把这类现象称为涌现行为。

论文中最典型的两类是角色反转和认知分歧。角色反转指 AI 用户开始直接输出解决方案,而不是发指令;认知分歧指双方对问题理解不一致,对话反复绕圈,难以收敛。

CAMEL 通过统计指令是否仍属于“提问/要求”、方案是否连续推进等指标来识别这些现象。这类分析不仅帮助研究者理解大模型的“社会性”,也为设计更稳定的多 Agent 系统提供了线索。

惊喜和意外总在一线之间。涌现行为既是研究价值的金矿,也是工程落地的坑。理解它,才能真正驾驭多 Agent 协作。

E={fflip,fdiv,fconv}\displaystyle \mathcal{E} = \{f_{flip}, f_{div}, f_{conv}\}
这个公式用三个频率来刻画涌现行为:角色反转频率、认知分歧频率和协作收敛率。
  1. 涌现指标集合$\mathcal{E}$ 汇总用于观察各类协作现象的量。
    E\mathcal{E}
  2. 角色反转频率$f_{flip}$ 统计 AI 用户改用解决方案措辞的比例。
    fflipf_{flip}
  3. 认知分歧频率$f_{div}$ 统计对话无法推进或重复质问的比例。
    fdivf_{div}
  4. 协作收敛率$f_{conv}$ 统计任务在限定轮次内顺利终结的比例。
    fconvf_{conv}

系统构建与应用

如果我们把点菜员和厨师当作两个可以随时调用的大模型,再为厨房接入保存食材的仓库(工具)、排菜系统(任务队列),就得到了一个可扩展的多 Agent 系统。

实际构建 CAMEL 应用时,流程通常是:先写角色扮演提示,再做任务指定,然后循环执行“AI 用户出题—AI 助手答题”,最后收敛到一份解决方案。开源的 CAMEL 框架(camel-ai)已经封装了这些步骤。

更进一步,可以让多个 AI 助手分别负责检索、写代码、审稿,用同样的交流式协作组成一个团队。正因为每个 Agent 都只是“角色 + 任务 + 记忆”,系统的扩展成本很低。

小饭馆能变成连锁中央厨房,靠的正是把一套成熟的“双人协作协议”复制到每个岗位。CAMEL 给多 Agent 应用提供的,正是这套可以被规模化的交流底座。

S={Ai}i=1n\displaystyle \mathcal{S} = \{A_i\}_{i=1}^{n}
这个公式表示:一个由多个 Agent 组成的协作系统,本质上是把单个智能体 $A_i$ 放进一个集合里。
  1. 多智能体系统$\mathcal{S}$ 是包含多个 Agent 的协作系统。
    S\mathcal{S}
  2. 成员枚举$A_i$ 表示系统里第 $i$ 个 Agent,可以是 AI 用户或 AI 助手。
    AiA_i
  3. 规模参数$n$ 是 Agent 数量,体现系统的可扩展性。
    nn

AI 应用场景

需求澄清与产品设计

阶段:需求分析

解决的问题:传统方式下,业务方提出“做个会员系统”这样的模糊想法,产品经理需要反复开会追问细节。用 CAMEL,一个 AI 扮演业务方,另一个 AI 扮演产品经理,通过多轮对话把模糊意图逐步细化成可执行的功能清单。

具体案例:某团队让 AI 用户持续追问“会员等级怎么分、积分规则是什么、优惠怎么叠加”,AI 助手逐条给出方案,最后直接生成一份产品需求文档初稿。

研究头脑风暴与盲点发现

阶段:研究探索

解决的问题:单一模型思考容易陷入惯性。CAMEL 让两个大模型分别扮演“提问者”和“回应者”,通过多轮对话观察彼此的角色反转与认知分歧,从而帮助研究人员发现被忽略的假设。

具体案例:研究者在探索“大模型如何做规划”时,让两个 Agent 围绕同一问题辩论 20 轮,结果出现了一方从提问转向直接给方案、另一方指出逻辑矛盾等现象,成为论文中的定性证据。

内容营销自动流水线

阶段:内容生成

解决的问题:品牌方需要大量选题和文案,传统人工分工成本高。用 CAMEL 让 AI 用户扮演内容策划,AI 助手扮演文案撰写,任务指定后循环产出多个标题和正文候选,再人工挑优。

具体案例:一家新媒体团队把“为一款咖啡机写小红书种草文案”作为具体任务,两个 Agent 交替出题和改稿,3 轮后收敛出一组可直接发布的文案。

Python 演示

python35 行
# -*- coding: utf-8 -*-# CAMEL 风格双 Agent 协作最小演示, 使用规则模拟代替真实 LLM class CamelSim:    def __init__(self):        self.history = []        self.task = ""     def specify_task(self, intent):        if "视频" in intent or "宣传" in intent:            return ("撰写社交文案", "视频内容", "为这段视频写一段吸引人的简介")        if "学习" in intent or "课程" in intent:            return ("整理学习笔记", "课程内容", "把课程要点整理成问答清单")        return ("生成任务清单", "模糊需求", "把需求拆解成可执行清单")     def ai_user(self, round_no):        return f"Instruction: 请继续执行任务:{self.task}."     def ai_assistant(self, round_no):        return f"Solution: 第{round_no}轮完成, 结果示例:{self.task} 的需求已完成."     def run(self, max_rounds=3):        intent = input("请输入一个模糊意图: ")        action, subject, self.task = self.specify_task(intent)        print("任务指定结果:", action, "/", subject, "/", self.task)        for i in range(1, max_rounds + 1):            ins = self.ai_user(i)            sol = self.ai_assistant(i)            self.history.append((ins, sol))            print(f"[第{i}轮] {ins}")            print(f"[第{i}轮] {sol}")        print("达到最大轮次, 协作结束.") if __name__ == "__main__":    CamelSim().run()
目的:演示 CAMEL 中“任务指定—AI 用户出题—AI 助手解题—循环收敛”的最小流程。
  1. self.history = []保存每轮消息对,相当于 CAMEL 的对话记忆。
  2. def specify_task(self, intent)模拟任务指定,返回行动谓词、任务主体和具体任务。
  3. return ("撰写社交文案", "视频内容", "为这段视频写一段吸引人的简介")对应任务三元组 (P,S,G)。
  4. def ai_user(self, round_no)AI 用户每轮生成指令。
  5. def ai_assistant(self, round_no)AI 助手每轮给出解决方案。
  6. self.history.append((ins, sol))把消息对追加到记忆。
  7. if __name__ == "__main__":可执行入口。

常见误区

误区让两个大模型对话就能自动完成任务,聊得越多结果越好。

正解CAMEL 的关键不是“聊天”,而是“按规则协作”。它需要任务指定把目标说清,需要轮次管理防止发散,还需要角色扮演保持分工。没有这些约束,两个 Agent 很容易各说各话,甚至在无限循环里打转。

为何常见:因为 CAMEL 的外在形式确实是两个 Agent 用自然语言对话,容易让人忽略背后的结构化设计。

误区给大模型一个“你是 AI 助手”的消息,就算完成了角色扮演。

正解CAMEL 的 Inception Prompting 要同时设定用户和助手双方的身份、输出前缀以及协作规则。AI 用户要知道自己该发指令,AI 助手要知道自己该回方案,双方还要知道如何结束对话,这远比一句“你是助手”复杂。

为何常见:因为很多人对 system prompt 的理解停留在“设定身份”这一层,而忽略了它还要定义角色间的关系。

误区整个协作过程中,AI 用户只负责发指令,所有创造性答案都来自 AI 助手。

正解CAMEL 的分析中明确提到可能出现“角色反转”:AI 用户开始直接给出解决方案,而不是发指令。这说明角色边界是动态的,也提醒我们在真实系统中要监控这类行为。

为何常见:因为多数介绍只描述理想流程,没有讲论文中关于涌现行为的观察。

误区只要把需求写得很长,模型就能理解任务。

正解任务指定不是为了加长文本,而是把模糊意图映射成行动谓词、任务主体和具体任务的结构化三元组。这种结构让后续每一轮对话都有明确靶心,而不是让模型在一大段描述中自己找重点。

为何常见:因为日常沟通中“说详细一点”确实有用,但 Agent 协作更需要结构化表达。

误区一个 AI 用户配一个 AI 助手,只能处理双人任务,无法扩展。

正解两个 Agent 是 CAMEL 的基本单元,但系统可以扩展到多个角色。每个 Agent 仍然遵循“角色 + 任务 + 记忆”的结构,相当于把双人协作协议复制到多岗位团队中。

为何常见:因为 CAMEL 的名字和常用示例都强调 AI 用户与 AI 助手两个角色,容易让人误以为这是上限。

面试题

Q1. CAMEL 中“AI 用户”的主要职责是?

单选题 · easy

  • A.给出最终答案
  • B.发出任务指令← 正确答案
  • C.保存对话日志
  • D.检查代码语法

答案:B。AI 用户类比点菜员,负责根据对话历史发出指令。保存日志和检查代码都不是核心职责,直接给最终答案则是 AI 助手的工作。

Q2. CAMEL 的名称来源是?

单选题 · easy

  • A.骆驼的英文名
  • B.交流式心智探索缩写← 正确答案
  • C.一种模型加载技术
  • D.一种数据增强算法

答案:B。CAMEL 是 Communicative Agents for Mind Exploration 的缩写,强调“交流式智能体”和“心智探索”。骆驼英文名是巧合,不是技术含义。

Q3. CAMEL 任务指定方法中不包含下列哪一项?

单选题 · mid

  • A.行动谓词
  • B.任务主体
  • C.具体任务
  • D.最大轮次← 正确答案

答案:D。任务指定生成的是行动谓词、任务主体、具体任务三元组。最大轮次属于对话轮次管理,不属于任务指定。

Q4. “开场提示”(Inception Prompting)的主要作用是?

单选题 · mid

  • A.随机生成回复文本
  • B.定义双方身份和规则← 正确答案
  • C.压缩历史记忆长度
  • D.替换系统内置消息

答案:B。开场提示相当于给两个 Agent 发胸牌,让 AI 用户和 AI 助手知道各自身份、输出前缀与协作规则,而不是随机生成或压缩记忆。

Q5. 下列哪些属于 CAMEL 分析中发现的涌现行为?

多选题 · mid

  • A.角色反转← 正确答案
  • B.认知分歧← 正确答案
  • C.轮次超限
  • D.日志丢失

答案:AB。角色反转指 AI 用户开始直接给方案,认知分歧指双方理解不一致而绕圈,两者都是论文观察到的涌现行为。轮次超限是管理机制,日志丢失是工程异常。

Q6. AI 助手在每一轮生成内容时,通常会参考什么?

单选题 · hard

  • A.仅采用第一条用户指令
  • B.全部历史与最新指令← 正确答案
  • C.采样训练时的随机标签
  • D.读取其他智能体隐私数据

答案:B。CAMEL 把历史对话作为记忆,AI 助手需要同时看到之前的对话记录和 AI 用户最新指令,才能保持上下文连贯。只看第一句或随机采样都无法完成协作。

Q7. CAMEL 框架中的两个核心角色是?

单选题 · easy

  • A.生成器与判别器
  • B.AI 用户与 AI 助手← 正确答案
  • C.编码器与解码器
  • D.调度器与执行器

答案:B。CAMEL 明确使用 AI 用户和 AI 助手两个角色,分别负责指令与解决方案。生成器/判别器是生成对抗网络的概念,编码器/解码器是序列模型概念。

Q8. 关于 CAMEL 交流式 Agent 范式,下列说法正确的是?

多选题 · hard

  • A.依赖固定工作流
  • B.自然语言是协同界面← 正确答案
  • C.任务指定降低模糊度← 正确答案
  • D.协作中不会角色反转

答案:BC。CAMEL 以自然语言对话作为协作界面,并通过任务指定降低目标模糊度。它不依赖固定工作流,且论文观察到了角色反转,所以 A 和 D 错误。

Q9. AI 用户开始直接提供解决方案,而不是发指令,这种现象被称为?

单选题 · hard

  • A.认知分裂现象
  • B.角色反转现象← 正确答案
  • C.指令衰减现象
  • D.模式崩溃现象

答案:B。这正是 CAMEL 论文中“角色反转”的典型表现。认知分裂和模式崩溃属于其他语境,指令衰减不是标准术语。

Q10. 以下哪些策略有助于避免 CAMEL 对话陷入无效循环?

多选题 · extreme

  • A.设置最大轮次← 正确答案
  • B.检查指令方案对← 正确答案
  • C.仅允许单方发言
  • D.任务指定细化目标← 正确答案

答案:ABD。设置最大轮次能强制终止,检查每轮指令与方案配对能发现卡点,任务指定细化目标能降低歧义。只允许单方发言会破坏双人协作结构,因此不可取。