View a markdown version of this page

使用 Amazon Bedrock 和 Amazon Transcribe 从语音输入中记录机构知识 - AWS 规范指引

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

使用 Amazon Bedrock 和 Amazon Transcribe 从语音输入中记录机构知识

Praveen Kumar Jeyarajan、Jundong Qiao、Rajiv Upadhyay 和 Megan Wu,Amazon Web Services

Summary

获取机构知识对于确保组织取得成功以及增强韧性至关重要。机构知识代表了员工随着时间的推移积累的集体智慧、见解和经验,这些知识本质上通常是隐性知识并且以非正式地传承下来。这些丰富的信息包含独特的方法、最佳实践以及针对错综复杂的问题的解决方案,而这些可能在其他地方并未做详细记录。通过正式方式这些知识记录下来,公司可以保留机构记忆,促进创新,增强决策流程,并加快新员工的学习速度。此外,它还可以促进协作,赋予个人权力,以及打造持续改进的文化。最终,利用机构知识可以帮助公司运用其最有价值的资产(员工的集体智慧)来应对挑战,推动增长,以及在瞬息万变的商业环境中保持竞争优势。

此模式解释了如何通过高级员工的录音来收集制度性知识。它使用 Amazon TranscribeAmazon Bedrock 进行系统的记录和验证。通过记录这些非正式知识,您可以将其保留并与未来的员工群体共享。公司在不断努力,整合通过直接经验获得的实践知识,进而为实现卓越运营提供支持以及提高培训计划的有效性。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • Docker,已安装

  • AWS Cloud Development Kit(AWS CDK)版本 2.114.1 或更高版本,已安装引导us-east-1us-west-2 AWS 区域

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

  • AWS 命令行界面(AWS CLI),已安装配置

  • Python 版本 3.12 或更高版本,已安装

  • 创建 Amazon Transcribe、Amazon Bedrock、Amazon Simple Storage Service(Amazon S3)和 AWS Lambda 资源的权限

限制

  • 此解决方案部署至单个 AWS 账户。

  • 此解决方案只能部署在提供 Amazon Bedrock 和 Amazon Transcribe 的 AWS 区域。有关可用性的信息,请参阅 Amazon BedrockAmazon Transcribe 的文档。

  • 音频文件必须采用 Amazon Transcribe 支持的格式。有关支持的格式列表,请参阅 Transcribe 文档中的媒体格式

产品版本

  • 适用于 Python 的 Amazon SDK(Boto3)版本 1.34.57 或更高版本

  • LangChain 版本 0.1.12 或更高版本

架构

该架构代表了 AWS 上的无服务器工作流。AWS Step Functions 编排 Lambda 函数,用于音频处理、文本分析和文档生成。下图显示了 Step Functions 工作流,也称为状态机

Step Functions 状态机生成文档的架构图

状态机中的每个步骤都由一个不同的 Lambda 函数处理。以下是文档生成过程中的步骤:

  1. preprocess Lambda 函数验证传递给 Step Functions 的输入,并列出所提供的 Amazon S3 URI 文件夹路径中的所有音频文件。工作流中的下游 Lambda 函数使用文件列表来验证、汇总和生成文档。

  2. transcribe Lambda 函数使用 Amazon Transcribe 将音频文件转换为文本记录。此 Lambda 函数负责启动转录过程并将语音准确地转换为文本,然后将其存储起来以供后续处理。

  3. validate Lambda 函数分析文本记录,确定回复与初始问题的相关性。通过 Amazon Bedrock 使用大语言模型(LLM),它可以识别并区分与主题相关的答案及偏离主题的回复。

  4. summarize Lambda 函数使用 Amazon Bedrock 生成连贯而简洁的与主题相关的答案的摘要。

  5. generate Lambda 函数将摘要汇编成结构良好的文档。它可以根据预定义的模板格式化文档,并包括任何其他必要的内容或数据。

  6. 如果任何 Lambda 函数失败,您将通过 Amazon Simple Notification Service(Amazon SNS)接收电子邮件通知。

在整个过程中,AWS Step Functions 可确认每个 Lambda 函数都会按正确的顺序启动。该状态机具有并行处理能力,因此可提高效率。Amazon S3 存储桶可充当中央存储库,通过管理所涉及的各种媒体和文档格式来支持工作流。

工具

