前言

随着多智能体系统成为对话式 AI 的新趋势,如何协调多个专精 AI 的分工协作,成为构建下一代智能客服、规划助手、企业 Copilot 的关键挑战。

最近在 GitHub 发现了一个轻量级高灵活性的多 AI 智能体协调框架:Agent-Squad。

图片

它可以实现多智能体之间的智能协作、对话路由和上下文共享。

该框架支持 Python 和 TypeScript 两种语言,开发者可以根据喜好选择。它还能部署在AWS Lambda、本地环境甚至其他云平台上,灵活性拉满。

你可以把它想象成一个超级聪明的“任务分配器”,能根据你的输入,自动把问题交给最合适的AI智能体。

核心功能
  • • 智能意图分类:能根据用户输入的内容、上下文和智能体描述,动态路由到最合适的智能体。
  • • 双语言支持:同时支持 Python 和 TypeScript,满足不同开发者的偏好。无论你是后端大牛还是前端新手,都能快速上手。
  • • 灵活的代理响应:支持来自不同代理的流式和非流式响应。
  • • 上下文管理: 在多个代理之间维护和利用对话上下文,以实现连贯的交互。
  • • 可扩展架构:它的模块化设计可以轻松集成新智能体或定制现有功能。
工作机制

图片

1、从用户输入开始,由分类器进行分析。

2、分类器利用代理的特征和代理的对话历史来选择最适合任务的代理。

3、一旦选择了代理,它就会处理用户输入。

4、协调器随后保存对话,更新代理的对话历史,然后将响应返回给用户。

Agent-Squad 现在包括一个强大的新监督代理,它能够实现多个专业代理之间的复杂团队协调。这个新组件实现了“代理即工具”的架构,允许主代理并行协调一组专业代理,保持上下文并给出连贯的响应。

图片

快速使用

Agent-Squad 实际安装也非常友好。对于开发者来说,简直是So Easy!

如果你是前端工程师,建议使用 npm 命令直接安装:

npm install agent-squad

以下示例展示了支持Converse API的Bedrock LLM代理和Lex Bot代理。

import { AgentSquad, BedrockLLMAgent, LexBotAgent } from "agent-squad";

const orchestrator = new AgentSquad();

// Add a Bedrock LLM Agent with Converse API support
orchestrator.addAgent(
  new BedrockLLMAgent({
      name: "Tech Agent",
      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.",
      streaming: true
  })
);

// Add a Lex Bot Agent for handling travel-related queries
orchestrator.addAgent(
  new LexBotAgent({
    name: "Travel Agent",
    description: "Helps users book and manage their flight reservations",
    botId: process.env.LEX_BOT_ID,
    botAliasId: process.env.LEX_BOT_ALIAS_ID,
    localeId: "en_US",
  })
);

// Example usage
const response = await orchestrator.routeRequest(
  "I want to book a flight",
  'user123',
  'session456'
);

// Handle the response (streaming or non-streaming)
if (response.streaming == true) {
    console.log("\n** RESPONSE STREAMING ** \n");
    // Send metadata immediately
    console.log(`> Agent ID: ${response.metadata.agentId}`);
    console.log(`> Agent Name: ${response.metadata.agentName}`);
    console.log(`> User Input: ${response.metadata.userInput}`);
    console.log(`> User ID: ${response.metadata.userId}`);
    console.log(`> Session ID: ${response.metadata.sessionId}`);
    console.log(
      `> Additional Parameters:`,
      response.metadata.additionalParams
    );
    console.log(`\n> Response: `);

    // Stream the content
    for await (const chunk of response.output) {
      if (typeof chunk === "string") {
        process.stdout.write(chunk);
      } else {
        console.error("Received unexpected chunk type:", typeof chunk);
      }
    }

} else {
    // Handle non-streaming response (AgentProcessingResult)
    console.log("\n** RESPONSE ** \n");
    console.log(`> Agent ID: ${response.metadata.agentId}`);
    console.log(`> Agent Name: ${response.metadata.agentName}`);
    console.log(`> User Input: ${response.metadata.userInput}`);
    console.log(`> User ID: ${response.metadata.userId}`);
    console.log(`> Session ID: ${response.metadata.sessionId}`);
    console.log(
      `> Additional Parameters:`,
      response.metadata.additionalParams
    );
    console.log(`\n> Response: ${response.output}`);
}

