Multi-Agent 系统 + CWIC Flow:AI编排的先锋

Multi-Agent 系统概述

Multi-Agent 系统代表了人工智能领域的一次范式转变,从单一模型方法转向由多个专业化人工智能智能体组成的协作团队。这些系统具有以下几个关键优势:

专业化(Specialization):每个智能体可以专注于其最擅长的领域。制衡机制(Checks and balances):智能体之间可以相互审查和优化彼此的工作。可扩展性(Scalability):系统可以扩展以纳入更多专业化智能体。鲁棒性(Robustness):系统不依赖于单一智能体的能力。

在 Multi-Agent 系统中,具有不同角色的专业化人工智能智能体协作解决单一智能体难以应对的复杂问题。这种方法类似于人类团队协作,不同的专家贡献各自的专业知识以实现共同目标。

CWIC Flow:Clearwater 的开创性 Multi-Agent 系统

在 Clearwater Analytics,我们早在 LangGraph 等框架出现之前就着手构建了一个人工智能驱动的 Multi-Agent 系统。我们的解决方案,Clearwater 智能控制台流程(CWIC Flow),是一个支持知识、应用和数据感知的复杂人工智能平台。与传统聊天机器人解决方案不同,CWIC Flow 协调多个专业智能体——这些智能体具备工具、技能和记忆能力——为客户提供高度上下文化和可操作的洞察。这一架构上的飞跃使 Clearwater 在行业广泛采用此类范式之前就处于领先地位,展示了一个 Multi-Agent 人工智能系统。

CWIC Flow 的架构

CWIC Flow 集成了一个智能组件层次结构:

CWIC 工具:这些工具提供对外部 API、数据库和计算资源的访问,使人工智能智能体能够与结构化和非结构化数据交互。CWIC 技能:结合多种工具的编排工作流,使系统能够高效解决复杂任务。CWIC 专业智能体:为特定投资和金融任务训练的自主智能体。它们利用工具、技能和精炼的知识库动态处理客户查询。规划与记忆:CWIC Flow 维护短期和长期记忆,使专业智能体能够从交互中学习并随时间优化其决策能力。这导致了一个更具适应性和响应性的人工智能系统。

通过这种分层方法,CWIC Flow 实现了实时数据感知、上下文推理和无缝自动化,减少了运营开销,同时提升了用户体验。该平台支持 RAG(检索增强生成)技术、工具链和基于大语言模型(LLM)的决策,所有这些都在一个确保准确性和合规性的治理人工智能框架内运行。


CWIC Flow 的优势

虽然新的框架(如 LangGraph)现在为 Multi-Agent 人工智能应用提供了结构化工作流,但 Clearwater Analytics 在这些框架成为主流之前就已经开发了一个类似的、健壮的系统。CWIC Flow 的关键差异化因素包括:

Multi-Agent 工作流的早期实现:CWIC Flow 在 LangGraph 等框架正式化 Multi-Agent 编排之前,就已设计为协调多个专业智能体。领域特定的人工智能智能体:我们的专业智能体具备深厚的金融专业知识,提供高度准确且上下文驱动的洞察。生产就绪的治理:与通用框架不同,CWIC Flow 集成了严格的访问控制、审计日志和人工智能护栏,以确保数据安全和合规性。无缝云集成:CWIC Flow 利用 AWS、Azure 和 Snowflake 进行实时数据处理,确保客户获得最新信息。

有关我们 Multi-Agent 系统的演示,可观看网络研讨会:《Clearwater Analytics 如何使用小型语言模型(SLMs)创建智能体系统》。

CWIC Flow 代表了一个在 Clearwater Analytics 开发并不断完善的高度复杂 Multi-Agent 系统。在深入探讨 CWIC Flow 架构的复杂性之前,通过一个更简单的实现来理解 Multi-Agent 系统的基本概念是有益的。本文将使用 LangChain 构建一个简单的 Multi-Agent 系统。这种方法使我们能够以更易于理解的方式展示智能体协作、专业化角色和编排工作流的核心原则。通过这一基础,读者可以更好地欣赏 CWIC Flow 作为强大企业解决方案的复杂设计选择和高级功能。我们在 LangChain 示例中展示的概念——尽管更简单——与支撑 CWIC Flow 更全面实现的基本原则相同。

