什么是Agent Squad
Agent Squad是一个用于管理多个AI代理和处理复杂对话的灵活框架。它能智能路由查询并在交互过程中维护上下文。
该系统提供预构建组件以便快速部署,同时允许轻松集成自定义代理和对话消息存储解决方案。
这种适应性使其适用于从简单聊天机器人到复杂AI系统的广泛应用场景,满足多样化需求并高效扩展。
🔖 功能特性
-
• 🧠 智能意图分类 — 根据上下文和内容动态路由查询到最合适的代理 -
• 🔤 双语支持 — 完整实现Python和TypeScript双版本 -
• 🌊 灵活的代理响应 — 支持来自不同代理的流式和非流式响应 -
• 📚 上下文管理 — 跨多个代理维护和使用对话上下文,确保交互连贯性 -
• 🔧 可扩展架构 — 轻松集成新代理或自定义现有代理以满足特定需求 -
• 🌐 通用部署 — 可在任何环境运行 – 从AWS Lambda到本地环境或任何云平台 -
• 📦 预构建代理和分类器 — 提供多种开箱即用的代理和分类器实现
🏗️ 高层架构流程图

-
1. 流程始于用户输入,由分类器进行分析 -
2. 分类器利用代理特性和代理对话历史来选择最适合任务的代理 -
3. 选定代理后,它处理用户输入 -
4. 协调器在将响应返回给用户之前保存对话,更新代理对话历史
介绍SupervisorAgent:代理协调
Agent Squad现在包含强大的新SupervisorAgent,可实现多个专业代理之间的复杂团队协调。这个新组件实现了”工具化代理”架构,允许主导代理并行协调专业代理团队,维护上下文并提供连贯响应。

