使用 Amazon Bedrock Prompts 進行 LLM 整合的指南

隨著生成式人工智慧革命化各行業,開發人員越來越尋求將大型語言模型(LLMs)高效整合到其應用程序中的方法。Amazon Bedrock 是一個強大的解決方案。它提供了一個完全托管的服務,通過統一的 API 提供對各種基礎模型的訪問。本指南將探討 Amazon Bedrock 的主要優勢,如何將不同的 LLM 模型整合到您的項目中,如何簡化應用程序使用的各種 LLM 提示的管理,以及考慮用於生產使用的最佳實踐。

Amazon Bedrock 的主要優勢

Amazon Bedrock 通過提供啟動所需的所有基本功能,簡化了將 LLMs 整合到任何應用程序中的初始過程。

簡化訪問領先模型

Bedrock 提供對來自行業領先公司(如 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon)的多樣化高性能基礎模型的訪問。這種多樣性使開發人員能夠選擇最適合其用例的模型,並根據需要切換模型,而無需管理多個供應商關係或 API。

完全托管和無伺服器

作為一項完全托管的服務,Bedrock 消除了對基礎設施管理的需求。這使開發人員能夠專注於構建應用程序,而不必擔心基礎設施設置、模型部署和擴展的底層複雜性。

企業級安全和隱私

Bedrock 提供內建的安全功能,確保數據永遠不會離開您的 AWS 環境,並在傳輸和靜態狀態下均進行加密。它還支持遵循各種標準,包括 ISO、SOC 和 HIPAA。

保持最新的基礎設施改進

Bedrock 定期推出新功能,推動 LLM 應用的邊界,並幾乎不需要任何設置。例如,它最近推出了一個 優化的推理模式,提高了 LLM 推理的延遲,而不妥協準確性。

開始使用 Bedrock

在本節中,我們將使用 AWS SDK for Python 在您的本地機器上構建一個小應用,提供一個實用指南來開始使用 Amazon Bedrock。這將幫助您理解使用 Bedrock 的實際方面以及如何將其整合到您的項目中。

先決條件

  1. 您擁有 AWS 帳戶。
  2. 您已安裝 Python。如果尚未安裝,請按照 此指南 進行安裝。
  3. 您已正確安裝和配置 Python AWS SDK (Boto3)。建議創建一個 Boto3 可以使用的 AWS IAM 用戶。詳細說明請參見 Boto3 快速入門指南
  4. 如果使用IAM用户,请确保向其添加AmazonBedrockFullAccess策略。您可以使用AWS控制台附加策略。
  5. 按照此指南的步骤请求访问Bedrock上的一个或多个模型。

1. 创建Bedrock客户端

在AWS CDK中,Bedrock有多个可用的客户端。Bedrock客户端可让您与服务进行交互,创建和管理模型,而BedrockRuntime客户端则使您能够调用现有模型。在本教程中,我们将使用一个现成的基础模型,因此我们将只使用BedrockRuntime客户端。

Python

 

2. 调用模型

在这个例子中,我使用了Amazon Nova Micro模型(具有modelId amazon.nova-micro-v1:0),这是Bedrock中最便宜的模型之一。我们将提供一个简单的提示,要求模型为我们写一首诗,并设置参数来控制输出的长度和模型应提供的创意水平(称为“温度”)。请随意尝试不同的提示和调整参数,看看它们如何影响输出。

Python

 

我们也可以尝试使用Anthropic的Haiku等另一个模型,如下所示。

Python

 

請注意,不同模型之間的請求/回應結構略有不同。這是一個我們將在下一部分使用預定義提示模板來解決的缺點。要嘗試其他模型,您可以在 Bedrock 控制台的“模型目錄”頁面中查找每個模型的modelId和示例 API 請求,並相應地調整代碼。一些模型還有由 AWS 撰寫的詳細指南,您可以在此處找到。

3. 使用提示管理

Bedrock 提供了一個方便的工具來創建和實驗預定義的提示模板。您可以在提示管理控制台中創建預定義的模板,而不是每次需要時在代碼中定義提示和特定參數,例如令牌長度或溫度。您指定將在運行時注入的輸入變量,設置所有必需的推理參數,並發布您的提示的版本。完成後,您的應用代碼可以調用所需版本的提示模板。

使用預定義提示的主要優勢:

  1. 隨著應用程序的增長和對於各種用例使用不同的提示、參數和模型,有助於使應用程序保持有組織性。
  2. 如果同一提示在多個位置中使用,有助於提示重複使用。
  3. 將 LLM 推理的細節從我們的應用程式代碼中抽象出來。
  4. 允許提示工程師在控制台上進行提示優化,而無需觸碰實際應用程式代碼。
  5. 它允許輕鬆進行實驗,利用不同版本的提示。您可以調整提示輸入,參數如溫度,甚至模型本身。

