該存儲庫託管了支持RE:Inforce 2024代碼與會話ID DAP341的示例代碼。該存儲庫中的代碼非常易於在會話期間優化可讀性,並且不打算在生產環境中使用。
該存儲庫中代碼的目的是證明檢索增強發電(RAG)聊天機器人的功能核心,同時突出顯示一些與生成AI工作負載相關的數據保護注意事項。
如果您想在生產中使用AWS部署帶有AWS的RAG聊天機器人樣式用例,請考慮以下選項:
該存儲庫包含一系列Python“腳本”,可以執行以演示一系列想法。腳本編號是因為依次執行時,他們講述了一個有關抹布聊天機器人如何工作的故事,以及如何在基於Genai的工作負載中保護數據。但是,這些腳本都是獨立的,並且不需要依次運行。
這裡提供的一些Python腳本在運行之前需要修改。這些腳本在此處完全存儲,就像在RE:Inforce演示文稿中所顯示的以保持一致性。您必須使用#UPDATE_TO_RUN_YOURSELF註釋必須更新腳本的實例。
運行Python示例腳本所需的AWS資源,例如本存儲庫的用戶可以提供Amazon Kendra索引,示例數據等,但以下是有關如何創建這些資源的說明。
在Python腳本工作之前需要創建和引用的主要AWS資源是Amazon Kendra索引和隨附的Kendra數據源,該數據源指向Amazon S3存儲桶上的數據。請注意,Amazon Kendra指數的成本不高,並且在部署此解決方案之前應注意了解這些費用。
此存儲庫中提供的代碼旨在互補,以在AWS上部署生成AI應用程序構建器。如果您在AWS上部署了生成AI應用程序構建器,然後使用啟用“抹布”選項部署“文本”用例部署,則可以為您創建kendra index,如以下部分所示:
根據部署指南將生成AI應用程序構建器部署在AWS解決方案上。
在與數據保護有關的情況下,請考慮使用啟用VPC選項部署解決方案,該選項通過利用VPC端點來最大程度地減少在公共Internet上流動的流量。
部署儀表板部署後,您將能夠部署用例。
部署用例時,選擇text選項。在Select knowledge base部分中,選擇yes ,請選擇Kendra作為知識庫,並且,如果您尚未擁有Kendra索引,請選擇no以“您有現有的Kendra索引?”為您創建一個。所有其他默認值都可以,但是如果需要/根據需要調整以適應您的需求。
一旦部署了生成AI應用程序構建器,您將擁有Amazon Kendra索引。現在,您需要將Kendra數據源添加到該索引。首先,創建或重複使用現有的Amazon S3存儲桶以存儲數據。將data目錄的內容以及該存儲庫中的src/kendra-acl.json上傳到該S3桶中,以使結果結構看起來像這樣:
engineering/rootrunner3k-techspecs.txt
wiki/ecorobopotato.txt
kendra-acl.json
在AWS管理控制台中導航到您的Amazon Kendra索引,然後選擇Add Data Sources選項。選擇Amazon S3 connector選項。給數據源一個名稱。創建一個IAM角色,或根據需要使用現有角色。在Configure sync settings中,請輸入S3存儲桶的位置,將kendra-acl.json文件設置在Access control list configuration file location設置,擴展Additional configuration ,然後將engineering和marketing添加為要索引的前綴。所有其他默認值都足以創建和部署您的Kendra數據源。創建數據源後,您必須至少啟動數據源sync操作一次,並在運行任何Python腳本之前等待該同步完成。
在調用任何Amazon Bedrock型號之前,您必須啟用模型訪問。該存儲庫使用Claude 3十四行詩,因此至少必須啟用此模型。
為了專門運行CloudWatch Python文件,您必須啟用Amazon Bedrock模型調用日誌記錄,特別是使用Amazon CloudWatch日誌目標。
作為此過程的一部分,您將創建一個CloudWatch日誌組,必須在隨附的Python腳本中更新。
要運行與基岩護欄有關的Python腳本,您必須創建一個基石護欄。為此,使用AWS管理控制台,請導航到Amazon Bedrock Service並選擇“護欄”部分。選擇Create guardrail 。給它一個名稱,並使用默認值或您喜歡的任何選項進行設置。但是,請確保在Add sensitive information filters部分中添加Address PII類型,然後選擇Mask作為護欄行為。這樣可以確保您的護欄將復制該項目中旨在在Python腳本中演示的行為。
src目錄中的Markdown文件,圖像和Python代碼文件旨在以其編號方案指定的順序看到和執行。如下所示,是每個文件的解釋,可幫助指導讀者藉助這些代碼示例的演示文稿的意圖。
給出這些代碼段的重點,這是向您展示非常簡單的Python代碼,該代碼是可讀的,並演示了抹佈在基本層面上的工作方式,同時還突出了Genai工作負載的數據保護注意事項。
圖像用於介紹我們正在使用的數據的名義產品和組織。數據有意荒謬,因此LLM不會意外擁有與該名義產品或組織有關的任何培訓數據。但是,由於此隨附的存儲庫現在是開源的,因此LLM最終可能會使用此存儲庫作為培訓數據源,這最終可能會破壞此假設!
簡單地顯示我們設置的包含源數據的Amazon S3存儲桶的內容。它還突出了S3上此數據的加密類型,以強調靜止數據加密數據的重要性。
打印出有關我們的亞馬遜肯德拉索引的一些基本信息,以介紹肯德拉的概念,以及如何對我們的數據源進行語義搜索。
演示了一個針對我們的Kendra索引的簡單retrieve API呼叫,該呼叫根據我們提出的問題檢索上下文。
打電話給亞馬遜基岩,並提出一個與我們概念性專有數據無關的問題。這旨在證明LLM如何能夠回答有關公開可用事物的許多問題,因為LLM經常受到從開放互聯網上刮除的大量數據進行培訓。
呼叫床岩,並詢問有關我們專有數據的問題。演示LLM如何無法回答有關專有數據的問題,而這些問題尚未屬於其培訓數據集的一部分。
首先稱肯德拉(Kendra)從我們的專有數據中檢索相關上下文,然後在亞馬遜基岩中調用LLM時使用該上下文。該模式稱為檢索增強產生或抹布。
在呼叫Amazon Kendra的訪問控制列表中添加。由於我們的“營銷”小組不允許從Kendra訪問技術規格文檔,因此我們的答案不包括有關營銷未被授權查看的內容的詳細信息。這表明,在使用基於抹布的方法時,我們如何實現文檔級授權。值得注意的是,如果您使用專有數據進行微調或繼續預先培訓以自定義LLM,則您將失去在文檔級別進行細粒度授權的能力;您的用戶要么可以訪問該自定義模型,要么無法訪問。
執行包含特定地址的破布查詢。但是,也許我們不希望地址或其他類型的PII或敏感/有害內容包含在我們的聊天機器人中...
只需列出我們將在以下步驟中使用的重新處理的Amazon Bedrock護欄的一些屬性即可。具體來說,我們看到我們的護欄編輯地址數據類型。
執行與09_RAG_ADDRESS.PY的基於抹布的調用,但在基岩的一部分中添加了基岩護欄。反過來,這從響應中編輯了特定地址PII數據。
列出了3個最近援引基岩的CloudTrail實例。這僅僅說明了CloudTrail如何用於審核Amazon Bedrock服務的使用情況。其他AWS服務還會生成CloudTrail事件,這些數據可用於審核和保護您的AWS資源。
列出3個最近的CloudWatch模型調用日誌。這說明瞭如何將數據包含在CloudWatch模型調用日誌中。因此,如果啟用模型調用日誌,則必須在保護數據源本身的相同級別的護理中保護它們。
運行Python腳本後,您將通過一些示例進行指導,這些示例為生成AI工作負載提供了數據保護注意事項。一些關鍵的外包是:
數據保護基礎仍然適用。
生成的AI介紹了一些新的注意事項
有關更多信息,請參見貢獻。
該圖書館已獲得MIT-0許可證的許可。請參閱許可證文件。