构建一个简单的 Multi-Agent 系统

虽然像 LangGraph 这样的框架为构建 Multi-Agent 系统提供了结构化方式,但重要的是要理解,即使没有专门的框架,也可以创建有效的 Multi-Agent 架构。让我们探索一种使用基本 Python 和 LangChain 组件构建 Multi-Agent 系统的简单方法。

我们将构建的内容

在本文中,我们将构建一个协作研究助手系统,包含多个专业化智能体:

研究智能体:负责收集信息。评论智能体:评估并挑战研究结果。写作智能体:将信息合成为连贯的文本。协调智能体:管理智能体之间的工作流。

到本文结束时,您将拥有一个能够协作执行研究任务的完整 Multi-Agent 系统。

让我们开始设置环境!

设置环境

首先,我们需要安装必要的软件包并设置环境:

# 安装所需软件包!pip install langchain python-dotenv openai langchain-community langchain-openai
# 加载环境变量import osfrom dotenv import load_dotenv
load_dotenv()# 从 .env 文件加载 API 密钥
# 验证 API 密钥是否加载if os.getenv("OPENAI_API_KEY")isNone:print("警告:未在环境变量中找到 OPENAI_API_KEY。")else:print("在环境变量中找到 OPENAI_API_KEY。")

设计智能体提示

Multi-Agent 系统的核心是精心设计的系统提示,定义每个智能体的角色和职责:

研究智能体

RESEARCHER_SYSTEM_PROMPT ="""您是一个研究智能体,属于协作研究助手系统的一部分。您的角色是收集并提供关于任何主题或问题的准确、相关信息。
您的职责包括:1.分析研究问题以理解所需信息2.基于您的知识提供全面、结构清晰的回答3.突出关键点和重要信息4.诚实说明您知识的局限性5.保持客观,避免回答中的偏见
以清晰、有序的方式格式化您的回答,适当时使用章节、项目符号或编号列表。尽可能引用信息来源。
请记住,您的目标是提供最有帮助、准确的信息,以协助研究过程。"""def researcher_agent(messages):"""研究智能体,分析问题并提供信息丰富的回答。"""# 添加系统提示以指导研究智能体的行为    researcher_messages =[SystemMessage(content=RESEARCHER_SYSTEM_PROMPT)]+ messages
# 创建 ChatOpenAI 实例    llm =ChatOpenAI(        temperature=0.5,# 较低温度以获得更事实性的回答        model_name="gpt-4o",        openai_api_key=os.environ.get("OPENAI_API_KEY"))
# 从大语言模型获取回答    response = llm(researcher_messages)
print("\n--- 研究智能体回答 ---")print(f"{response.content[:300]}...\n")
return response

评论智能体

CRITIC_SYSTEM_PROMPT ="""您是一个评论智能体,属于协作研究助手系统的一部分。您的角色是评估和挑战研究智能体提供的信息,以确保准确性、完整性和客观性。
您的职责包括:1.分析研究结果的准确性、完整性和潜在偏见2.识别信息中的差距或逻辑不一致3.提出可能被忽略的重要问题4.建议改进或替代视角5.确保最终信息平衡且全面
您的批评应具有建设性。您的目标不是否定研究者的工作,而是加强它。以清晰、有序的方式格式化您的反馈,突出需要关注的特定点。
请记住,您的最终目标是确保最终研究输出的质量尽可能高。"""def critic_agent(messages):"""评论智能体,评估并挑战研究者的发现。"""# 添加系统提示以指导评论智能体的行为    critic_messages =[SystemMessage(content=CRITIC_SYSTEM_PROMPT)]+ messages
# 创建 ChatOpenAI 实例    llm =ChatOpenAI(        temperature=0.7,# 较高温度以获得更有创意的批评        model_name="gpt-4o",        openai_api_key=os.environ.get("OPENAI_API_KEY"))
# 从大语言模型获取回答    response = llm(critic_messages)
print("\n--- 评论智能体回答 ---")print(f"{response.content[:300]}...\n")
return response

写作智能体