如果你是后端工程师,也会用 Python,可以使用 pip 命令直接安装:

pip install agent-squad[aws]

以下是一个等效的Python示例,演示了使用Bedrock LLM Agent和Lex Bot Agent的Agent Squad:

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="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.",
  model_id="anthropic.claude-3-sonnet-20240229-v1:0",
))
orchestrator.add_agent(tech_agent)


health_agent = BedrockLLMAgent(BedrockLLMAgentOptions(
  name="Health Agent",
  streaming=True,
  description="Specializes in health and well being",
))
orchestrator.add_agent(health_agent)

async def main():
    # Example usage
    response = await orchestrator.route_request(
        "What is AWS Lambda?",
        'user123',
        'session456',
        {},
        True
    )

    # Handle the response (streaming or non-streaming)
    if response.streaming:
        print("\n** RESPONSE STREAMING ** \n")
        # Send metadata immediately
        print(f"> Agent ID: {response.metadata.agent_id}")
        print(f"> Agent Name: {response.metadata.agent_name}")
        print(f"> User Input: {response.metadata.user_input}")
        print(f"> User ID: {response.metadata.user_id}")
        print(f"> Session ID: {response.metadata.session_id}")
        print(f"> Additional Parameters: {response.metadata.additional_params}")
        print("\n> Response: ")

        # Stream the content
        async for chunk in response.output:
            async for chunk in response.output:
              if isinstance(chunk, AgentStreamResponse):
                  print(chunk.text, end='', flush=True)
              else:
                  print(f"Received unexpected chunk type: {type(chunk)}", file=sys.stderr)

    else:
        # Handle non-streaming response (AgentProcessingResult)
        print("\n** RESPONSE ** \n")
        print(f"> Agent ID: {response.metadata.agent_id}")
        print(f"> Agent Name: {response.metadata.agent_name}")
        print(f"> User Input: {response.metadata.user_input}")
        print(f"> User ID: {response.metadata.user_id}")
        print(f"> Session ID: {response.metadata.session_id}")
        print(f"> Additional Parameters: {response.metadata.additional_params}")
        print(f"\n> Response: {response.output.content}")

if __name__ == "__main__":
  asyncio.run(main())

以上代码示例主要作用:

  • • 使用支持Converse API的Bedrock LLM代理,允许进行多轮对话。
  • • 集成Lex Bot代理以执行专业任务(例子中是与旅行相关的查询)。
  • • 协调者根据输入将请求路由到最合适的代理的能力。
  • • 处理来自不同类型代理的流式和非流式响应。

同时Agent-Squad也采用了模块化架构设计,允许仅安装所需的组件,同时确保始终获得核心功能。

# AWS集成(包括核心编排功能以及全面的AWS服务集成(BedrockLLMAgent、AmazonBedrockAgent、LambdaAgent等)
 pip install "agent-squad[aws]"
 
 # Anthropic集成
 pip install "agent-squad[anthropic]"
 
 # OpenAI集成
 pip install "agent-squad[openai]"
 
 # 完整安装
 pip install "agent-squad[all]"
写在最后

Agent-Squad 不只是一个框架,它是你构建下一代多智能体系统的 “中枢神经”。轻量灵活、开箱即用,非常适合 AI 原型开发、RAG 系统升级、多角色对话系统等项目。

而且它的高灵活性能无缝融入各种场景,智能客服、旅行规划、学习助手、职场帮手、创意开发等都能找到它的用武之地。

它让多个AI智能体像团队一样分工协作,精准高效地完成任务,让我们能把时间留给更重要的事!

如果你是个爱折腾的技术控,可以去部署试试!

GitHub 项目地址:https://github.com/awslabs/agent-squad

最后

为什么要学AI大模型

当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!

DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

在这里插入图片描述

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
在这里插入图片描述
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

AI大模型系统学习路线

在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

img

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。

AI大模型入门到实战的视频教程+项目包

看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

在这里插入图片描述
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

海量AI大模型必读的经典书籍(PDF)

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
在这里插入图片描述

600+AI大模型报告(实时更新)

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

AI大模型面试真题+答案解析

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
在这里插入图片描述

在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