关键能力:
-
• 🤝 团队协调 – 协调多个专业代理共同处理复杂任务 -
• ⚡ 并行处理 – 同时执行多个代理查询 -
• 🧠 智能上下文管理 – 维护所有团队成员间的对话历史 -
• 🔄 动态委派 – 智能地将子任务分配给合适的团队成员 -
• 🤖 代理兼容性 – 兼容所有代理类型(Bedrock、Anthropic、Lex等)
SupervisorAgent可通过两种强大方式使用:
-
1. 直接使用 – 当特定任务需要专门的团队协调时直接调用 -
2. 分类器集成 – 将其作为分类器中的一个代理,构建具有多个专业团队的复杂分层系统
以下是该代理可应用的部分场景示例:
-
• 拥有专业子团队的客户支持团队 -
• AI电影制作工作室 -
• 旅行规划服务 -
• 产品开发团队 -
• 医疗协调系统
💬 演示应用
在下面的屏幕录制中,我们展示了使用6个专业代理的扩展版演示应用:
-
• 旅行代理:基于Amazon Lex Bot -
• 天气代理:使用Bedrock LLM代理和查询open-meteo API的工具 -
• 餐厅代理:实现为Amazon Bedrock代理 -
• 数学代理:使用Bedrock LLM代理和两个执行数学运算的工具 -
• 技术代理:设计用于回答技术问题的Bedrock LLM代理 -
• 健康代理:专注于处理健康相关查询的Bedrock LLM代理
观看系统如何在不同主题间无缝切换上下文,从预订航班到查询天气、解决数学问题和提供健康信息。
注意系统如何为每个查询选择合适的代理,即使在简短的后续输入中也能保持连贯性。
演示突出了系统处理复杂多轮对话的能力,同时保持上下文并利用跨多个领域的专业代理。
🎯 示例与快速入门
通过我们多样化的示例集获得Agent Squad的实践经验:
-
• 演示应用: -
• Streamlit全局演示:展示多个演示的单一Streamlit应用,包括: -
• AI电影制作工作室 -
• AI旅行规划师 -
• 聊天演示应用: -
• 探索处理旅行、天气、数学和健康等多个领域的专业代理 -
• 电商支持模拟器:体验AI驱动的客户支持: -
• 自动生成常见查询的响应 -
• 智能路由复杂问题至人工支持 -
• 实时聊天和电子邮件式沟通 -
• 复杂案例中的人工介入交互 -
• 示例项目:在 examples
文件夹中探索我们的示例实现: -
• chat-demo-app
:具有多个专业代理的基于Web的聊天界面 -
• ecommerce-support-simulator
:AI驱动的客户支持系统 -
• chat-chainlit-app
:使用Chainlit构建的聊天应用 -
• fast-api-streaming
:支持流式传输的FastAPI实现 -
• text-2-structured-output
:自然语言转结构化数据 -
• bedrock-inline-agents
:Bedrock内联代理示例 -
• bedrock-prompt-routing
:Bedrock提示路由示例代码
示例提供Python和TypeScript两种版本。查看我们的文档获取设置和使用Agent Squad框架的全面指南!
📚 深度探索:故事、博客与播客
发现Agent Squad的创意实现和多样化应用:
-
• 从”Bonjour”到”登机牌”:多语言AI聊天机器人预订航班本文演示如何使用Agent Squad框架构建多语言聊天机器人。文章解释了如何将Amazon Lex机器人作为代理,与其他2个新代理一起工作,仅用几行代码即可实现多语言支持。 -
• 超越自动回复:构建AI驱动的电商支持系统本文演示如何构建AI驱动的多代理系统来自动化电商客户邮件支持。它涵盖了使用Agent Squad框架的专业AI代理的架构和设置,将自动化处理与人工监督相结合。指南探讨了邮件接收、智能路由、自动回复生成和人工验证,提供了在客户支持中平衡AI效率与人类专业知识的全面方法。 -
• 说出来,AI:用Amazon Connect、Lex和Bedrock为你的代理发声本文演示如何构建AI客户呼叫中心。它涵盖了使用Agent Squad框架与Amazon Connect和Amazon Lex语音交互的专业AI代理的架构和设置。 -
• 解锁Bedrock InvokeInlineAgent API的隐藏潜力了解如何使用Agent Squad框架和InvokeInlineAgent API扩展Amazon Bedrock代理超越知识库限制。本文演示了为企业级AI应用创建动态代理和选择知识库。 -
• 增强Amazon Bedrock Flows了解如何使用Agent Squad框架增强Amazon Bedrock Flows的对话记忆和多流程协调。本指南展示了如何克服Bedrock Flows的限制,构建具有持久记忆和流程间智能路由的更复杂AI工作流。
TypeScript版本
安装
🔄
multi-agent-orchestrator
更名为agent-squad
npm install agent-squad
使用
以下示例演示如何使用Agent Squad与两种不同类型的代理:支持Converse API的Bedrock LLM代理和Lex Bot代理。展示了系统在集成各种AI服务方面的灵活性。
import { AgentSquad, BedrockLLMAgent, LexBotAgent } from"agent-squad";
const orchestrator = newAgentSquad();
// 添加支持Converse API的Bedrock LLM代理
orchestrator.addAgent(
newBedrockLLMAgent({
name: "Tech Agent",
description:
"专长于技术领域,包括软件开发、硬件、AI、网络安全、区块链、云计算、新兴技术创新以及与技术产品和服务相关的定价/成本。",
streaming: true
})
);
// 添加处理旅行相关查询的Lex Bot代理
orchestrator.addAgent(
newLexBotAgent({
name: "Travel Agent",
description: "帮助用户预订和管理航班",
botId: process.env.LEX_BOT_ID,
botAliasId: process.env.LEX_BOT_ALIAS_ID,
localeId: "en_US",
})
);
// 示例用法
const response = await orchestrator.routeRequest(
"我想预订航班",
'user123',
'session456'
);
// 处理响应(流式或非流式)
if (response.streaming == true) {
console.log("\n** 流式响应 ** \n");
// 立即发送元数据
console.log(`> 代理ID: ${response.metadata.agentId}`);
console.log(`> 代理名称: ${response.metadata.agentName}`);
console.log(`> 用户输入: ${response.metadata.userInput}`);
console.log(`> 用户ID: ${response.metadata.userId}`);
console.log(`> 会话ID: ${response.metadata.sessionId}`);
console.log(
`> 附加参数:`,
response.metadata.additionalParams
);
console.log(`\n> 响应: `);
// 流式传输内容
forawait (const chunk of response.output) {
if (typeof chunk === "string") {
process.stdout.write(chunk);
} else {
console.error("收到意外的块类型:", typeof chunk);
}
}
} else {
// 处理非流式响应(AgentProcessingResult)
console.log("\n** 响应 ** \n");
console.log(`> 代理ID: ${response.metadata.agentId}`);
console.log(`> 代理名称: ${response.metadata.agentName}`);
console.log(`> 用户输入: ${response.metadata.userInput}`);
console.log(`> 用户ID: ${response.metadata.userId}`);
console.log(`> 会话ID: ${response.metadata.sessionId}`);
console.log(
`> 附加参数:`,
response.metadata.additionalParams
);
console.log(`\n> 响应: ${response.output}`);
}
Python版本
🔄
multi-agent-orchestrator
更名为agent-squad
# 可选:设置虚拟环境
python -m venv venv
source venv/bin/activate # Windows使用`venv\Scripts\activate`
pip install agent-squad[aws]
默认用法
以下是使用Bedrock LLM代理和Lex Bot代理的等效Python示例:
import sys
import asyncio
from agent_squad.orchestrator import AgentSquad
from agent_squad.agents import BedrockLLMAgent, BedrockLLMAgentOptions, AgentStreamResponse
orchestrator = AgentSquad()
tech_agent = BedrockLLMAgent(BedrockLLMAgentOptions(
name="Tech Agent",
streaming=True,
description="专长于技术领域,包括软件开发、硬件、AI、网络安全、区块链、云计算、新兴技术创新以及与技术产品和服务相关的定价/成本。",
model_id="anthropic.claude-3-sonnet-20240229-v1:0",
))
orchestrator.add_agent(tech_agent)
health_agent = BedrockLLMAgent(BedrockLLMAgentOptions(
name="Health Agent",
streaming=True,
description="专长于健康和福祉",
))
orchestrator.add_agent(health_agent)
asyncdefmain():
# 示例用法
response = await orchestrator.route_request(
"什么是AWS Lambda?",
'user123',
'session456',
{},
True
)
# 处理响应(流式或非流式)
if response.streaming:
print("\n** 流式响应 ** \n")
# 立即发送元数据
print(f"> 代理ID: {response.metadata.agent_id}")
print(f"> 代理名称: {response.metadata.agent_name}")
print(f"> 用户输入: {response.metadata.user_input}")
print(f"> 用户ID: {response.metadata.user_id}")
print(f"> 会话ID: {response.metadata.session_id}")
print(f"> 附加参数: {response.metadata.additional_params}")
print("\n> 响应: ")
# 流式传输内容
asyncfor chunk in response.output:
asyncfor chunk in response.output:
ifisinstance(chunk, AgentStreamResponse):
print(chunk.text, end='', flush=True)
else:
print(f"收到意外的块类型: {type(chunk)}", file=sys.stderr)
else:
# 处理非流式响应(AgentProcessingResult)
print("\n** 响应 ** \n")
print(f"> 代理ID: {response.metadata.agent_id}")
print(f"> 代理名称: {response.metadata.agent_name}")
print(f"> 用户输入: {response.metadata.user_input}")
print(f"> 用户ID: {response.metadata.user_id}")
print(f"> 会话ID: {response.metadata.session_id}")
print(f"> 附加参数: {response.metadata.additional_params}")
print(f"\n> 响应: {response.output.content}")
if __name__ == "__main__":
asyncio.run(main())
这些示例展示了:
-
1. 使用支持Converse API的Bedrock LLM代理,允许多轮对话 -
2. 集成Lex Bot代理处理专门任务(本例为旅行相关查询) -
3. 协调器基于输入将请求路由到最合适代理的能力 -
4. 处理来自不同类型代理的流式和非流式响应
模块化安装选项
Agent Squad采用模块化架构设计,允许您仅安装所需组件,同时确保始终获得核心功能。
安装选项
1. AWS集成:
pip install "agent-squad[aws]"
包含核心协调功能和全面的AWS服务集成(BedrockLLMAgent
, AmazonBedrockAgent
, LambdaAgent
等)
2. Anthropic集成:
pip install "agent-squad[anthropic]"
3. OpenAI集成:
pip install "agent-squad[openai]"
添加OpenAI的GPT模型用于代理和分类,以及核心包
4. 完整安装:
pip install "agent-squad[all]"
包含所有可选依赖项以获得最大灵活性
项目地址
https://github.com/awslabs/agent-squad
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)