掘金 人工智能 07月15日 12:08
CAMEL 框架之 RolePlaying 角色扮演
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

CAMEL框架中的RolePlaying角色扮演功能,通过创建两个智能体之间的互动,实现更精细化的任务完成。首先创建Model,然后初始化RolePlaying session,设定助手和用户角色,并给出任务目标。RolePlaying内部集成了给助手和用户的prompt,明确角色和任务分配。此外,RolePlaying支持任务细化、任务规划和引入批评者等特性,提供同步和异步的对话推进方法,有效提升任务完成质量。

🤖 RolePlaying是CAMEL框架中的功能,通过创建两个智能体间的互动,实现更精细化的任务完成。

🎭 在RolePlaying中,需要先创建Model,然后初始化session,设定助手和用户角色,并给出任务目标。

📝 RolePlaying内部集成了给助手和用户的prompt,明确角色和任务分配,助手需帮助用户完成任务,用户需指导助手。

🔍 RolePlaying支持任务细化、任务规划和引入批评者等特性,提供同步和异步的对话推进方法,有效提升任务完成质量。

👀 引入批评者使得agent间在完成任务过程中有监督,类似监督学习,及时提醒AI幻觉或偏离任务。

CAMEL 框架之 RolePlaying 角色扮演

首先我们来看看,怎么让 RolePlaying 为我们服务。

创建 Model

RolePlaying 是两个智能体之间的角色扮演,底层其实还是 AI 大模型,我们可以通过 ModelFactory 来创建一个 model。

model = ModelFactory.create(    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,    model_type="Qwen/Qwen2.5-72B-Instruct",    url='https://api-inference.modelscope.cn/v1/',    api_key=api_key)

创建 RolePlaying session

def main(model=model, chat_turn_limit=50) -> None:    task_prompt = "写一个快速排序算法"#设置任务目标    role_play_session = RolePlaying(        assistant_role_name="Python 程序员",#设置AI助手角色名        assistant_agent_kwargs=dict(model=model),        user_role_name="算法老师",#设置用户角色名,在roleplay中,user用于指导AI助手完成任务        user_agent_kwargs=dict(model=model),        task_prompt=task_prompt,        with_task_specify=True,        task_specify_agent_kwargs=dict(model=model),        output_language='中文'#设置输出语言    )

task_prompt是我们要完成的任务

assistant_role_name 设置 assistant_agent 的角色

user_role_name 设置 user_agent 的角色

RolePlaying() 实例化之后,我们就得到一个 session,到这一步其实我们已经初始化好了两个智能体, 我们把任务交给智能体,user_agent 会指导 assistant_agent 去完成我们的任务。

下面是 RolePlay 内部集成的,给 assistant_agent 的 prompt:

可以看到对 assistant_agent 说的,其角色扮演的 prompt 是:

Never instruct me!

You must help me to complete the task.

content='===== RULES OF ASSISTANT =====\nNever forget you are a python 程序员 and I am a 算法老师. Never flip roles! Never instruct me!\nWe share a common interest in collaborating to successfully complete a task.You must help me to complete the task.

下面是 RolePlay 内部集成的,给 user_agent 的 prompt:

可以看到对 assistant_agent 说的,其角色扮演的 prompt 是:

You will always instruct me

I must help you to complete the task

content='===== RULES OF USER =====\nNever forget you are a 算法老师 and I am a python 程序员.Never flip roles!You will always instruct me.\nWe share a common interest in collaborating to successfully complete a task.I must help you to complete the task.

通过上述四句的关键 prompt,实现了两个 agent 的角色扮演, 在他们后续的交流过程中,将会按照 user_agent 会指导 assistant_agent 的模式去完成任务。

RolePlaying 的其他属性

RolePlaying 类实现了两个智能体之间的角色扮演功能,支持任务细化、任务规划、引入批评者等特性,并且提供同步和异步的对话推进方法。

下面我们看看 RolePlaying 的初始化,就可以直接地了解他的核心内容了:

 def __init__(        self,        assistant_role_name: str,        user_role_name: str,        *,        critic_role_name: str = "critic",        task_prompt: str = "",        with_task_specify: bool = True, # 设置是否使用任务细化智能体        with_task_planner: bool = False, # 设置是否使用任务规划智能体        with_critic_in_the_loop: bool = False, # 设置在对话循环中引入批评者        critic_criteria: Optional[str] = None,        model: Optional[BaseModelBackend] = None,        task_type: TaskType = TaskType.AI_SOCIETY,        assistant_agent_kwargs: Optional[Dict] = None,        user_agent_kwargs: Optional[Dict] = None,        task_specify_agent_kwargs: Optional[Dict] = None,        task_planner_agent_kwargs: Optional[Dict] = None,        critic_kwargs: Optional[Dict] = None,        sys_msg_generator_kwargs: Optional[Dict] = None,        extend_sys_msg_meta_dicts: Optional[List[Dict]] = None,        extend_task_specify_meta_dict: Optional[Dict] = None,        output_language: Optional[str] = None,        stop_event: Optional[threading.Event] = None,    ) -> None:    # 其他代码省略

with_task_specify 设置是否使用任务细化智能体,默认是开启的,会对任务进行拆分、细分,再一步步完成。

with_task_planner 设置是否使用任务规划智能体。

with_critic_in_the_loop 设置在对话循环中引入批评者

通过这三个属性,我们可以看到 Camel 中的 RolePlaying 和平时我们直接单纯地使用 AI 是有很大区别的。在 RolePlaying 中我们可以对 Agent 进行更深层次的、更精细化的设置,比如任务拆解,比如批评者的引入(就好像有主管在旁边监督指导工作,这样完成的任务质量更高)

批评者的引入,使得 agent 间在完成任务过程中是有监督的,就像监督学习算法一样(maybe 不是很恰当,但是类似),在出现 AI 幻觉或者其他偏离原有任务的时候可以及时提醒。

而我们单纯使用 AI 的话,很多时候它不会主动拆解任务,更不会自我监督,偏离了之后就胡说一通了,特别是会话较长了之后。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

CAMEL框架 RolePlaying 角色扮演 智能体 任务完成
相关文章