View a markdown version of this page

使用 Strands Agents SDK 和 AWS Fargate 部署 Multi-Agent 会议情报平台 - AWS 规范指引

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Strands Agents SDK 和 AWS Fargate 部署 Multi-Agent 会议情报平台

Aishita Batra 和 Muskan。,Amazon Web Services

Summary

这种模式部署了多代理会议情报平台 AWS Fargate ,该平台可自动从会议记录中生成结构化会议记录、执行摘要、音频旁白和格式化的 PDF 报告。该解决方案使用 Strands Agents SDK 来编排四个专门的人工智能代理,Amazon Bedrock 用于语言模型推断,Amazon Polly 用于文本到语音的转换。

用户通过 Streamlit Web 界面上传会议记录,系统通过协调的代理管道异步处理这些记录。该基础设施通过 Actions w GitHub ith AWS AWS Cloud Development Kit (AWS CDK) 自动部署,包括内置监控、自动扩展和高可用性。

先决条件和限制

先决条件

  • AWS 账户 具有管理权限的活跃用户

  • AWS CDK 已安装版本 2.114.1 或更高版本

  • AWS CLI 已安装并配置了相应的 AWS Identity and Access Management (IAM) 权限

  • Node.js 18 或更高版本

  • Python 3.12 或更高版本

  • Git 已安装

  • 已安装 Docker(可选,用于本地测试)

  • 配置了存储库密钥的 GitHub 账户:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

  • Amazon Bedrock 可在你所在的地区启用 Anthropic Claude 3 Sonnet 模型

  • 已启用 Amazon Polly 访问权限(大多数地区默认启用)

  • 亚马逊简单存储服务 (Amazon S3)、亚马逊弹性容器服务 (Amazon ECS)、Fargate、Elastic Load Balancing、亚马逊虚拟私有云(亚马逊 VPC)的 IAM 权限

  • 亚马逊 VPC、IAM CloudWatch、亚马逊和亚马逊简单通知服务 (Amazon SNS) Simple Notification Service

限制

  • 每次会议的处理时间为 2-7 分钟,具体取决于笔录的复杂程度。

  • 每个请求的最大笔录长度为 50,000 个字符。

  • 音频摘要会自动压缩为 3,000 个字符(Amazon Polly 字符数限制)。

  • 亚马逊 Bedrock Claude 3 Sonnet 的可用性因而异。 AWS 区域

  • Job 状态存储在内存中,除非您配置了持久性,否则不会在容器重启后 S3-based 保持不变。

  • 直接上传仅支持.txt文件。

  • Application Load Balancer 强制要求处理请求的超时时间为 15 分钟。

  • 有些 AWS 服务并非全部可用 AWS 区域。有关区域可用性,请参阅按地区划分的AWS 服务。有关特定端点,请参阅服务端点和配额页面,然后选择相应服务的链接。

架构

目标架构

该解决方案使用Strands Agents SDK部署了 AWS Fargate 具有以下架构的多代理人工智能系统:

  1. 用户通过托管在本地或远程服务器上的 Streamlit Web 应用程序上传会议记录。

  2. 公共子网中的 Application Load Balancer 将流量分发到两个可用区 Fargate 服务。

  3. Fargate 任务在具有 NAT 网关访问权限的私有子网中运行,并托管 FastAPI 后端和 Strands 代理编排逻辑。

  4. Strands 多代理系统通过四个连续代理处理笔录:结构化会议记录生成、简洁摘要生成、音频旁白和 PDF 报告创建。

  5. Amazon Bedrock 提供会议纪要的语言模型推理(Claude 3 Sonnet)和摘要生成代理。

  6. Amazon Polly 将简明摘要转换为 MP3 音频旁白。

  7. Amazon S3 使用生命周期管理策略存储上传的笔录、生成的输出文件和任务状态。

  8. 亚马逊通过 Amazon SNS 通知 CloudWatch 提供集中日志、CPU 和内存警报以及服务运行状况监控。

  9. GitHub Action CI/CD s 通过运行状况 AWS CDK 验证测试提供自动部署。