AWS 服务

  • Amazon Bedrock 是一项完全托管的服务,它通过统一的 API 提供来自领先的人工智能初创公司和亚马逊的高性能基础模型 (FMs) 供您使用。

  • AWS Lambda 是一项计算服务,可帮助您运行代码,而无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。

  • Amazon Simple Notification Service (Amazon SNS) 可帮助您协调和管理发布者与客户端(包括 Web 服务器和电子邮件地址)之间的消息交换。

  • Amazon Simple Storage Service(Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • AWS Step Functions 是一项无服务器编排服务,可让您搭配使用 AWS Lambda 函数和其他 Amazon Web Services 来构建业务关键型应用程序。 

  • Amazon Transcribe 是一种自动语音识别服务,它使用机器学习模型将音频转换为文本。

其他工具

  • LangChain是一个用于开发由大型语言模型支持的应用程序的框架 (LLMs)。

代码存储库

此模式的代码可在 GitHub genai-knowledge-capture存储库中找到。

此代码存储库包含以下文件和文件夹:

  • assets 文件夹 – 解决方案的静态资产,例如架构图和公有数据集

  • code/lambdas 文件夹 – 所有 Lambda 函数的 Python 代码

    • code/lambdas/generate 文件夹 - 根据 S3 存储桶中的汇总数据生成文档的 Python 代码

    • code/lambdas/preprocess 文件夹 - 处理 Step Functions 状态机输入的 Python 代码

    • code/lambdas/summarize 文件夹 - 使用 Amazon Bedrock 服务汇总转录数据的 Python 代码

    • code/lambdas/transcribe 文件夹 - 使用 Amazon Transcribe 将语音数据(音频文件)转换为文本的 Python 代码

    • code/lambdas/validate 文件夹 - 验证所有答案是否都与同一主题有关的 Python 代码

  • code/code_stack.py – 用于创建 AWS 资源的 AWS CDK 构造 Python 文件

  • app.py – 用于在目标 AWS 账户中部署 AWS 资源的 AWS CDK 应用程序 Python 文件

  • requirements.txt – AWS CDK 必须安装的所有 Python 依赖项列表

  • cdk.json – 用于提供创建资源所需值的输入文件

最佳实践

提供的代码示例仅用于 proof-of-concept (PoC) 或试运行目的。如果您想将解决方案部署到生产环境,请使用以下最佳实践:

操作说明

Task说明所需技能

导出账户和 AWS 区域的变量。

要使用环境变量为 AWS CDK 提供 AWS 凭证,请运行以下命令。

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
AWS DevOps, DevOps 工程师

设置 AWS CLI 命名配置文件。

要为账户设置 AWS CLI 命名配置文件,请按照配置和凭证文件设置中的说明进行操作。

AWS DevOps, DevOps 工程师
Task说明所需技能

将存储库克隆到本地工作站。

要克隆genai-knowledge-capture存储库,请在终端中运行以下命令。

git clone https://github.com/aws-samples/genai-knowledge-capture
AWS DevOps, DevOps 工程师

(可选)替换音频文件。

要自定义示例应用程序以包含您自己的数据,请执行以下操作:

  1. 导航到克隆的存储库中 assets/audio_samples 文件夹。

  2. 删除包含示例音频文件的文件夹。

  3. 为要分析的每个主题创建一个文件夹。

  4. 将音频文件传输到各自的文件夹中。

AWS DevOps, DevOps 工程师

设置 Python 虚拟环境。

要设置 Python 虚拟环境,请运行以下命令。

cd genai-knowledge-capture python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
AWS DevOps, DevOps 工程师

合成 AWS CDK 代码。

要将代码转换为 AWS CloudFormation 堆栈配置,请运行以下命令。

cdk synth
AWS DevOps, DevOps 工程师
Task说明所需技能

预调配基础模型访问权限。

允许您的 AWS 账户访问 Anthropic Claude 3 Sonnet 模型。有关说明,请参阅 Bedrock 文档中的添加模型访问权限

AWS DevOps

在账户中部署资源。

若要使用 AWS CDK 在 AWS 账户中部署资源,请执行以下操作:

  1. (可选)在克隆存储库的根目录中,在app.py文件中,更新 AWS CloudFormation 堆栈名称。默认堆栈名称为 genai-knowledge-capture-stack

  2. 要部署资源,请运行命令 cdk deploy

    cdk deploy 命令使用第 3 层构造来创建一组 Lambda 函数、一个 S3 存储桶、一个 Amazon SNS 主题和一个 Step Functions 状态机。部署期间,assets/audio_samples 文件夹中的音频文件会被复制到 S3 存储桶中。

  3. 登录 AWS 管理控制台,然后在上打开 CloudFormation 控制台https://console.aws.amazon.com/cloudformation/

  4. 确认堆栈已成功部署。有关说明,请参阅在 AWS CloudFormation 控制台上查看您的堆栈

AWS DevOps, DevOps 工程师

订阅 Amazon SNS 主题。

要订阅 Amazon SNS 主题以接收通知,请执行以下操作:

  1. 在 CloudFormation 控制台的导航窗格中,选择 Stacks

  2. 选择 genai-knowledge-capture-stack 堆栈。

  3. 选择输出选项卡。

  4. 找到带有密钥 SNSTopicName 的 Amazon SNS 主题名称。

  5. 按照将电子邮件地址订阅到 Amazon SNS SNS 主题中的说明配置接收通知的电子邮件。

常规 AWS
Task说明所需技能

运行状态机。

  1. 打开 Step Functions 控制台

  2. 状态机页面上,选择 genai-knowledge-capture-stack-state- machine。

  3. 选择启动执行

  4. (可选)在名称框中,输入执行的名称。

  5. 输入区域中,将占位符文本替换为以下 JSON 对象,其中:

    • <Name> 是您要的文档名。

    • <S3 bucket name> 是包音频文件的 Amazon S3 存储桶的名称。

    • <Folder path> 是包含音频文件的目录。

    {   "documentName": "<Name>",   "audioFileFolderUri": "s3://<S3 bucket name>/<Folder path>" }
  6. 选择开始执行

  7. 在执行详细信息页面上,查看结果并等待执行完成。

应用程序开发人员,常规 AWS
Task说明所需技能

移除 AWS 资源。

在测试解决方案后,清理资源:

  1. 从 S3 存储桶中删除所有对象,然后删除存储桶。有关更多信息,请参阅删除存储桶

  2. 在克隆的存储库,运行命令 cdk destroy

AWS DevOps, DevOps 工程师

相关资源

AWS 文档

其他资源