

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

# 測試代理程式行為並進行疑難排解
<a name="agents-test"></a>

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

下列清單說明如何測試代理程式：
+ 在 Amazon Bedrock 主控台中，您可以開啟側邊的測試視窗，並傳送輸入給代理程式來回應。您可以選取工作草稿或您已建立的版本。
+ 在 API 中，工作草稿是 `DRAFT` 版本。您可以使用 [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) 搭配測試別名、`TSTALIASID` 或指向靜態版本的不同別名，將輸入傳送到您的代理程式。您必須先呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PrepareAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PrepareAgent.html) 來準備代理程式，之後才能測試代理程式。

## 追蹤代理程式行為
<a name="agent-behavior-trace"></a>

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

## 測試您的代理程式
<a name="test-your-agent"></a>

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

------
#### [ Console ]

**測試代理程式**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

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

1. 在**代理程式**區段中，從代理程式清單中選擇所要測試代理程式的連結。

1. **測試**視窗會出現在右側的窗格中。
**注意**  
如果**測試視窗**已關閉，您可以選取代理程式詳細資訊頁面或其中任何頁面頂端的**測試**來重新開啟它。

1. 建立代理程式之後，您必須以下列其中一種方式準備代理程式，將其與工作草稿變更一起封裝：
   + 在**測試**視窗中，選取**準備**。
   + 在**工作草稿**頁面中，選取頁面頂端的**準備**。
**注意**  
每次更新工作草稿時，您必須準備代理程式，以使用最新的變更來封裝代理程式。最佳實務是，建議您一律在**工作草稿**頁面的**代理程式概觀**區段中檢查代理程式的**上次準備**時間，以確認您使用最新的組態測試代理程式。

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

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

1. (選用) 若要從提示管理使用提示，請選取訊息方塊中的選項圖示 (![\[Vertical ellipsis icon representing a menu or more options.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/vertical-ellipsis.png))，然後選擇**匯入提示**。選取提示和版本。在**測試變數值**區段中輸入提示變數的值。如需提示管理中提示的詳細資訊，請參閱[在 Amazon Bedrock 中使用提示管理來建構和存放可重複使用的提示](prompt-management.md)。

1. 若要測試代理程式，請輸入訊息，然後選擇**執行**。當您等待回應產生或回應已產生後，您有下列選項：
   + 若要檢視代理程式協同運作程序每個步驟的詳細資訊，包括提示、推論組態，以及代理程式每個步驟的推理程序，以及其動作群組和知識庫的使用方式，請選取**顯示追蹤**。追蹤會即時更新，因此您可以在傳回回應之前檢視它。若要展開或收合某個步驟的追蹤，請選取步驟旁邊的箭號。如需**追蹤**視窗的詳細資訊和顯示的詳細資訊，請參閱 [使用追蹤以追蹤代理程式的逐步推理程序](trace-events.md)。
   + 如果代理程式調用知識庫，回應會包含註腳。若要檢視包含回應特定部分引用資訊之 S3 物件的連結，請選取相關註腳。
   + 如果您將代理程式設定為傳回控制權，而不是使用 Lambda 函數來處理動作群組，則回應會包含預測的動作及其參數。提供 API 或函數中該動作的範例輸出值，然後選擇**提交**以產生代理程式回應。如需範例，請參閱下圖：  
![\[測試視窗請求，以提供動作的範例輸出。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/agents/roc-testwindow.png)

   您可以在**測試**視窗中執行下列動作：
   + 若要開始與代理程式的新對話，請選取重新整理圖示。
   + 若要檢視**追蹤**視窗，請選取展開圖示。若要關閉**追蹤**視窗，請選取縮小圖示。
   + 若要關閉**測試**視窗，請選取向右箭頭圖示。

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

**啟用動作群組或知識庫**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

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

1. 在**代理程式**區段中，從代理程式清單中選擇所要測試代理程式的連結。

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

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

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

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

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

------
#### [ API ]

對於 2025 年 3 月 31 日`after`建立的代理程式：
+ 如果您已在主控台中建立代理程式，預設會啟用串流。您可以隨時停用串流。
+ 確保代理程式執行角色包含已設定代理程式模型的 `bedrock:InvokeModelWithResponseStream` 許可。

第一次測試代理程式之前，您必須使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PrepareAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_PrepareAgent.html) 請求，將其與工作草稿變更一起封裝。在請求中包含 `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 代理人](bedrock-agent_example_bedrock-agent_Hello_section.md)。

**注意**  
每次更新工作草稿時，您必須準備代理程式，以使用最新的變更來封裝代理程式。最佳實務是，我們建議您使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetAgent.html) 請求 (請參閱連結以了解請求和回應格式及欄位詳細資訊)，並檢查代理程式的 `preparedAt` 時間，以驗證您是否正在使用最新組態測試代理程式。

若要測試您的代理程式，請將 [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-invoke-agent.md)。

**注意**  
AWS CLI 不支援 [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)。

請求中包含以下欄位：
+ 至少需提供下列必要欄位：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/agents-test.html)
+ 以下是選填欄位：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/agents-test.html)

回應會在事件串流中傳回。每個事件都包含 `chunk`，其中包含 `bytes` 欄位中的一部分回應，必須解碼。也可能傳回下列物件：
+ 如果代理程式查詢知識庫，`chunk` 也會包含 `citations`。
+ 如果啟用串流且已為代理程式設定防護機制，則會在為防護機制間隔指定的字元間隔中產生回應。根據預設，間隔設定為 50 個字元。
+ 如果您啟用追蹤，也會傳回 `trace` 物件。如果發生錯誤，則會傳回包含錯誤訊息的欄位。如需如何解讀追蹤的詳細資訊，請參閱[使用追蹤以追蹤代理程式的逐步推理程序](trace-events.md)。
+ 如果您將動作群組設定為略過使用 Lambda 函數，則會在 `returnControl` 欄位中傳回 [ReturnControlPayload](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ReturnControlPayload.html) 物件。[ReturnControlPayload](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ReturnControlPayload.html) 物件的一般結構如下：

  ```
  {
      "invocationId": "string",
      "invocationInputs": [
          [ApiInvocationInput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ApiInvocationInput.html) or [FunctionInvocationInput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_FunctionInvocationInput.html),
          ...
      ]
  }
  ```

  `invocationInputs` 清單的每個成員都是下列其中一項：
  + [ApiInvocationInput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ApiInvocationInput.html) 物件，其中包含代理程式根據使用者輸入預測應該呼叫的 API 操作，以及從使用者處取得的參數和其他資訊，以滿足 API 的要求。[ApiInvocationInput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ApiInvocationInput.html) 物件的結構如下所示：

    ```
    {
        "actionGroup": "string",
        "apiPath": "string",
        "httpMethod": "string",
        "parameters": [
            {
                "name": "string",
                "type": "string",
                "value": "string"
            },
            ...
        ],
        "requestBody": {
            <content-type>: {
                "properties": [
                    {
                        "name": "string",
                        "type": "string",
                        "value": "string"
                    }
                ]
            }
        }
    }
    ```
  + [FunctionInvocationInput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_FunctionInvocationInput.html) 物件，包含代理程式根據使用者輸入預測應該呼叫的函數，以及從使用者獲得的該函數的參數。[FunctionInvocationInput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_FunctionInvocationInput.html) 的結構如下：

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

------