Hugging Face smolagents 与 AWS:构建企业级多模型智能代理的实战指南
内容评分
摘要
本文详细阐述了如何结合 Hugging Face smolagents 框架与 AWS 管理服务,构建企业级多模型智能代理解决方案。通过一个医疗保健AI代理实例,文章展示了如何集成 Amazon SageMaker AI、Amazon Bedrock 和容器化模型,以实现复杂推理、向量知识检索及临床决策支持。该方案强调多部署选项的灵活性、Hugging Face Messages API 的兼容性、smolagents 的代码生成能力,以及 AWS 提供的安全与可扩展性,为各行业提供领域特定智能和高可靠性。
正文
智能代理系统是对话式AI的演进,它们是能够进行复杂推理、使用工具并执行代码的自主实体。企业应用可根据特定需求,通过定制化的部署方法从中获益。这些需求包括:提供自动扩展能力的管理型端点、支持复杂推理的基础模型API,以及支持自定义集成要求的容器化部署选项。
Hugging Face smolagents 是一个开源的Python库,它通过几行代码就能轻松构建和运行代理。本文将展示如何将 Hugging Face smolagents 与 Amazon Web Services (AWS) 的管理型服务集成,以构建一个智能代理解决方案。您将学习如何部署一个医疗保健AI代理,该代理展示了多模型部署选项、基于向量的知识检索和临床决策支持功能。
尽管本文以医疗保健为例,但该架构同样适用于其他需要领域特定智能和高可靠性的行业。该解决方案利用 smolagents 的模型无关性、模式无关性和工具无关性设计,在 Amazon SageMaker AI 端点、Amazon Bedrock API 和容器化模型服务器之间进行协调。
解决方案概述: 许多AI系统在采用单一模型方法时存在局限性,难以适应多样化的企业需求。这些系统通常部署选项固定,不同AI服务间的API不一致,且缺乏多模型部署选项来优化模型选择。
本解决方案展示了组织如何构建能够解决这些限制的AI系统。它允许根据运营需求选择部署方式,并在不同AI后端和部署方法之间提供一致的请求与响应格式。它通过整合医疗知识生成上下文响应,并借助容器化架构支持从开发到生产环境的无缝部署。
这个医疗保健用例展示了AI代理如何处理关于六种药物的复杂医疗查询,并提供临床决策支持以及AWS的安全性和合规性功能。
架构: 该解决方案整合了以下服务和特性,以实现智能代理功能:
- Amazon SageMaker AI 与 BioM-ELECTRA-Large-SQuAD2 模型,用于处理专业医疗查询并支持自动扩展。
- Amazon Bedrock 与 Claude 3.5 Sonnet V2,用于复杂推理及基础模型访问。
- Amazon OpenSearch Service,用于基于向量的相似性匹配和带有医疗知识索引的上下文知识检索。
- Amazon Elastic Container Service (ECS) 和 AWS Fargate,用于无服务器容器编排及部署基于 smolagents 库的Python应用程序。
- AWS Identity and Access Management (IAM),用于安全与访问控制。
- 包含 BioM-ELECTRA-Large-SQuAD2 的容器化模型服务器,用于自托管模型部署。
以下架构图展示了该解决方案的构成。
该架构是 Hugging Face smolagents 框架与 AWS 服务的深度集成。客户端Web界面连接到医疗代理容器,该容器负责协调三个模型后端:使用 BioM-ELECTRA 的 Amazon SageMaker AI、使用 Claude 3.5 Sonnet V2 的 Amazon Bedrock,以及使用 BioM-ELECTRA 的容器化模型服务器。该解决方案包含由 OpenSearch Service 提供的向量存储,以及数据在存储和传输过程中的加密安全层。安全层还负责IAM访问控制、身份验证,以及任何符合法规要求的医疗免责声明。
该解决方案支持通过 smolagents 的多种部署选项:
- Amazon SageMaker AI 适用于具有自动扩展和生产工作负载的管理型端点,使用 Hugging Face Hub 模型。
- Amazon Bedrock 适用于通过 AWS API 进行无服务器访问基础模型和复杂推理。
- 容器化模型服务器适用于自托管模型部署和来自 Hugging Face Hub 的工具集成。
这三个后端均实现了 Hugging Face Messages API 的兼容性,无论选择哪种模型服务,都能确保请求和响应格式的一致性。用户可根据自身需求选择合适的后端——该解决方案提供部署选项,而非自动路由。
完整的实现可在以下 GitHub 仓库中找到: https://github.com/aws-samples/sample-healthcare-agent-with-smolagents-on-aws
主要优势: 将 Hugging Face smolagents 与 AWS 管理型服务集成,为企业智能代理部署带来了显著优势。
部署选择: 组织可根据每个用例选择最佳部署方式:
- Amazon Bedrock 适用于无服务器访问基础模型及自托管的容器化部署;
- Amazon SageMaker AI 则适用于专业领域模型。这些选项有助于满足特定的工作负载需求,避免采用一刀切的方法。
多模型部署选项: 组织可在不更改代理逻辑的前提下优化其基础设施选择。用户可在容器化模型服务器、Amazon SageMaker AI 和 Amazon Bedrock 之间切换,无需修改应用程序代码。这提供了灵活的部署选项,同时保持代理行为的一致性。
代码生成能力: smolagents 的 CodeAgent 方法通过直接生成和处理Python代码,简化了多步骤操作。以下比较展示了 smolagents 的多步骤操作:
多步骤 JSON 基础方法: (代码示例省略)
smolagents CodeAgent: (代码示例省略)
smolagents CodeAgent 支持单个代码块处理多步骤操作,减少了大型语言模型()的调用次数,同时简化了代理开发。它提供了对部署在AWS服务上的代理逻辑的完全控制。
可扩展架构: 通过在AWS上部署应用程序,可利用其安全特性和自动扩展功能,满足组织的安全要求并保持合规性。使用 Amazon ECS 和 Fargate 运行容器化工作负载,有助于实现可靠运营并通过自动化资源扩展来优化成本。
接下来,我们将探讨如何实现这一解决方案。
先决条件: 在部署此解决方案之前,您需要满足以下条件:
- 具有适当权限的AWS账户,以便创建IAM角色、Amazon ECS集群和Amazon OpenSearch Service域名。
- 已安装并配置AWS CLI 2.0或更高版本。
- 需要Python 3.10或更高版本来运行部署脚本。
- 已安装并运行Docker(生产环境所需,以提供安全的代码执行沙箱)。
- 您的AWS区域中可访问Amazon Bedrock、Amazon SageMaker AI和Amazon OpenSearch Service,并具有适当的IAM权限来创建和管理相关资源。
运行以下命令安装所需的Python包: (命令示例省略)
配置环境变量: 在部署基础设施之前,请为您的AWS区域和资源名称设置所需的环境变量。
验证变量是否已正确设置: (验证命令省略)
设置AWS基础设施:
首先使用 Smolagents_SageMaker_Bedrock_Opensearch.py 中的 SampleAWSInfrastructureManager 类创建基本的AWS基础设施组件。
自动部署完整基础设施:
对于AWS基础设施组件的自动部署,可使用增强的 main 函数。
创建单独的AWS组件(替代方法): 如果您倾向于逐个创建组件,可以设置OpenSearch Service域名进行基于向量的知识检索,并设置Amazon ECS集群进行容器化部署。
两种方法都会在完整的AWS基础设施部署(enhanced_main 中的选项1)中自动创建OpenSearch Service域名和Amazon ECS集群。如果您已部署完整基础设施,则可直接跳至“部署 Amazon SageMaker AI 端点”部分。
部署 Amazon SageMaker AI 端点:
将 BioM-ELECTRA-Large-SQuAD2 模型部署到Amazon SageMaker AI,以处理专业医疗查询。提供了自动方法(通过增强的 main 函数)和手动方法(通过Amazon SageMaker AI端点)进行部署。
使用增强版 main(自动方法)进行部署:
(代码示例省略)
使用手动方法部署 SageMaker AI 端点: (代码示例省略)