現在讓我們試試這個:

  1. 前往Bedrock控制台,並在左側面板上點擊“提示管理”。
  2. 點擊“創建提示”,並為您的新提示命名
  3. 輸入我們要發送到LLM的文本,以及一個佔位符變量。我使用了寫一首關於{{主題}}的短詩
  4. 在配置部分,指定您想使用的模型,並設置與之前使用的相同參數的值,例如“溫度”和“最大標記”。如果您喜歡,您可以將默認值保留不變。
  5. 是時候測試了!在頁面底部,為您的測試變量提供一個值。我使用了“軟體開發英雄”。然後,點擊右側的“運行”按鈕,查看輸出是否滿意。

供參考,這裡是我的配置和結果。

我們需要發布一個新的提示版本才能在應用程序中使用此提示。要這樣做,請點擊頂部的“創建版本”按鈕。這將創建您當前配置的快照。如果您想玩弄它,您可以繼續編輯並創建更多版本。

發布後,我們需要找到提示版本的ARN(Amazon資源名稱),方法是轉到您的提示頁面並點擊新創建的版本。

複製此特定提示版本的ARN以在代碼中使用。

一旦我們有了 ARN,我們就可以更新我們的代碼以調用這個預定義的提示。我們只需要提示版本的 ARN 和我們注入其中的任何變量的值。

Python

 

正如您所看到的,通過將 LLM 推斷的細節抽象化並促進可重用性,這簡化了我們的應用代碼。請隨意在您的提示中嘗試不同的參數,創建不同的版本,並在應用中使用它們。您可以將此擴展為一個簡單的命令行應用程序,該應用程序接受用戶輸入並根據該主題撰寫一首短詩。

下一步和最佳實踐

一旦您熟悉使用 Bedrock 將 LLM 集成到您的應用程序中,請探索一些實用考慮因素和最佳實踐,使您的應用程序準備好投入生產使用。

提示工程

您用於調用模型的提示可能會使或斷掉您的應用程序。提示工程是創建和優化指令以從 LLM 獲得所需輸出的過程。通過上述探索的預定義提示模板,熟練的提示工程師可以開始進行提示工程,而不會干擾您的應用程序的軟體開發過程。您可能需要調整提示以特定於您想使用的模型。熟悉與每個模型提供者特定的提示技術。Bedrock 提供了一些常見大型模型的指南

模型選擇

作出正確的模型選擇是在滿足應用需求和承擔成本之間取得平衡。功能更強大的模型往往更昂貴。並非所有的使用情況都需要最強大的模型,而最便宜的模型可能並不總是提供您所需的性能。使用模型評估功能快速評估和比較不同模型的輸出,以確定哪一個最符合您的需求。Bedrock提供多種選項來上傳測試數據集,並配置如何評估各個使用情況的模型準確性。

微調並擴展您的模型與RAG和代理

如果現成的模型不夠滿足您的需求,Bedrock提供了調整模型以適應您特定使用情況的選項。創建您的訓練數據,上傳至S3,並使用Bedrock控制台啟動微調作業。您還可以使用檢索增強生成(RAG)等技術擴展您的模型,以提高特定使用情況的性能。連接現有的數據來源,Bedrock將使這些數據對模型可用以增強其知識。Bedrock還提供了創建代理的能力,以規劃和執行使用現有公司系統和數據來源的複雜多步任務。

安全和防護措施

使用護欄,可以確保您的生成應用程序優雅地避免敏感話題(例如種族主義、色情內容和粗口),並且生成的內容被紮實地基礎以防止幻覺。這個功能對於維護應用程序的道德和專業標準至關重要。利用Bedrock內置的安全功能並將其與現有的AWS安全控制整合。

成本優化

在廣泛推出應用程序或功能之前,請考慮Bedrock推理和擴展(如RAG)將產生的成本。

  • 如果您能預測您的流量模式,請考慮使用預留吞吐量以實現更高效和具有成本效益的模型推理。
  • 如果您的應用程序由多個功能組成,您可以為每個功能使用不同的模型和提示來基於個別情況優化成本。
  • 重新檢查您的模型選擇以及為每個推理提供的提示大小。Bedrock通常按“每令牌”計價,因此較長的提示和較大的輸出將產生更多成本。

結論

Amazon Bedrock是將LLM集成到應用程序中的強大靈活平台。它提供訪問許多模型,簡化開發,並提供強大的自定義和安全功能。因此,開發人員可以利用生成式AI的威力,同時專注於為用戶創造價值。本文展示了如何開始進行基本Bedrock集成並保持我們的提示有組織。

隨著人工智慧的發展,開發人員應該及時了解亞馬遜 Bedrock 中最新功能和最佳實踐,以構建他們的人工智慧應用程序。

Source:
https://dzone.com/articles/amazon-bedrock-prompts-llm-integration-guide