WRITER_SYSTEM_PROMPT ="""您是一个写作智能体,属于协作研究助手系统的一部分。您的角色是将研究智能体提供的信息和评论智能体的反馈合成为连贯、写得好的回答。
您的职责包括:1.分析研究者提供的信息和评论者的反馈2.以逻辑清晰、易于理解的结构组织信息3.以清晰、引人入胜的写作风格呈现信息4.平衡不同视角,确保客观性5.创建全面、准确且写得好的最终回答
以清晰、有序的方式格式化您的回答,适当时使用标题、段落和项目符号。使用简单语言解释复杂概念,并在有帮助时提供示例。
请记住,您的目标是创建有效向用户传达信息的最终回答。"""def writer_agent(messages):"""写作智能体,综合研究者和评论者的信息。"""# 添加系统提示以指导写作智能体的行为    writer_messages =[SystemMessage(content=WRITER_SYSTEM_PROMPT)]+ messages
# 创建 ChatOpenAI 实例    llm =ChatOpenAI(        temperature=0.6,# 平衡温度以兼顾创造力和准确性        model_name="gpt-4o",        openai_api_key=os.environ.get("OPENAI_API_KEY"))
# 从大语言模型获取回答    response = llm(writer_messages)
print("\n--- 写作智能体回答 ---")print(f"{response.content[:300]}...\n")
return response

协调智能体

与其他智能体一样,我们首先定义一个系统提示,概述协调智能体的角色和职责:

COORDINATOR_SYSTEM_PROMPT ="""您是一个协调智能体,负责管理协作研究助手系统中专业智能体之间的工作流。您的角色是分析查询,确定哪些智能体应参与,并确保最终回答满足用户需求。
您的团队包括:1.研究智能体:收集并提供关于主题的准确、相关信息2.评论智能体:评估并挑战信息以确保准确性和完整性3.写作智能体:将信息合成为连贯、写得好的回答
您的职责包括:1.分析用户查询以确定哪些智能体应参与2.决定智能体处理查询的顺序3.确定何时需要额外研究或反馈4.确保最终回答满足用户需求
对于每个查询,您必须决定以下下一步之一:-"researcher":首先将查询发送给研究智能体-"done":查询已完全解决,无需进一步行动
以 JSON 对象格式化您的回答,包含两个字段:1."reasoning":您的逐步思考过程2."next":您对下一步的决定("researcher"或"done")
示例:{"reasoning":"此查询要求关于量子计算的事实信息,需要研究。","next":"researcher"}"""

该提示确立了协调智能体的决策角色,并为其回答提供了结构化格式,有助于系统中的程序化路由。

实现协调智能体

现在,让我们实现协调智能体函数,分析状态并确定工作流中的下一步:

def coordinator_agent(messages):"""协调智能体,管理其他智能体之间的工作流。"""# 添加系统提示以指导协调智能体的行为    coordinator_messages =[SystemMessage(content=COORDINATOR_SYSTEM_PROMPT)]+ messages
# 创建 ChatOpenAI 实例    llm =ChatOpenAI(        temperature=0.3,# 较低温度以获得更一致的决策        model_name="gpt-4o",        openai_api_key=os.environ.get("OPENAI_API_KEY"))
# 从大语言模型获取回答    response = llm(coordinator_messages)
# 解析 JSON 回答以获取下一步try:        response_content = response.content        decision = json.loads(response_content)# 如果未指定,默认为研究智能体        next_step = decision.get("next","researcher")
# 打印协调智能体的推理print(f"协调智能体推理: {decision.get('reasoning', '未提供推理')}")print(f"下一步: {next_step}")exceptExceptionas e:# 如果解析 JSON 出错,默认为研究智能体print(f"解析协调智能体回答出错: {e}")print(f"默认使用研究智能体")        next_step ="researcher"
return next_step

请注意,我们为协调智能体使用了较低的温度(0.3),相比其他智能体,这促进了一致、可靠的决策——这正是我们对系统“管理者”的期望。

构建动态 Multi-Agent 系统

有了协调智能体,我们可以将系统从固定的顺序工作流转变为动态工作流,由协调智能体决定采取哪条路径:

