Langchain项目2️⃣|用GPT4实现CAMEL框架

66 阅读3分钟

langchain实战课,作者使用了GPT4等进行API的调用,但是由于多种原因,使用了豆包API调用,在本文及接下来的序列文章将尽力还原读者代码和意图,并且交流在代码细节中的运用以及debug,与大家分享。此次针对CAMEL.

CAMEL

CAMEL:用于大规模语言模型社会的“心智”探索的交流式代理。这里面所谓的CAMEL,实际上来自沟通(也就是交流)代理心智探索以及 LLM 这五个单词的英文首字母。

CAMEL框架旨在通过角色扮演来促进交流代理之间的自主合作,并为其“认知”过程提供洞察。这种方法涉及使用启示式提示来指导聊天代理完成任务,同时保持与人类意图的一致性。这个框架为研究多代理系统的合作行为和能力提供了一种可扩展的方法

简单而言:实际上是通过设计多个不同的Agent来扮演特定的角色,以模拟角色之间的协作与交互,从而完成更复杂或更真实的任务。这种框架的核心思想是利用多智能体系统的协作机制,让不同的Agent基于各自的角色职责贡献到任务的完成中。

# 创建助手和用户的CAMELAgent实例
assistant_agent = CAMELAgent(assistant_sys_msg, ChatOpenAI(temperature=0))
user_agent = CAMELAgent(user_sys_msg, ChatOpenAI(temperature=0))

# 重置两个agent
assistant_agent.reset()
user_agent.reset()

# 初始化对话互动
assistant_msg = HumanMessage(
    content=(
        f"{user_sys_msg.content}。"
        "现在开始逐一给我介绍。"
        "只回复指令和输入。"
    )
)

user_msg = HumanMessage(content=f"{assistant_sys_msg.content}")
user_msg = assistant_agent.step(user_msg)

print(f"Original task prompt:\n{task}\n")
print(f"Specified task prompt:\n{specified_task}\n")

CAMEL框架的实现,以及在这个实现中提示设计的特别之处。

  1. 角色扮演:每个代理都被赋予了一个角色,且每个角色都有清晰的责任和行为准则。比如,Python程序员(助手)的角色是根据股票交易员(用户)的指示提供具体的解决方案,而股票交易员的角色是提供详细的任务指示。这种角色扮演机制有助于模拟人类之间的交互过程,更加真实地完成任务。
  2. 任务的具体化:为了使AI更好地理解和执行任务,提出了将抽象任务具体化的步骤。这可以帮助AI更清晰地理解任务需求,更准确地给出解决方案。
  3. 初始提示的设定:为了启动会话并提供合适的引导,系统初始化时会提供两个初始提示,一条是助手角色的提示,另一条是用户角色的提示。这两条提示分别描述了各自角色的行为准则和任务细节,为整个对话过程提供了框架和指引。
  4. 交互规范:该代码实现中有明确的交互规范,如一次只能给出一个指令,解决方案必须具有详细的解释,使用 “Solution: ” 开始输出解决方案,等等。这些规范有助于保持对话的清晰性和高效性