測試代理程式行為並進行疑難排解 - Amazon Bedrock

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

測試代理程式行為並進行疑難排解

第一次建立代理程式後,您會有一個工作草稿。工作草稿是代理程式的版本,可以用來反覆組建代理程式。每次您對代理程式進行變更時,工作草稿都會更新。當您對代理程式的組態感到滿意時,可以建立「版本」,這是代理程式的快照;以及指向版本的「別名」。然後,您可以透過呼叫別名,將代理程式部署到您的應用程式。如需詳細資訊,請參閱 在應用程式中部署和使用 Amazon Bedrock 代理程式

下列清單說明如何測試代理程式:

  • 在 Amazon Bedrock 主控台中,您可以開啟側邊的測試視窗,並傳送輸入給代理程式來回應。您可以選取工作草稿或您已建立的版本。

  • 在 API 中,工作草稿是 DRAFT 版本。您可以使用 InvokeAgent 搭配測試別名、TSTALIASID 或指向靜態版本的不同別名,將輸入傳送到您的代理程式。您必須先呼叫 PrepareAgent 來準備代理程式,之後才能測試代理程式。

追蹤代理程式行為

為了協助疑難排解代理程式的行為,Amazon Bedrock 代理程式可讓您在與代理程式的工作階段期間檢視追蹤。追蹤會顯示代理程式的逐步推理程序。如需追蹤的詳細資訊,請參閱使用追蹤以追蹤代理程式的逐步推理程序

測試您的代理程式

以下是測試代理程式的步驟。選擇您偏好方法的索引標籤,然後遵循下列步驟:

Console
測試代理程式
  1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著,開啟位於 https://console.aws.amazon.com/bedrock 的 Amazon Bedrock 主控台。

  2. 從左側導覽窗格選取代理程式。接著,在代理程式區段中選擇代理程式。

  3. 代理程式區段中,從代理程式清單中選擇所要測試代理程式的連結。

  4. 測試視窗會出現在右側的窗格中。

    注意

    如果測試視窗已關閉,您可以選取代理程式詳細資訊頁面或其中任何頁面頂端的測試來重新開啟它。

  5. 建立代理程式之後,您必須以下列其中一種方式準備代理程式,將其與工作草稿變更一起封裝:

    • 測試視窗中,選取準備

    • 工作草稿頁面中,選取頁面頂端的準備

    注意

    每次更新工作草稿時,您必須準備代理程式,以使用最新的變更來封裝代理程式。最佳實務是,建議您一律在工作草稿頁面的代理程式概觀區段中檢查代理程式的上次準備時間,以確認您使用最新的組態測試代理程式。

  6. 若要選擇想測試的別名和相關聯版本,請使用測試視窗最上方的下拉式功能表。根據預設,會選取 TestAlias:工作草稿組合。

  7. (選用) 若要選取別名的佈建輸送量,您選取的測試別名下方的文字會指出使用 ODT使用 PT。若要建立佈建輸送量模型,請選取變更。如需詳細資訊,請參閱 使用 Amazon Bedrock 中的佈建輸送量增加模型調用容量

  8. (選用) 若要從提示管理使用提示,請選取訊息方塊中的選項圖示 ( Vertical ellipsis icon representing a menu or more options. ),然後選擇匯入提示。選取提示和版本。在測試變數值區段中輸入提示變數的值。如需提示管理中提示的詳細資訊,請參閱在 Amazon Bedrock 中使用提示管理來建構和存放可重複使用的提示

  9. 若要測試代理程式,請輸入訊息,然後選擇執行。當您等待回應產生或回應已產生後,您有下列選項:

    • 若要檢視代理程式協同運作程序每個步驟的詳細資訊,包括提示、推論組態,以及代理程式每個步驟的推理程序,以及其動作群組和知識庫的使用方式,請選取顯示追蹤。追蹤會即時更新,因此您可以在傳回回應之前檢視它。若要展開或收合某個步驟的追蹤,請選取步驟旁邊的箭號。如需追蹤視窗的詳細資訊和顯示的詳細資訊,請參閱 使用追蹤以追蹤代理程式的逐步推理程序

    • 如果代理程式調用知識庫,回應會包含註腳。若要檢視包含回應特定部分引用資訊之 S3 物件的連結,請選取相關註腳。

    • 如果您將代理程式設定為傳回控制權,而不是使用 Lambda 函數來處理動作群組,則回應會包含預測的動作及其參數。提供 API 或函數中該動作的範例輸出值,然後選擇提交以產生代理程式回應。如需範例,請參閱下圖:

      測試視窗請求,以提供動作的範例輸出。

    您可以在測試視窗中執行下列動作:

    • 若要開始與代理程式的新對話,請選取重新整理圖示。

    • 若要檢視追蹤視窗,請選取展開圖示。若要關閉追蹤視窗,請選取縮小圖示。

    • 若要關閉測試視窗,請選取向右箭頭圖示。

您可以啟用或停用動作群組和知識庫。使用此功能,透過評估代理程式在不同設定下的行為,找出需要更新的動作群組或知識庫,可以疑難排解代理程式。