自动化和扩展

  • ECS Fargate 自动缩放 — 基于 70% 的 CPU 和内存利用率阈值,自动将容器从 1 个实例扩展到 3 个。

  • CloudWatch监控 — CPU (65%)、内存 (80%) 和服务运行状况警报与 Amazon SNS 通知集成。

  • A@@ pplication Load Balancer — 流量分布,每 60 秒进行一次运行状况检查,长时间运行的 AI 处理任务的空闲超时时间为 15 分钟。

  • 后台任务处理 — 使用 FastAPI 进行异步会议分析 BackgroundTasks ,实现并发任务执行。

  • S3-based 任务持久性 — Amazon S3 中的永久任务状态存储,可确保容器重启和扩展事件期间的作业连续性。

  • GitHub 操作 CI/CD — 带有 CDK 基础架构配置和运行状况验证测试的自动部署管道。

工具

AWS 服务

  • Amazon Bedrock — 为会议分析和摘要代理提供语言模型推理(Claude 3 Sonnet)。参见 Amazon Bedrock 文档

  • Amazon CloudWatch — 监控容器性能,捕获应用程序日志,并触发 CPU、内存和服务运行状况阈值警报。参见 Amazon CloudWatch CloudWatch 文档

  • 亚马逊弹性容器服务 (Amazon ECS) Service — 通过运行状况检查和服务发现来编排 Fargate 容器任务。参见 Amazon ECS 文档

  • Amazon Polly — 将简洁的会议摘要转换为 MP3 音频旁白。参见 Amazon Polly 文档。

  • 亚马逊简单通知服务 (Amazon SNS) Simple Notification — 通过监控发送警报通知。 CloudWatch 参见 Amazon SNS 文档。

  • Amazon Simple Storage Service (Amazon S3) — 通过生命周期管理存储上传的笔录、生成的输出文件和任务状态。参见亚马逊 S3 文档

  • AWS CDK — 将所有基础架构定义并部署为代码。参见AWS CDK 文档

  • AWS Fargate — 无需管理服务器即可运行容器化应用程序工作负载,可从 1 个实例自动缩放到 3 个实例。参见AWS Fargate 文档

  • Elastic Load Balancing — 跨可用区将传入流量分配给 Fargate 任务。见 Elastic Load Balancing 文档

其他工具

  • Docker — 为本地测试构建容器镜像。请参阅 Docker 文档

  • FastAPI — 为作业提交、状态检查和文件操作提供 REST API 后端。请参阅 FastAPI 文档

  • GitHub 操作-自动执行 CI/CD 部署管道。请参阅GitHub 操作文档

  • ReportLab— 根据结构化会议纪要生成格式化的 PDF 报告。参见ReportLab 文档

  • Strands Agents SDK — 使用装饰器模式,用最少的代码编排多代理工作流程。@tool请参阅 Strands SDK 文档

  • Streamlit — 提供基于 Web 的用户界面,用于脚本上传和输出下载。请参阅 Streamlit 文档

代码存储库

此模式的代码可在 s GitHub ample-ai-meeting-minuting-minutes-generator 存储库

最佳实践

  • 为每位代理使用清晰、有针对性的系统提示,以确保一致的输出格式和专业的会议文档。

  • 实施 Amazon S3 生命周期管理,保留期为 90 天,以优化成本并自动清理文件。

  • 使用 Amazon S3-based 任务跟踪来维护容器重启和扩展事件的状态,以实现可靠的处理。

  • 使用 Amazon SNS 通知配置 CPU、内存和服务运行状况 CloudWatch 警报,以便进行主动监控。

  • 在处理之前对文件上传和内容格式进行验证和审查,以防止出现系统错误和安全问题。

  • 遵循最低权限原则,并授予执行任务所需的最低权限。有关详情,请参阅 IAM 文档中的授予最低权限安全最佳实践

  • 考虑 AWS AgentCore 需要托管编排和简化运营开销的生产部署。当您需要进一步自定义代理交互和专门的工作流程控制时,Strands SDK 是首选。

  • 根据人工生成的会议记录对代理输出进行系统评估,以持续改善系统提示和座席绩效。

操作说明

Task说明所需技能

克隆存储库

  1. 要克隆模式的存储库,请运行以下命令:

git clone https://github.com/aws-samples/sample-ai-meeting-minutes-generator.git
  1. 导航到项目目录:

cd meeting-minutes-app
AWS DevOps

创建自己的 Git 仓库

  1. 在你首选的 Git 平台(GitHub GitLab、或 Bitbucket)上创建一个新的存储库。

  2. 更新远程源以指向您的存储库:

git remote set-url origin https://<your-git-platform>.com/<your-username>/<your-repo-name>.git
  1. 将代码推送到你的存储库:

