什么是Agent Squad
Agent Squad是一个用于管理多个AI代理和处理复杂对话的灵活框架。它能智能路由查询并在交互过程中维护上下文。
该系统提供预构建组件以便快速部署,同时允许轻松集成自定义代理和对话消息存储解决方案。
这种适应性使其适用于从简单聊天机器人到复杂AI系统的广泛应用场景,满足多样化需求并高效扩展。
🔖 功能特性
- 🧠 智能意图分类 — 根据上下文和内容动态路由查询到最合适的代理
- 🔤 双语支持 — 完整实现Python和TypeScript双版本
- 🌊 灵活的代理响应 — 支持来自不同代理的流式和非流式响应
- 📚 上下文管理 — 跨多个代理维护和使用对话上下文,确保交互连贯性
- 🔧 可扩展架构 — 轻松集成新代理或自定义现有代理以满足特定需求
- 🌐 通用部署 — 可在任何环境运行 - 从AWS Lambda到本地环境或任何云平台
- 📦 预构建代理和分类器 — 提供多种开箱即用的代理和分类器实现
🏗️ 高层架构流程图
高层架构流程图
- 流程始于用户输入,由分类器进行分析
- 分类器利用代理特性和代理对话历史来选择最适合任务的代理
- 选定代理后,它处理用户输入
- 协调器在将响应返回给用户之前保存对话,更新代理对话历史
介绍SupervisorAgent:代理协调
Agent Squad现在包含强大的新SupervisorAgent,可实现多个专业代理之间的复杂团队协调。这个新组件实现了"工具化代理"架构,允许主导代理并行协调专业代理团队,维护上下文并提供连贯响应。
SupervisorAgent流程图
关键能力:
- 🤝 团队协调 - 协调多个专业代理共同处理复杂任务
- ⚡ 并行处理 - 同时执行多个代理查询
- 🧠 智能上下文管理 - 维护所有团队成员间的对话历史
- 🔄 动态委派 - 智能地将子任务分配给合适的团队成员
- 🤖 代理兼容性 - 兼容所有代理类型(Bedrock、Anthropic、Lex等)
SupervisorAgent可通过两种强大方式使用:
- 直接使用 - 当特定任务需要专门的团队协调时直接调用
- 分类器集成 - 将其作为分类器中的一个代理,构建具有多个专业团队的复杂分层系统
以下是该代理可应用的部分场景示例:
- 拥有专业子团队的客户支持团队
- AI电影制作工作室
- 旅行规划服务
- 产品开发团队
- 医疗协调系统
💬 演示应用
在下面的屏幕录制中,我们展示了使用6个专业代理的扩展版演示应用:
- 旅行代理:基于Amazon Lex Bot
- 天气代理:使用Bedrock LLM代理和查询open-meteo API的工具
- 餐厅代理:实现为Amazon Bedrock代理
- 数学代理:使用Bedrock LLM代理和两个执行数学运算的工具
- 技术代理:设计用于回答技术问题的Bedrock LLM代理
- 健康代理:专注于处理健康相关查询的Bedrock LLM代理
观看系统如何在不同主题间无缝切换上下文,从预订航班到查询天气、解决数学问题和提供健康信息。
注意系统如何为每个查询选择合适的代理,即使在简短的后续输入中也能保持连贯性。
演示突出了系统处理复杂多轮对话的能力,同时保持上下文并利用跨多个领域的专业代理。
,时长04:27
🎯 示例与快速入门
通过我们多样化的示例集获得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())
这些示例展示了:
- 使用支持Converse API的Bedrock LLM代理,允许多轮对话
- 集成Lex Bot代理处理专门任务(本例为旅行相关查询)
- 协调器基于输入将请求路由到最合适代理的能力
- 处理来自不同类型代理的流式和非流式响应
模块化安装选项
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]"
包含所有可选依赖项以获得最大灵活性
如何学习大模型 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 的正确特征了。