啟用動作群組或知識庫
  1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著,開啟位於 https://console.aws.amazon.com/bedrock 的 Amazon Bedrock 主控台。

  2. 從左側導覽窗格選取代理程式。接著,在代理程式區段中選擇代理程式。

  3. 代理程式區段中,從代理程式清單中選擇所要測試代理程式的連結。

  4. 在代理程式的詳細資訊頁面上,於工作草稿區段中,選取工作草稿的連結。

  5. 動作群組知識庫區段中,將滑鼠游標暫留在您要變更其狀態之動作群組或知識庫的狀態上。

  6. 顯示編輯按鈕。選取編輯圖示,然後從下拉式功能表中選擇動作群組或知識庫是啟用還是停用

  7. 如果動作群組已停用,代理程式不會使用動作群組。如果知識庫已停用,責代理程式不會使用知識庫。啟用或停用動作群組或知識庫,然後使用測試視窗來疑難排解您的代理程式。

  8. 選擇準備,在測試代理程式之前,先套用您對代理程式所做的變更。

API

對於 2025 年 3 月 31 日after建立的代理程式:

  • 如果您已在主控台中建立代理程式,預設會啟用串流。您可以隨時停用串流。

  • 確保代理程式執行角色包含已設定代理程式模型的 bedrock:InvokeModelWithResponseStream 許可。

第一次測試代理程式之前,您必須使用 Amazon Bedrock 代理程式建置時期端點傳送 PrepareAgent 請求,將其與工作草稿變更一起封裝。在請求中包含 agentId。這些變更適用於 TSTALIASID 別名指向的 DRAFT 版本。

def prepare_agent(self, agent_id): """ Creates a DRAFT version of the agent that can be used for internal testing. :param agent_id: The unique identifier of the agent to prepare. :return: The response from Amazon Bedrock Agents if successful, otherwise raises an exception. """ try: prepared_agent_details = self.client.prepare_agent(agentId=agent_id) except ClientError as e: logger.error(f"Couldn't prepare agent. {e}") raise else: return prepared_agent_details

如需詳細資訊,請參閱 Hello Amazon Bedrock 代理程式

注意

每次更新工作草稿時,您必須準備代理程式,以使用最新的變更來封裝代理程式。最佳實務是,我們建議您使用 Amazon Bedrock 代理程式建置時期端點傳送 GetAgent 請求 (請參閱連結以了解請求和回應格式及欄位詳細資訊),並檢查代理程式的 preparedAt 時間,以驗證您是否正在使用最新組態測試代理程式。

若要測試您的代理程式,請將 InvokeAgent 請求傳送給代理程式。如需範例程式碼,請參閱 從您的應用程式調用代理程式

注意

AWS CLI 不支援 InvokeAgent

請求中包含以下欄位:

  • 至少需提供下列必要欄位:

    欄位 簡短描述
    agentId 代理程式的 ID
    agentAliasId 別名的 ID。使用 TSTALIASID 調用 DRAFT 版本
    sessionId 工作階段的英數 ID (2–100 個字元)
    inputText 傳送給代理程式的使用者提示
  • 以下是選填欄位:

    欄位 簡短描述
    enableTrace 指定 TRUE 以檢視追蹤
    endSession 指定 TRUE 以在收到此請求後結束代理程式的工作階段。
    sessionState 包括影響代理程式行為或連接到代理程式之知識庫行為的內容。如需詳細資訊,請參閱 控制代理程式工作階段內容
    streamingConfigurations 包括串流回應的組態。若要啟用串流,請將 streamFinalResponse 設定為 TRUE

回應會在事件串流中傳回。每個事件都包含 chunk,其中包含 bytes 欄位中的一部分回應,必須解碼。也可能傳回下列物件:

  • 如果代理程式查詢知識庫,chunk 也會包含 citations

  • 如果啟用串流且已為代理程式設定防護機制,則會在為防護機制間隔指定的字元間隔中產生回應。根據預設,間隔設定為 50 個字元。

  • 如果您啟用追蹤,也會傳回 trace 物件。如果發生錯誤,則會傳回包含錯誤訊息的欄位。如需如何解讀追蹤的詳細資訊,請參閱使用追蹤以追蹤代理程式的逐步推理程序

  • 如果您將動作群組設定為略過使用 Lambda 函數,則會在 returnControl 欄位中傳回 ReturnControlPayload 物件。ReturnControlPayload 物件的一般結構如下:

    { "invocationId": "string", "invocationInputs": [ ApiInvocationInput or FunctionInvocationInput, ... ] }

    invocationInputs 清單的每個成員都是下列其中一項:

    • ApiInvocationInput 物件,其中包含代理程式根據使用者輸入預測應該呼叫的 API 操作,以及從使用者處取得的參數和其他資訊,以滿足 API 的要求。ApiInvocationInput 物件的結構如下所示:

      { "actionGroup": "string", "apiPath": "string", "httpMethod": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" }, ... ], "requestBody": { <content-type>: { "properties": [ { "name": "string", "type": "string", "value": "string" } ] } } }
    • FunctionInvocationInput 物件,包含代理程式根據使用者輸入預測應該呼叫的函數,以及從使用者獲得的該函數的參數。FunctionInvocationInput 的結構如下:

      { "actionGroup": "string", "function": "string", "parameters": [ { "name": "string", "type": "string", "value": "string" } ] }