def run_multi_agent_system(question):"""运行 Multi-Agent 系统,处理给定问题。"""print(f"\n\n{'='*50}")print(f"查询: {question}")print(f"{'='*50}\n")
# 用问题初始化消息    messages =[HumanMessage(content=question)]
# 从协调智能体开始    next_step = coordinator_agent(messages)
# 继续直到协调智能体决定完成while next_step !="done":if next_step =="researcher":# 运行研究智能体            researcher_response = researcher_agent(messages)            messages.append(researcher_response)
# 运行评论智能体            critic_response = critic_agent(messages)            messages.append(critic_response)
# 运行写作智能体            writer_response = writer_agent(messages)            messages.append(writer_response)
# 返回协调智能体            next_step = coordinator_agent(messages)else:# 如果下一步未被识别,默认为完成print(f"未识别的下一步: {next_step}")            next_step ="done"
# 查找最终回答(最后一条 AI 消息)    final_response =Nonefor message in reversed(messages):if isinstance(message,AIMessage):            final_response = message.contentbreak
if final_response:print("\n--- 最终回答 ---")print(final_response)
return messages

这创建了一个动态工作流,其中:

协调智能体分析用户查询并决定是否需要研究团队参与或直接提供回答。如果需要研究,查询将流经我们的专业智能体:研究智能体 → 评论智能体 → 写作智能体。写作智能体完成工作后,控制权返回给协调智能体,协调智能体可以选择将回答发送给用户或启动额外研究。这创建了一个循环,复杂查询可以通过多次研究、评论和写作的迭代进行优化。

可视化工作流图

基本 Multi-Agent 系统架构

让我们使用 Mermaid 图表可视化 Multi-Agent 系统架构:

graph TD    A[用户查询]--> B[协调智能体]    B --> C{决策}    C -->|研究| D[研究智能体]    C -->|完成| E[最终回答]    D --> F[评论智能体]    F --> G[写作智能体]    G --> B

不同查询类型的决策流

让我们也可视化不同类型查询如何通过系统流动:

graph TD    A[用户查询]--> B{查询类型}    B -->|简单事实| C[协调智能体:完成]    B -->|复杂研究| D[协调智能体:研究]    B -->|细致伦理| E[协调智能体:研究]    D --> F[研究智能体]    E --> F    F --> G[评论智能体]    G --> H[写作智能体]    H --> I[协调智能体]    I -->|需要更多研究| F    I -->|完成| J[最终回答]

详细的信息流图

以下是信息如何通过 Multi-Agent 系统的更详细视图:

graph TD    A[用户查询]--> B[协调智能体]    B --> C[消息历史]    B --> D{分析查询}    D -->|需要研究| E[研究智能体]    D -->|直接回答| F[最终回答]    E --> G[生成研究]    G --> H[评论智能体]    H --> I[评估研究]    I --> J[写作智能体]    J --> K[合成回答]    K --> C    C --> B

协调智能体的决策过程

协调智能体基于以下几个因素做出决策:

查询的复杂性是否需要事实信息是否涉及伦理或主观分析当前消息历史的状态

动态系统运行示例

让我们看看我们的动态系统如何处理不同类型的查询:

if __name__ =="__main__":print("启动 Multi-Agent 系统...")
# 测试不同问题print("\n--- 测试复杂研究问题 ---")    result1 = run_multi_agent_system("可再生能源技术的最新进展及其对气候变化的潜在影响是什么?")
print("\n--- 测试简单事实问题 ---")    result2 = run_multi_agent_system("法国的首都是什么?")
print("\n--- 测试细致伦理问题 ---")    result3 = run_multi_agent_system("在医疗决策中使用人工智能的伦理影响是什么?")
print("\n测试完成!")

示例 1:简单事实查询

查询:法国的首都是什么?

协调智能体推理: 此查询是一个简单的需要具体信息的事实问题。

下一步:完成

对于简单的事实查询,协调智能体可以立即确定无需复杂的研究过程。

示例 2:复杂研究查询

查询:可再生能源技术的最新进展及其对气候变化的潜在影响是什么?

协调智能体推理: 此查询需要收集关于可再生能源技术进展及其对气候变化潜在影响的最新信息,涉及研究和分析。

下一步:研究智能体

对于复杂研究查询,协调智能体调用整个专业智能体团队以提供全面回答。

