AI 应用正在从单 Agent 向多 Agent 架构演进,就如同人类组织一样,AI 面对的业务问题越复杂,专业分工是必然,这时,如何管理协调这些分工Agent就越重要。正是这一原因,各家公司都发布了自家的 multiAgent 框架来解决这一问题,如 OpenAI 的 Swarm,微软的 AutoGen 等。
今天介绍的就是 AWS 近期推出的一个 MultiAgent 框架——AWS Multi-Agent Orchestrator[1],这是 AWS 在 Multi-Agent 领域的首次尝试,提供了一整套强大而优雅的多 Agent 系统编排解决方案,具备多项特色的功能,值得学习借鉴。
Multi-Agent Orchestrator 类似于一个复杂的交响乐队指挥。当用户发送请求时,分类器(指挥)使用 LLM 分析请求,考虑用户请求、可用Agent描述、完整对话历史和当前会话上下文。然后,将请求路由到最合适的Agent,Agent使用其对话上下文处理请求。响应返回后,对话历史自动保存。
工作流程图
架构上由以下模块构成:
-
Orchestrator:协调所有组件,管理信息流。
-
Classifier:分析用户输入,识别最合适的Agent。
-
Agents:处理请求并生成响应。
-
Conversation Storage:维护对话历史。
-
Retrievers:提供上下文和相关信息,增强Agent性能。
与其他的框架相比,它有以下特点:
-
灵活的 Agent 能力,它的每个 Agent 可由不同模型驱动,并可部署在任何地方。并且提供很多具有 AWS 特色的内置 Agent,这些 Agent 简化了开发者与 AWS 服务使用集成的成本,比如 Bedrock LLM Agent 支持带有内置护栏和工具使用能力的 Amazon Bedrock 模型 、Lex Bot Agent 可与与 Amazon Lex 机器人集成,Lambda Agent 能够支持对接其他 AWS 服务接口等。同时支持创建自定义 Agent,集成额外服务或系统。
-
智能路由模式,它允许创建复杂的路由模式,比如成本优化路,他可以根据性能需求进行路由,比如,简单的路由到小模型,复杂的任务路由到复杂模型,以及专业任务路由到专业模型上。同时还无缝支持多语言。
-
智能记忆管理,多 Agent 系统记忆管理是除路由外另一个重要问题就是记忆管理。该框架支持跨多次交互的连贯对话,并内置记忆存储实现,也支持自定义。
-
强大的可观测性工具,对于一个 Agent 系统来讲,可观测性尤为重要,该框架包括全面的日志记录和监控分析功能,比如性能指标,执行时间等。同时,它提供了一个称作 Agent 重叠的分析工具( Agent Overlap Analysis tool)旨在优化 MultiAgent 系统,能够专门帮助分析系统中冗余Agent、潜在路由冲突等多 Agent 系统特有的问题。
这是一个完整的例子:
import uuid
import asyncio
from typing import Optional, List, Dict, Any
import json
import sys
from multi_agent_orchestrator.orchestrator import MultiAgentOrchestrator, OrchestratorConfig
from multi_agent_orchestrator.agents import (BedrockLLMAgent,
BedrockLLMAgentOptions,
AgentResponse,
AgentCallbacks)
from multi_agent_orchestrator.types import ConversationMessage, ParticipantRole
orchestrator = MultiAgentOrchestrator(options=OrchestratorConfig(
LOG_AGENT_CHAT=True,
LOG_CLASSIFIER_CHAT=True,
LOG_CLASSIFIER_RAW_OUTPUT=True,
LOG_CLASSIFIER_OUTPUT=True,
LOG_EXECUTION_TIMES=True,
MAX_RETRIES=3,
USE_DEFAULT_AGENT_IF_NONE_IDENTIFIED=True,
MAX_MESSAGE_PAIRS_PER_AGENT=10
))
#添加Agent
class BedrockLLMAgentCallbacks(AgentCallbacks):
def on_llm_new_token(self, token: str) -> None:
# handle response streaming here
print(token, end='', flush=True)
tech_agent = BedrockLLMAgent(BedrockLLMAgentOptions(
name="Tech Agent",
streaming=True,
description="Specializes in technology areas including software development, hardware, AI, \
cybersecurity, blockchain, cloud computing, emerging tech innovations, and pricing/costs \
related to technology products and services.",
callbacks=BedrockLLMAgentCallbacks()
))
orchestrator.add_agent(tech_agent)
health_agent = BedrockLLMAgent(BedrockLLMAgentOptions(
name="Health Agent",
description="Focuses on health and medical topics such as general wellness, nutrition, diseases, treatments, mental health, fitness, healthcare systems, and medical terminology or concepts.",
callbacks=BedrockLLMAgentCallbacks()
))
orchestrator.add_agent(health_agent)
# 发送消息
async def handle_request(_orchestrator: MultiAgentOrchestrator, _user_input: str, _user_id: str, _session_id: str):
response: AgentResponse = await _orchestrator.route_request(_user_input, _user_id, _session_id)
# Print metadata
print("\nMetadata:")
print(f"Selected Agent: {response.metadata.agent_name}")
if response.streaming:
print('Response:', response.output.content[0]['text'])
else:
print('Response:', response.output.content[0]['text'])
if __name__ == "__main__":
USER_ID = "user123"
SESSION_ID = str(uuid.uuid4())
print("Welcome to the interactive Multi-Agent system. Type 'quit' to exit.")
while True:
# Get user input
user_input = input("\nYou: ").strip()
if user_input.lower() == 'quit':
print("Exiting the program. Goodbye!")
sys.exit()
# Run the async function
asyncio.run(handle_request(orchestrator, user_input, USER_ID, SESSION_ID))
小结
AWS Multi-Agent Orchestrator 相较于 OpenAI 的 MultiAgent 框架,其完成度明显上了一个台阶,并且是面向生产设计的,适用于构建复杂且高效的 AI 系统。特别是对于本身就在 AWS 上部署应用的开发者来说,是一个非常值得考虑的选择。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。