

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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*

## 總結
<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>

**先決條件**
+ 作用中的 AWS 帳戶
+ Docker，[已安裝](https://docs.docker.com/engine/install/)
+ AWS 雲端開發套件 (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 支援的格式。如需支援的格式清單，請參閱轉錄文件中的[媒體格式](https://docs.aws.amazon.com/transcribe/latest/dg/how-input.html#how-input-audio)。

**產品版本**
+ 適用於 Python (Boto3) 的 AWS 開發套件 1.34.57 版或更新版本
+ LangChain 0.1.12 版或更新版本

## Architecture
<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_tw/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 使用來自領導 AI 新創公司的高效能基礎模型 (FMs) 和 Amazon。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 是一種運算服務，可協助您執行程式碼，而無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展，因此您只需支付使用的運算時間。
+ [Amazon Simple Notification 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 函數和其他 AWS 服務來建置業務關鍵應用程式。 
+ [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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 匯出帳戶和 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將儲存庫複製到您的本機工作站。 | 若要複製 [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_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 佈建基礎模型存取。 | 啟用存取您 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_tw/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_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 執行狀態機器。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 移除 AWS 資源。 | 測試解決方案之後，請清除資源：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/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)
  + [工具組命令](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 上的生成式 AI 應用程式建置器](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)