研究智能体回答: 可再生能源技术的进步在通过减少温室气体排放和向清洁能源过渡来应对气候变化中至关重要。以下是可再生能源技术的最新进展及其对气候变化的潜在影响:

1.太阳能

评论智能体回答: 虽然对可再生能源技术进展的概述总体准确,但有几个领域可以通过额外细节和澄清来增强理解和平衡视角:

1.太阳能钙钛矿太阳能电池:虽然前景光明,但钙钛矿太阳能…

写作智能体回答: 在回顾可再生能源技术的最新进展及其对气候变化的潜在影响时,显然这些创新在向可持续能源未来过渡中发挥了关键作用。以下是更全面的概述,包含额外细节和考虑因素…

协调智能体推理: 此查询寻求关于可再生能源技术最新进展及其对气候变化影响的详细信息,需要对每种技术进行深入分析和评估。回答提供了太阳能、风能、水电、地热和生物能源的概述,突出了关键发展和其影响。然而,为了确保全面理解,针对每种技术确定了额外的细节和考虑因素,包括挑战、环境影响和可持续性问题。通过解决这些方面,回答旨在提供关于该主题的更平衡和信息丰富的视角。

下一步:完成

最终回答: 在回顾可再生能源技术的最新进展及其对气候变化的潜在影响时,显然这些创新在向可持续能源未来过渡中发挥了关键作用。以下是更全面的概述,包含额外细节和考虑因素:

1.太阳能进展钙钛矿太阳能电池:尽管效率高,但由于铅含量导致的稳定性和毒性问题正在通过对替代材料的研究解决。双面太阳能板:雪覆盖和地面反射率等环境因素会影响其性能,效率因安装条件而异。2.风能进展浮动风力涡轮机:虽然在深水位置有前景,但挑战包括较高的初始成本、维护复杂性和电网集成问题。更大涡轮机:除了增加能源产出外,野生动物影响和社区接受度等环境和社会考虑因素也至关重要。3.水电进展抽水蓄能水电:地理和生态限制以及对合适地形的需要影响其可行性和可扩展性。径流水电:尽管环境影响较低,水生生态系统和水质管理仍是重要考虑因素。4.地热能进展增强地热系统:创建人工储层的技术和经济可行性是正在研究解决的障碍。直接使用应用:了解地热资源的地理限制对于最大化其在供暖和制冷应用中的利用至关重要。5.生物能源进展高级生物燃料:土地使用、粮食安全和生命周期排放的可持续性问题强调了对生物燃料部署进行整体评估的重要性。沼气生产:将沼气融入循环经济中的废物管理和农业应用可以增强其在减排中的作用。

通过承认与每种可再生能源技术相关的复杂性和考虑因素,包括环境影响、经济挑战和政策含义,可以更细致地理解其对气候变化的潜在影响。强调不仅需要技术进步,还需要更广泛的可持续性方面的整体方法,对于最大化可再生能源在应对气候变化中的益处至关重要。

示例 3:细致伦理查询

查询:在医疗决策中使用人工智能的伦理影响是什么?

协调智能体推理: 此查询涉及讨论人工智能在医疗中的伦理影响,需要结合研究和批判性评估。

下一步:研究智能体

对于细致的伦理问题,协调智能体认识到需要事实信息和批判性分析。

研究智能体回答: 在医疗决策中使用人工智能会引发需要仔细考虑的各种伦理影响。以下是一些关键点:

1.隐私和数据安全人工智能系统需要访问大量患者数据。确保这些数据的隐私和安全是…

评论智能体回答: 以下是一些额外的考虑点和问题,以及加强研究的建议:

1.监管和伦理指南探讨管理人工智能在医疗中使用的现有监管框架和伦理指南。它们是如何实施的,是否存在需要解决的差距…

写作智能体回答: 根据提供的反馈,我扩展了关于在医疗决策中使用人工智能的伦理影响的讨论,并包含了额外的考虑点和问题:

1.监管和伦理指南探讨管理人工智能在医疗中使用的现有监管框架和伦理指南…

