

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

# 使用 Amazon Bedrock 和 Amazon Transcribe 从语音输入中记录机构知识
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe"></a>

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

## Summary
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-summary"></a>

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

此模式解释了如何通过高级员工的录音来收集制度性知识。它使用 [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) 和 [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) 进行系统的记录和验证。通过记录这些非正式知识，您可以将其保留并与未来的员工群体共享。公司在不断努力，整合通过直接经验获得的实践知识，进而为实现卓越运营提供支持以及提高培训计划的有效性。

## 先决条件和限制
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account
+ Docker，[已安装](https://docs.docker.com/engine/install/)
+ AWS Cloud Development Kit（AWS CDK）版本 2.114.1 或更高版本，[已安装](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_tools)并[引导](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap)到 `us-east-1` 或 `us-west-2` AWS 区域
+ AWS CDK Toolkit 版本 2.114.1 或更高版本，[已安装](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ AWS 命令行界面（AWS CLI），[已安装](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)并[配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Python 版本 3.12 或更高版本，[已安装](https://www.python.org/downloads/)
+ 创建 Amazon Transcribe、Amazon Bedrock、Amazon Simple Storage Service（Amazon S3）和 AWS Lambda 资源的权限

**限制**
+ 此解决方案部署至单个 AWS 账户。
+ 此解决方案只能部署在提供 Amazon Bedrock 和 Amazon Transcribe 的 AWS 区域。有关可用性的信息，请参阅 [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) 和 [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html#tsc-regions) 的文档。
+ 音频文件必须采用 Amazon Transcribe 支持的格式。有关支持的格式列表，请参阅 Transcribe 文档中的[媒体格式](https://docs.aws.amazon.com/transcribe/latest/dg/how-input.html#how-input-audio)。

**产品版本**
+ 适用于 Python 的 Amazon SDK（Boto3）版本 1.34.57 或更高版本
+ LangChain 版本 0.1.12 或更高版本

## 架构
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-architecture"></a>

该架构代表了 AWS 上的无服务器工作流。[AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 编排 Lambda 函数，用于音频处理、文本分析和文档生成。下图显示了 Step Functions 工作流，也称为*状态机*。

![\[Step Functions 状态机生成文档的架构图\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/f1e0106d-b046-4adc-9718-c299efb7b436/images/e90298ca-1b7f-4c3e-97bd-311a9d5a4997.png)


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

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

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

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

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

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

1. 如果任何 Lambda 函数失败，您将通过 Amazon Simple Notification Service（Amazon SNS）接收电子邮件通知。

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

## 工具
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-tools"></a>

**AWS 服务**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) 是一项完全托管的服务，它通过统一的 API 提供来自领先的人工智能初创公司和亚马逊的高性能基础模型 (FMs) 供您使用。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 是一项计算服务，可帮助您运行代码，而无需预置或管理服务器。它仅在需要时运行您的代码，并且能自动扩缩，因此您只需为使用的计算时间付费。
+ [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 可帮助您协调和管理发布者与客户端（包括 Web 服务器和电子邮件地址）之间的消息交换。
+ [Amazon Simple Storage Service（Amazon S3）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 是一项无服务器编排服务，可让您搭配使用 AWS Lambda 函数和其他 Amazon Web Services 来构建业务关键型应用程序。 
+ [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) 是一种自动语音识别服务，它使用机器学习模型将音频转换为文本。

**其他工具**
+ [LangChain](https://python.langchain.com/docs/get_started/introduction/)是一个用于开发由大型语言模型支持的应用程序的框架 (LLMs)。

**代码存储库**

此模式的代码可在 GitHub [genai-knowledge-capture](https://github.com/aws-samples/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` – 用于提供创建资源所需值的输入文件

## 最佳实践
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-best-practices"></a>

提供的代码示例仅用于 proof-of-concept (PoC) 或试运行目的。如果您想将解决方案部署到生产环境，请使用以下最佳实践：
+ 启用 [Amazon S3 访问日志记录](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)
+ 启用 [VPC 流日志](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)

## 操作说明
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-epics"></a>

### 在本地工作站上设置 AWS 凭证
<a name="set-up-aws-credentials-on-your-local-workstation"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 导出账户和 AWS 区域的变量。 | 要使用环境变量为 AWS CDK 提供 AWS 凭证，请运行以下命令。<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number><br />export CDK_DEFAULT_REGION=<Region></pre> | AWS DevOps， DevOps 工程师 | 
| 设置 AWS CLI 命名配置文件。 | 要为账户设置 AWS CLI 命名配置文件，请按照[配置和凭证文件设置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)中的说明进行操作。 | AWS DevOps， DevOps 工程师 | 

### 设置您的环境
<a name="set-up-your-environment"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 将存储库克隆到本地工作站。 | 要克隆[genai-knowledge-capture](https://github.com/aws-samples/genai-knowledge-capture)存储库，请在终端中运行以下命令。<pre>git clone https://github.com/aws-samples/genai-knowledge-capture</pre> | AWS DevOps， DevOps 工程师 | 
| （可选）替换音频文件。 | 要自定义示例应用程序以包含您自己的数据，请执行以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps， DevOps 工程师 | 
| 设置 Python 虚拟环境。 | 要设置 Python 虚拟环境，请运行以下命令。<pre>cd genai-knowledge-capture<br />python3 -m venv .venv<br />source .venv/bin/activate<br />pip install -r requirements.txt</pre> | AWS DevOps， DevOps 工程师 | 
| 合成 AWS CDK 代码。 | 要将代码转换为 AWS CloudFormation 堆栈配置，请运行以下命令。<pre>cdk synth</pre> | AWS DevOps， DevOps 工程师 | 

### 配置和部署解决方案
<a name="configure-and-deploy-the-solution"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 预调配基础模型访问权限。 | 允许您的 AWS 账户访问 Anthropic Claude 3 Sonnet 模型。有关说明，请参阅 Bedrock 文档中的[添加模型访问权限](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#model-access-add)。 | AWS DevOps | 
| 在账户中部署资源。 | 若要使用 AWS CDK 在 AWS 账户中部署资源，请执行以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps， DevOps 工程师 | 
| 订阅 Amazon SNS 主题。 | 要订阅 Amazon SNS 主题以接收通知，请执行以下操作：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | 常规 AWS | 

### 测试解决方案
<a name="test-the-solution"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 运行状态机。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | 应用程序开发人员，常规 AWS | 

### 清理解决方案中的所有 AWS 资源
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 移除 AWS 资源。 | 在测试解决方案后，清理资源：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps， DevOps 工程师 | 

## 相关资源
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-resources"></a>

**AWS 文档**
+ Amazon Bedrock 资源：
  + [模型访问权限](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [基础模型的推理参数](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ AWS CDK 资源：
  + [AWS CDK 入门](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
  + [在 Python 中使用 AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
  + [排查常见 AWS CDK 问题](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)
  + [Toolkit 命令](https://docs.aws.amazon.com/cdk/v2/guide/cli.html#cli-commands)
+ AWS Step Functions 资源：
  + [AWS Step Functions 入门](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
  + [故障排查](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html)
+ [使用 Python 构建 Lambda 函数](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [AWS 上的生成式人工智能应用程序构建者](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)

**其他资源**
+ [LangChain 文档](https://python.langchain.com/docs/get_started/introduction)