介紹
先決條件
目標技術堆疊
部署
有用的 CDK 指令
程式碼結構
使用您自己的數據自訂聊天機器人
此 GenAI ChatBot 應用程式是使用 Amazon Bedrock 建置的,其中包括知識庫、代理程式和其他 AWS 無伺服器 GenAI 解決方案。提供的解決方案展示了一個聊天機器人,該機器人利用其對 EC2 執行個體和 EC2 執行個體定價的理解。這款聊天機器人展示了 Amazon Bedrock 將自然語言轉換為 Amazon Athena 查詢以及處理和利用複雜資料集的功能。 LLamaIndex 等開源工具用於增強系統的資料處理和檢索功能。該解決方案還強調了多種AWS資源的整合。這些資源包括用於儲存的Amazon S3、用於促進檢索增強生成(RAG) 的Amazon Bedrock KnowledgeBase、用於跨資料來源執行多步驟任務的Amazon Bedrock 代理、用於準備資料的AWS Glue、用於執行高效查詢的Amazon Athena、用於執行高效查詢的Amazon Lambda管理容器,Amazon ECS 監督容器。這些資源的綜合利用使聊天機器人能夠有效地檢索和管理資料庫和文件中的內容,從而展示了 Amazon Bedrock 在開發高級聊天機器人應用程式方面的能力。
碼頭工人
AWS CDK Toolkit 2.114.1+,已安裝並設定。有關更多信息,請參閱 AWS CDK 文件中的 AWS CDK 入門。
Python 3.11+,已安裝並配置。有關更多信息,請參閱 Python 文件中的初學者指南/下載。
活躍的 AWS 帳戶
使用 us-east-1 或 us-west-2 中的 AWS CDK 引導的 AWS 帳戶。在 Bedrock 服務中啟用 Claude 模型和 Titan Embedding 模型存取。
亞馬遜基岩
亞馬遜 OpenSearch 無伺服器
亞馬遜ECS
AWS膠水
AWS Lambda
亞馬遜S3
亞馬遜雅典娜
彈性負載平衡器
要在本地運行應用程序,請先將 .env 檔案新增至包含以下內容的“code/streamlit-app”資料夾
ACCOUNT_ID = <您的帳號 ID>AWS_REGION = <您的區域>LAMBDA_FUNCTION_NAME = invokeAgentLambda # 設定 Streamlit 為回應呼叫的 lambda 函數的選擇名稱。當前正在調用代理。
cdk.json
檔案告訴 CDK Toolkit 如何執行您的應用程式。
此專案的設定類似於標準 Python 專案。初始化過程也會在此專案中建立一個 virtualenv,儲存在.venv
目錄下。要建立 virtualenv,它假設您的路徑中有一個可以存取venv
套件的python3
(或 Windows 的python
)可執行檔。如果因為任何原因自動建立 virtualenv 失敗,您可以手動建立 virtualenv。
要在 MacOS 和 Linux 上手動建立 virtualenv:
$ python3 -m venv .venv
初始化過程完成並建立 virtualenv 後,您可以使用以下步驟啟動 virtualenv。
$ 來源 .venv/bin/activate
如果你是Windows平台,你可以像這樣啟動virtualenv:
% .venvScriptsactivate.bat
啟動 virtualenv 後,您可以安裝所需的依賴項。
$ pip install -r 要求.txt
若要新增其他依賴項(例如其他 CDK 庫),只需將它們新增至setup.py
檔案並重新執行pip install -r requirements.txt
命令。
此時,您現在可以為此程式碼合成 CloudFormation 範本。
$ cdk 合成器
若要新增其他依賴項(例如其他 CDK 庫),只需將它們新增至setup.py
檔案並重新執行pip install -r requirements.txt
命令。
如果這是您第一次在特定帳戶和區域執行 cdk,則需要引導它。
$ cdk 引導程式
一旦引導完成,您就可以繼續部署 cdk。
$ cdk 部署
如果這是您第一次部署它,則在 ECS(Amazon Elastic Container Service)中建置多個 Docker 映像的過程可能需要大約 30-45 分鐘。請耐心等待直至完成。之後,它將開始部署聊天機器人堆疊,通常需要大約 5-8 分鐘。
部署程序完成後,您將在終端機中看到 cdk 的輸出,並且您也可以在 CloudFormation 控制台中驗證狀態。
您可以在 AWS 控制台中測試代理,也可以透過 CloudFormation 中聊天機器人堆疊的輸出中列出的 Streamlit 應用程式 URL 來測試代理程式。
如果您想在使用完 cdk 後將其刪除,以避免日後產生費用,您可以透過控制台刪除它,也可以在終端機中執行以下命令。
$ cdk 銷毀
您可能還需要手動刪除 cdk 產生的 S3 儲存桶。請確保刪除所有產生的資源,以避免產生費用。
cdk ls
列出應用程式中的所有堆疊
cdk synth
發出合成的 CloudFormation 模板
cdk deploy
將此堆疊部署到您的預設AWS帳戶/區域
cdk diff
將部署的堆疊與目前狀態進行比較
cdk docs
開啟 CDK 文檔
cdk destroy
dstroys 一個或多個指定的堆疊
code # Root folder for code for this solution ├── lambdas # Root folder for all lambda functions │ ├── action-lambda # Lambda function that acts as an action for the Amazon Bedrock Agent │ ├── create-index-lambda # Lambda function that create Amazon Opensearch serverless index as Amazon Bedrock Knowlege base's vector database │ ├── invoke-lambda # Lambda function that invokes Amazon Bedrock Agent, which is called diretly from the streamlit app │ └── update-lambda # Lambda function that update/delete resources after AWS resources deployed via AWS CDK. ├── layers # Root folder for all lambda layers │ ├── boto3_layer # Boto3 layer that is shared across all lambdas │ └── opensearch_layer # opensearh layer that installs all dependencies for create Amazon Opensearch serverless index. ├── streamlit-app # Steamlit app that interacts with the Amazon Bedrock Agent └── code_stack.py # Amazon CDK stack that deploys all AWS resources
若要整合您的自訂資料以部署解決方案,請遵循以下根據您的要求自訂的結構化指南:
找到assets/knowledgebase_data_source/
目錄。
將您的資料集放入此資料夾中。
存取cdk.json
檔案。
導航至context/configure/paths/knowledgebase_file_name
欄位並相應地更新它。
此外,修改cdk.json
檔案中的bedrock_instructions/knowledgebase_instruction
字段,以準確反映新資料集的細微差別和上下文。
在assets/data_query_data_source/
目錄中,建立一個子目錄,例如 tabular_data。
將您的結構化資料集(可接受的格式包括CSV 、 JSON 、 ORC和Parquet )存放到這個新建立的子資料夾中。
如果您要連接到現有資料庫,請更新code/lambda/action-lambda/build_query_engine.py
中的函數create_sql_engine()
以連接到您的資料庫。
更新cdk.json
檔案的context/configure/paths/athena_table_data_prefix
欄位以與新資料路徑保持一致。
透過將新文字合併到與您的資料集對應的 SQL 範例中來修改code/lambda/action-lambda/dynamic_examples.csv
。
修改code/lambda/action-lambda/prompt_templates.py
以反映新表格資料的屬性。
修改cdk.json
檔案的context/configure/bedrock_instructions/action_group_description
欄位以闡明為您的資料集自訂的操作 lambda 的用途和功能。
在assets/agent_api_schema/artifacts_schema.json
檔案中反映操作 lambda 的新功能。
在cdk.json
檔案的context/configure/bedrock_instructions/agent_instruction section
下,提供 Amazon Bedrock Agent 的預期功能和設計目的的全面描述,同時考慮到新整合的資料。
這些步驟旨在確保無縫且高效的整合流程,使您能夠使用客製化資料有效部署解決方案。