协调智能体推理: 此查询深入探讨了在医疗决策中使用人工智能的伦理影响,需要全面分析,包括隐私、透明度、偏见、患者自主权、责任、公平等方面的考虑。回答对这些伦理影响进行了深入探索,并提出了额外的点和问题,以进一步增强对该主题的理解。为了响应提供的反馈,回答已扩展,包含额外的洞察和考虑因素,提供了关于人工智能在医疗中的伦理挑战和机遇的更整体视角。

下一步:完成

最终回答: 根据提供的反馈,我扩展了关于在医疗决策中使用人工智能的伦理影响的讨论,并包含了额外的考虑点和问题:

1.监管和伦理指南探讨管理人工智能在医疗中使用的现有监管框架和伦理指南。它们是如何实施的,是否存在需要解决的差距?考虑 FDA 等组织在监管基于人工智能的医疗技术以确保患者安全和伦理使用中的角色。2.人类监督尽管人工智能可以增强决策,但必须强调人类监督的重要性。医疗系统如何确保人工智能推荐由人类专家进行批判性评估?讨论人工智能系统与医疗提供者之间共享决策的概念,以利用两者的优势实现最佳患者护理。3.长期影响考虑人工智能在医疗中整合的长期影响。它会如何随时间改变患者与提供者的关系?潜在的社会影响是什么?探讨算法偏见的概念及其对医疗差异的长期影响,强调持续监控和缓解策略的需要。4.教育和培训医疗专业人员需要了解人工智能技术及其影响。培训医疗提供者有效使用和理解人工智能系统的最佳实践是什么?强调跨学科教育的重要性,以弥合医疗与技术之间的差距,促进不同利益相关者之间的协作和理解。5.国际视角考虑人工智能在医疗中的伦理影响如何因不同文化和法律背景而异。国际标准如何比较,可以从全球方法中学到什么?探讨来自不同国家的案例研究,以了解文化规范和医疗系统如何影响人工智能实施在不同环境中的伦理考虑。6.患者参与研究如何积极让患者参与关于人工智能在医疗中的讨论。如何将患者反馈和视角融入人工智能系统的开发和实施?讨论以患者为中心的人工智能设计概念,其中患者的偏好和价值观被纳入开发过程,以确保人工智能解决方案符合伦理且对患者友好。7.成功案例与挑战提供医疗中人工智能应用的成功案例,以及现实世界实施中面临的挑战。从这些经验中可以学到什么?突出如 IBM Watson for Oncology 的成功人工智能应用,并讨论数据互操作性和算法透明度等需要解决的挑战,以实现人工智能在医疗中的广泛采用和伦理使用。

通过解决这些额外的点和问题,可以实现对在医疗决策中使用人工智能的伦理影响的更彻底探索,为政策制定者、医疗专业人员和该领域的研究人员提供有价值的洞察。

测试完成!

协调智能体方法的优势

自适应工作流:系统可以根据查询的性质调整其响应策略。高效资源使用:简单查询绕过不必要的处理步骤。迭代优化:复杂查询可以通过多次研究和优化的循环进行完善。可扩展架构:可以轻松集成新的专业智能体。提高回答质量:每个查询都得到适当的关注和专业水平。

协调智能体将一组专业人工智能智能体转变为一个能够以适当深度和效率处理广泛查询的连贯、智能系统。通过实现这种架构,我们创建了一个 Multi-Agent 系统,能够:

根据查询的复杂性和要求智能路由查询。对简单问题提供直接回答,避免不必要的处理。为需要研究和分析的复杂查询调用专业智能体。在需要时通过多次反馈循环迭代优化回答。

这种方法代表了构建人工智能系统的重要进步,这些系统可以根据每个用户查询的特定需求调整其工作流,提供更相关、高效和高质量的回答。

结论

虽然 Clearwater Analytics 在 LangGraph 等框架可用之前开发了 CWIC Flow 作为一个复杂 Multi-Agent 系统,但我们继续评估新兴技术以增强我们的能力。在下一篇文章中,我们将探讨如何使用 LangGraph 构建 Multi-Agent 系统,这是一个提供类似于我们在 CWIC Flow 中已实现结构的框架。

随着人工智能技术的发展,Clearwater 仍致力于采用增强我们为客户提供可操作洞察能力的创新,同时保持我们在安全性、合规性和准确性方面的行业领先标准。


(文:PyTorch研习社)

发表评论