git push -u origin main
应用程序开发人员

为配置存储库密钥 CI/CD。

  1. 导航到仓库的 “设置” 页面。

  2. 选择 “密钥和变量”,然后选择 “操作”(用于 GitHub)或您的 Git 平台的等效部分。

  3. 添加以下存储库密钥:

    • 名称:AWS_ACCESS_KEY_ID,值:<your-aws-access-key-id>

    • 名称:AWS_SECRET_ACCESS_KEY,值:<your-aws-secret-access-key>

DevOps 工程师

使用 CI/CD 工作流程部署基础架构。

  1. 通过将代码推送到你的主分支来触发部署:

git add . git commit -m "Deploy multi-agent meeting intelligence platform" git push origin main
  1. GitHub 操作工作流程使用 AWS CDK 自动配置基础设施。

DevOps 工程师

验证基础设施部署。

  1. 导航到仓库的 CI/CD 部分(例如,https://github.com/<your-username>/<your-repo-name>/actions)。

  2. 选择正在运行的工作流程以查看实时日志和进度。

  3. 打开 AWS 管理控制台 并导航到该 AWS CloudFormation 服务。

  4. 从列表中选择MeetingMinutesFargateStack堆栈。

  5. 验证堆栈状态是否显示为 CREATE_ COMPLETE。

  6. 选择 “输出” 选项卡并记下 s erviceUrl 值,以便在下一个长篇故事中使用。

DevOps 工程师、云管理员
Task说明所需技能

设置本地开发环境

  1. 导航到应用程序目录:

cd meeting_minutes_agent/app
  1. 创建并激活 Python 虚拟环境:

python -m venv venv source venv/bin/activate # Linux/Mac # Or on Windows: venv\Scripts\activate
  1. 安装所需的依赖项:

pip install -r requirements.txt pip install streamlit
应用程序开发人员

检索后端服务 URL。

  1. 打开 AWS 管理控制台 并导航到该 AWS CloudFormation 服务。

  2. 选择 MeetingMinutesFargateStack 堆栈。

  3. 选择输出选项卡。

  4. 找到 s erviceUrl 密钥并复制其相应的 URL 值。

云管理员

启动应用程序并验证连通性。

  1. 使用后端网址启动 Streamlit 应用程序:

BACKEND_URL="http://<your-service-url>.us-east-1.elb.amazonaws.com" streamlit run meeting_minutes_agent/app/streamlit_app.py
  1. 打开 Web 浏览器并导航至http://localhost:8501

  2. 确认接口在侧栏中显示后端连接状态。

应用程序开发人员
Task说明所需技能

处理会议记录并验证输出。

  1. 使用以下方法之一上传会议记录:

    • 使用存储库中提供的sample_meeting.txt文件。

    • 上传您自己的会议记录(.txt文件)。

    • 将会议记录内容直接粘贴到文本输入区域。

  2. 选择 “生成分钟” 以启动多代理处理工作流程。

  3. 通过界面监控实时处理进度。

  4. 下载并验证生成的输出:

    • meeting_minutes_*.txt— 结构化会议纪要

    • meeting_audio_*.mp3— 音频摘要旁白

    • meeting_report_*.pdf— 全面的 PDF 报告

  5. 确认所有四个输出文件都存在并包含预期的内容。

应用程序开发人员

问题排查

问题解决方案

亚马逊 Bedrock 模型访问错误

确认您所在的地区启用了 Anthropic Claude 3 Sonnet 模型。打开 Amazon Bedrock 控制台,选择模型访问权限,然后确认 Claude 3 Sonnet 显示已授予访问权限。

CDK 引导失败

部署前cdk bootstrap aws://<account-id>/<region>手动运行。验证您的 AWS CLI 证书是否具有 Amazon S3 和 IAM 的权限。 CloudFormation

  • Fargate 任务无法启动

请查看 Amazon ECS 控制台,了解已停止的任务的详细信息。常见原因包括 IAM 角色权限不正确、缺少 Amazon Bedrock 访问权限或 VPC 配置问题。查看任务的 CloudWatch 日志。

处理超时(ALB 超时 15 分钟)

Application Load Balancer 的空闲超时时间为 15 分钟。对于很长的脚本,请将输入大小减少到 50,000 个字符以下,或者在 CDK 配置中增加 ALB 超时。

音频生成失败

Amazon Polly 的字符限制为 3,000 个。简洁的摘要代理会自动将内容压缩到此限制以下。如果音频生成仍然失败,请确认您所在的地区已启用 Amazon Polly 访问权限。

GitHub 操作部署失败

验证AWS_ACCESS_KEY_ID并正确配置AWS_SECRET_ACCESS_KEY存储库密钥。检查 IAM 用户是否有权部署 CDK(CloudFormation、Amazon ECS、Amazon S3、IAM)。

后端未连接(Streamlit 显示已断开连接)

验证BACKEND_URL环境变量是否与 “输出 CloudFormation ” 选项卡中的 serviceUrl 相匹配。在 Amazon ECS 控制台中确认 Fargate 服务已运行且运行正常。

容器重启后 Job 状态丢失

通过配置S3_JOB_TRACKING环境变量来启用 Amazon S3-based 任务持久性。否则,任务状态仅存储在内存中,容器重启时会丢失。

相关资源

参考

工具

附加信息

Multi-agent 处理工作流程

该解决方案通过四个在 Fargate 任务中按顺序运行的专业代理来协调会议处理。为每个作业分配一个唯一的作业 ID,并以异步方式执行,以实现可扩展性和故障隔离。

  1. 结构化会议记录生成器 (generate_structured_minutes) — 将原始会议记录和标题作为输入。使用 Amazon Bedrock Claude 3 Sonnet 制作全面的会议纪要,包括会议信息、议程项目、讨论摘要、包含任务人和截止日期的行动项目以及后续步骤。将输出保存为纯文本文件。

  2. 简明摘要生成器 (concise_minutes_agent)-将 Agent 1 的完整结构化会议记录作为输入。使用 Amazon Bedrock Claude 3 Sonnet 创建不到 3,000 个字符的执行摘要,用于生成音频和快速阅读。

  3. 音频生成器 (audio_generator_agent)-将 Agent 2 中的简洁分钟作为输入。使用带有 Amazon Polly 的 Strands speak 工具生成 MP3 音频文件,讲述简洁的摘要。

  4. PDF 报告生成器 (create_comprehensive_pdf)-将 Agent 1 的完整结构化会议记录作为输入。使用该 ReportLab 库生成包含自定义标题样式、章节标题、可读文本布局和元数据的专业 PDF 报告。

数据流

  1. 用户上传 — 通过 Streamlit 用户界面或直接 API 调用上传的会议记录。

  2. 任务初始化 — FastAPI 创建唯一的任务 ID 并立即返回以进行异步处理。

  3. 后台处理 — 四步的 Strands 代理工作流程按顺序执行。

  4. 文件管理-生成的文件使用预签名的下载网址上传到 Amazon S3。

  5. Job 完成 — 使用所有生成输出的下载链接更新状态。

未来的增强注意事项

  • 使用 Amazon DynamoDB 进行持续的任务跟踪,确保跨容器的可靠性

  • Multi-format 输入支持(.docx.pdf、音频转录文件)

  • Real-time WebSocket 进度更新

End-to-End 处理流程

  • 该解决方案通过在 Fargate 任务中运行的一系列协调专业代理来协调会议处理。

  • 为每个作业分配一个唯一的作业 ID,并以异步方式执行,以确保可扩展性和故障隔离。

  • 工作流程包括记录提取 → 生成结构化会议纪要 → 执行摘要 → 音频旁白 → 创建 PDF 报告,每个步骤都经过验证并实时登录。

Four-Step 代理处理

  1. 结构化会议纪要生成器 — 生成详细的会议纪要。

  2. 简明摘要生成器 — 创建执行摘要,便于快速查看和音频旁白。

  3. 音频生成器-生成摘要的 MP3 旁白。

  4. PDF 报告生成器 — 生成精美的、格式化的 PDF 报告。

自动文件管理和云集成

  • 自动上传输出:结构化文本、音频和 PDF 报告会自动上传到 Amazon S3,并按作业 ID 进行适当的分区

  • 完整性检查和生命周期管理:记录上传确认、文件验证和清理,确保操作的透明度和可靠性。

  • FastAPI 后台任务管理异步作业的执行。

用户界面集成和输出

  • Streamlit 用户界面显示后端连接、笔录输入区域和通过 S3 Pre-signed URL 上传会议记录以启动任务后生成会议记录。

  • 处理完成后,结构化文本、音频和 PDF 输出可通过 Pre-signed S3 URL 下载,可通过用户界面中的可点击按钮进行访问。