在探索了记忆之后,Alice与她的搜索助手“小科”已经可以连贯地进行多轮对话。然而,她渐渐感到一丝乏味:无论提出何种问题,“小科”总是以那种中立、准确却略显平淡的语调回应。一个念头在她脑海中闪现:“如果它不仅能回答问题,还能像一位严苛的代码评审员那样一针见血,或者像一位诗人那样用隐喻描绘世界,那该多好?”
这个想法并非幻想。在CAMEL的宇宙中,大语言模型如同拥有无限潜能的“原石”,而SystemMessage,正是那位技艺精湛的雕刻师,能够从中雕琢出形态各异、独具个性的智能体“雕塑”。本章将深入探索Prompt工程中最为精妙的艺术——如何通过精心设计的指令,为智能体注入鲜明的“人格”,使其从一个通用的工具,转变为拥有特定立场、风格与使命的协作伙伴。
在传统的人机交互中,我们输入指令,机器返回结果,关系是单向的。但在智能体协作的语境下,我们期望的是与一个拥有“认知立场”的伙伴对话。SystemMessage便是奠定这一立场的基石。它远不止是一个简单的“提示词”(Prompt),而是一份完整的“角色剧本”或“基因蓝图”,定义了智能体的身份背景、核心目标、行为约束与输出格式。
🧬 深度注释:SystemMessage的四层架构 一个强大而稳定的智能体人格,源于其SystemMessage清晰的内在结构。我们可以将其想象为一个四层的金字塔:这四层结构相互支撑,共同构成了一个稳固的“人格锚点”,确保智能体在复杂的对话中不致偏离预设的轨道。
- 身份层(Who):这是人格的根基。例如,“你是一位拥有15年经验的网络安全专家”或“你是19世纪的浪漫主义诗人”。这一层设定了智能体的知识背景、价值观和言说方式。
- 目标层(Why):明确了智能体的核心使命。例如,“你的目标是找出这段代码中所有潜在的安全漏洞”或“你的任务是用生动的意象描绘黄昏”。它回答了智能体“为何而存在”。
- 约束层(How):规定了行为的边界与准则。例如,“在指出漏洞时必须引用OWASP TOP 10相关条款并给出修复方案”或“避免使用现代词汇,保持古典语感”。约束并非限制,反而是塑造独特性和专业性的关键。
- 格式层(Form):统一了输出的形态。例如,“首先提供一个风险评级表格,然后分点详述”或“以一首十四行诗的形式呈现”。这确保了结果的可读性和可直接使用性。
当单个智能体被赋予人格后,CAMEL的 RolePlaying 类便搭建起了让两个(或更多)人格化智能体同台共演的舞台。这个类不仅仅是一个对话管理器,更是一个“涌现行为的孵化器”。其核心机制在于,它初始化了两个独立的智能体,分别扮演“助理”和“用户”角色,并让它们围绕一个给定的任务进行对话。这种设计催生了奇妙的化学反应:两个智能体之间的思想碰撞、质疑与补充,常常能产生超越各自原始能力简单相加的、更具深度和创意的解决方案。
下面的代码展示了如何导演一场发生在“产品经理”与“Python架构师”之间的技术辩论:
from camel.societies import RolePlaying
from camel.models import ModelFactory
from camel.types import ModelPlatformType
# 初始化模型
model = ModelFactory.create(ModelPlatformType.DEEPSEEK)
# 创建角色扮演会话
role_play = RolePlaying(
assistant_role_name='Python架构师',
assistant_agent_kwargs={
'model': model,
'system_message': '''你是资深Python架构师,拥有10年微服务设计经验。
你的核心目标是提供高性能、可维护的架构方案。
约束:所有设计必须优先考虑并发安全性与水平扩展能力,并解释技术选型理由。
输出格式:先以文字描述架构图与数据流,再给出核心接口的伪代码。'''
},
user_role_name='产品经理',
user_agent_kwargs={
'model': model,
'system_message': '''你是专注高并发场景的产品经理,对技术实现有深刻理解。
你的核心目标是明确业务需求并挑战技术方案的合理性与成本。
约束:每次提问或质疑都必须基于具体的性能指标(如QPS、延迟)或业务场景。
输出格式:先陈述需求背景,再提出具体问题。'''
},
task_prompt='设计一个支持每秒10万次查询(QPS)的API网关系统',
with_task_specify=True, # 关键参数:自动细化模糊任务
max_turns=5 # 控制对话轮次
)
# 运行对话并观察协作
response = role_play.run()
print(f'## 最终协作方案\n{response.content}')
🔧 深度注释:with_task_specify的工程智慧 代码中的with_task_specify=True是一个精妙的设计。它使得RolePlaying在内部自动调用TaskSpecifyAgent。这个专门的智能体会将用户可能模糊的初始任务(如“设计一个API网关”)拆解、细化为一个具体、可执行的详细任务描述,再交给两个角色去讨论。这极大地降低了用户构思完美任务描述的认知负担,是CAMEL框架面向实用性的重要设计。
角色扮演可能产生精彩的火花,但也可能陷入低效的循环或产生有缺陷的方案。为了确保协作产出的质量,CAMEL引入了 CriticAgent —— 一个内置的、可人格化的“评审员”。它能够从一个设定的标准出发,对对话过程或最终结果进行客观评估。
from camel.agents import CriticAgent
from camel.types import CriticRole
# 创建一个“法官”式的评审员
critic = CriticAgent(
model=model,
critic_role=CriticRole.JUDGE, # 另一种模式是CriticRole.PARTICIPANT(参与式评审)
system_message=f'''你是资深技术评审专家。
请依据以下标准评估之前的架构设计方案:{“代码可读性、性能优化程度、潜在安全隐患、扩展性”}。
约束:评估必须具体,指出优点和缺点,并为每个缺点提供改进建议。
输出格式:先给出总体评分(1-5分),然后分点详述。'''
)
# 对刚才RolePlaying的会话成果进行评估
feedback = critic.criticize(role_play.session)
print(f'## 质量评审反馈\n{feedback}')
通过 CriticAgent,Alice可以自动化地获取对“产品经理”与“架构师”辩论成果的二次评估,这就像是项目流程中不可或缺的代码评审(Code Review)环节,极大地提升了最终产出的可靠性与成熟度。
Alice怀着兴奋的心情,为她忠实的“小科”助手撰写了一份新的SystemMessage,将其人格从“通用搜索助手”重塑为“苛刻的代码评审员”。当她将一段自己的代码交给“小科”时,反馈不再仅仅是语法检查,而是带着犀利的洞察:“这个循环存在N+1查询问题,在数据量增长时将成为性能瓶颈,建议改用批量加载模式。” 接着,她利用 RolePlaying 组织了一场“安全专家”与“系统架构师”关于数据加密方案的辩论,并最终由 CriticAgent 裁定出了平衡安全与效率的最佳实践。
她惊叹地发现,一旦为智能体注入了恰当的“灵魂”,它们之间的互动便能涌现出令人惊喜的“群体智慧”——这种智慧超越了任何一个单一模型的能力边界,也远超简单的人机问答。这不仅仅是技术的运用,更是创造力的延伸。在下一章,我们将跟随Alice的脚步,深入这片多智能体协作的“涌现”之海,学习如何精细地控制对话的流向,并像淘金一样从丰富的对话过程中提取出最珍贵的结论与可执行项。
还没有人回复