

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

# Amazon Bedrock 代理人的運作方式
<a name="agents-how"></a>


|  | 
| --- |
| *使用 Amazon Bedrock AgentCore 將代理程式加速至生產環境。AgentCore 是一種代理程式平台，可大規模安全地建置、部署和操作功能強大的代理程式。如需詳細資訊，請參閱 [AgentCore 開發人員指南](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html)。* | 

Amazon Bedrock 代理人包含下列兩組主要的 API 操作，可協助您設定和執行代理程式：
+ [建置時期 API 操作](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock.html)，用以建立、設定和管理代理程式及其相關資源
+ [執行時期 API 操作](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_Operations_Agents_for_Amazon_Bedrock_Runtime.html)，使用使用者輸入調用您的代理程式，並啟動協同運作以執行任務

## 建置時期組態
<a name="agents-btl"></a>

代理程式包含以下元件：
+ **基礎模型** – 您可以選擇代理程式調用的基礎模型 (FM)，以便在其協同運作過程中解譯使用者輸入和隨後提示。代理程式也會調用 FM，在其程序中產生回應和後續步驟。
+ **指示** – 您撰寫指示，說明代理程式的設計目的。透過進階提示，您可以在協同運作的每個步驟進一步自訂代理程式的指示，並包含 Lambda 函式來剖析每個步驟的輸出。
+ 至少下列其中一個項目：
  + **動作群組** – 您可以定義代理程式應為使用者執行的動作 (透過提供下列資源)：
    + 下列其中一個結構描述，用於定義代理程式從使用者取得所需的參數 (每個動作群組可以使用不同的結構描述)：
      + OpenAPI 結構描述，用於定義代理程式可調用以執行其任務的 API 操作。OpenAPI 結構描述包含需要從使用者取得的參數。
      + 函數會詳細說明結構描述，以定義代理程式可從使用者取得的參數。然後，代理程式可以將這些參數用於進一步協同運作，或者您可以設定如何在自己的應用程式中使用這些參數。
    + (選用) 具有下列輸入和輸出的 Lambda 函式：
      + 輸入 – 協同運作期間識別的 API 操作和/或參數。
      + 輸出 – API 調用的回應或函數調用的回應。
  + **知識庫** – 將知識庫與代理程式建立關聯。代理程式會查詢知識庫以取得額外的內容，以增強回應產生並輸入協同運作程序的步驟。
+ **提示範本** – 提示範本是建立提示以提供給 FM 的基礎。Amazon Bedrock 代理人會公開預設的四個基本提示範本，這些範本會在預先處理、協同運作、產生知識庫回應和後續處理期間使用。您也可以選擇編輯這些基本提示範本，以自訂代理程式序列中每個步驟的行為。您也可以為了進行疑難排解而關閉某些步驟，或者如果您認為某個步驟不必要也可以關閉步驟。如需詳細資訊，請參閱[使用 Amazon Bedrock 中的進階提示範本提高代理程式的準確性](advanced-prompts.md)。

在建置時期，會收集所有這些元件以建構代理程式的基本提示，以便執行協同運作，直到使用者請求完成為止。透過進階提示，您可以使用其他邏輯和少量樣本範例來修改這些基本提示，以提高每個代理程式調用步驟的準確性。基本提示範本包含指示、動作描述、知識庫描述和對話歷程記錄，您可以自訂所有這些範本，以便根據您的需求修改代理程式。然後，您可以*準備*代理程式，此程序會封裝代理程式的所有元件，包括安全組態。準備代理程式會使其進入可在執行時期進行測試的狀態。下圖描述建置時期 API 操作如何建構代理程式。

![建置時期 API 如何建構您的代理程式。動作群組包含 OpenAPI 結構描述和 Lambda 函式，可定義代理程式可以呼叫哪些 API 操作，以及代理程式應如何處理請求和回應。代理程式會從基本提示範本、提供給它的說明，以及任何連接的動作群組和知識庫來合成資訊，以搭配其使用的模型產生提示。提示會新增至代理程式的提示存放區。](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/agents/agents-buildtime.png)


## 執行時期程序
<a name="agents-rt"></a>

執行時期由 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) API 操作管理。此操作會啟動代理程式序列，其中包含下列三個主要步驟。

1. **預先處理** – 管理代理程式如何對使用者輸入進行情境化和分類，並可用於驗證輸入。

1. **協同運作** – 解譯使用者輸入、調用動作群組和查詢知識庫，並將輸出傳回給使用者，或做為持續協同運作的輸入。協同運作包含下列步驟：

   1. 代理程式會使用基礎模型解譯輸入，並產生一個*理由*，列出下一個步驟應採用的邏輯。

   1. 代理程式預測應該調用的動作群組中的哪些動作，或是應該查詢的知識庫。

   1. 如果代理程式預測需要調用動作，代理程式會將從使用者提示決定的參數傳送至[為動作群組設定的 Lambda 函式](agents-lambda.md)，或透過在 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) 回應中傳送參數來[傳回控制權](agents-returncontrol.md)。如果代理程式沒有足夠的資訊來調用動作，它可能會執行下列其中一個動作：
      + 查詢相關聯的知識庫 (**知識庫回應產生**)，以擷取其他內容並摘要資料以增強其產生。
      + 重新提示使用者以收集動作所需的所有必要參數。

   1. 代理程式透過調用動作和/或從知識庫彙總結果，產生稱為*觀察*的輸出。代理程式會使用觀察來增強基本提示，然後使用基礎模型解譯該提示。然後，代理程式會判斷是否需要重複協同運作過程。

   1. 這個迴圈會繼續進行，直到代理程式傳回回應給使用者，或直到它需要提示使用者提供額外資訊為止。

   在協同運作過程期間，基本提示範本會增強已新增至代理程式的代理程式指示、動作群組和知識庫。然後，增強的基本提示會用於調用 FM。FM 會預測最好的步驟和軌跡，以滿足使用者的輸入。在協同運作過程的每次迭代中，FM 都會預測要調用的 API 操作或要查詢的知識庫。

1. **後續處理** – 代理程式會格式化要傳回給使用者的最終回應。此步驟預設為關閉。

當您調用代理程式時，您可以在執行時期開啟**追蹤**。使用追蹤，您可以在代理程式序列的每個步驟追蹤代理程式的原理、動作、查詢和觀察。追蹤包括在每個步驟傳送到基礎模型的完整提示，以及基礎模型、API 回應和知識庫查詢的輸出。您可以使用追蹤來了解代理程式在每個步驟的推論。如需詳細資訊，請參閱[使用追蹤以追蹤代理程式的逐步推理程序](trace-events.md)。

隨著代理程式的使用者工作階段繼續處理更多 `InvokeAgent` 請求，對話歷史記錄也會保留。對話歷史記錄會持續增強協同運作基礎提示範本與內容，協助改善代理程式的準確性和效能。下圖顯示代理程式在執行時期的處理程序：

![代理程式在執行時期如何運作。接收使用者輸入後，代理程式會從提示存放區擷取擴增的提示，並從工作階段存放區擷取對話歷史記錄。如果已啟用預先處理步驟，代理程式會使用預先處理提示來調用 FM，以驗證使用者輸入。在協同運作步驟中，代理程式會使用協同運作提示來調用 FM，並剖析回應。然後，它會視需要決定動作群組和查詢知識庫，並產生可能觸發新協同運作提示的觀察。協同運作階段會循環，直到觀察傳回最終回應給使用者為止。](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/agents/agents-runtime.png)
