

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 手动创建和配置代理
<a name="agents-create"></a>

要使用 Amazon Bedrock 创建代理，您需要设置以下组件：
+ 代理的配置，用于定义代理的用途，并指明代理用来生成提示和响应的基础模型（FM）。
+ 至少以下配置之一：
  + 操作组，定义代理要执行的操作。
  + 数据来源知识库，通过支持搜索和查询来增强代理的生成式功能。

您可以创建只有名称的最低配置的代理。要**准备**代理以便进行[测试](agents-test.md)或[部署](agents-deploy.md)，您必须至少配置以下组件：


****  

| 配置 | 描述 | 
| --- | --- | 
| 代理资源角色 | [有权有在代理上调用 API 操作的服务角色](agents-permissions.md)的 ARN | 
| 基础模型（FM） | 供代理调用以执行编排的 FM | 
| 说明 | 描述代理应该做什么以及应该如何与用户交互的自然语言 | 

您还应为代理配置至少一个操作组或知识库。如果您准备的代理没有操作组或知识库，它将仅根据 FM、指令和[基本提示模板](advanced-prompts.md)返回响应。

要了解如何创建代理，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

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

**创建代理**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

1. 从左侧导航窗格中选择**代理**。

1. 在**代理**部分，选择**创建代理**。

1. （可选）更改自动生成的代理**名称**，并为其提供可选的**描述**。

1. 选择**创建**。代理已经创建，您将进入新创建的代理的**代理生成器**，在其中配置代理。

1. 您可以继续执行以下步骤来配置代理，也可以稍后返回代理生成器。

**配置代理**

1. 如果您尚未进入代理生成器，请执行以下操作：

   1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

   1. 从左侧导航窗格中选择**代理**。然后，在**代理**部分选择一个代理。

   1. 选择**在代理生成器中编辑**。

1. 在**代理详细信息**部分，您可以设置以下配置：

   1. 编辑**代理名称**或**代理描述**。

   1. 对于**代理资源角色**，选择以下选项之一：
      + **创建和使用新服务角色** – 让 Amazon Bedrock 代表您创建服务角色并设置所需的权限。
      + **使用现有服务角色** – 使用您之前设置的[自定义角色](agents-permissions.md)。

   1. 对于**选择模型**，选择一个 FM 供代理在编排期间调用。

      默认情况下，系统会显示针对代理进行了优化的模型。要查看 Amazon Bedrock 代理支持的所有模型，请清除**已优化的 Bedrock 代理**。  
![\[您可以使用任意基础模型创建代理。目前，提供的模型中有一些已经过优化，其提示/解析器经过微调，可与代理架构集成。随着时间的推移，我们计划对所有提供的模型进行优化。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/agents/agents-optimized-model-selection.png)

   1. 在**对代理的指令**中，输入详细信息以告知代理应该做什么以及应该如何与用户交互。这些指令将取代[编排提示模板](prompt-placeholders.md#placeholders-orchestration)中的 \$1instructions\$1 占位符。下面是一个指令示例：

      ```
      You are an office assistant in an insurance agency. You are friendly and polite. You help with managing insurance claims and coordinating pending paperwork.
      ```

   1. 如果展开**其他设置**，您可以修改以下配置：
      + **代码解释器**：（可选）选择是否启用代理来处理涉及编写、运行、测试代码和排查代码故障排除的任务。有关详细信息，请参阅 [使用代码解释生成、运行和测试代码](agents-code-interpretation.md)。
      + **用户输入**：（可选）选择是否允许代理在信息不足时向用户请求更多信息。有关更多信息，请参阅 [将代理配置为向用户请求信息](agents-user-input.md)。
      + **KMS 密钥选择**：（可选）默认情况下，AWS 使用 AWS 托管式密钥对代理资源进行加密。要使用自己的客户自主管理型密钥加密代理，请在 KMS 密钥选择部分选择**自定义加密设置（高级）**。要创建新密钥，请选择**创建 AWS KMS 密钥**，然后刷新此窗口。要使用现有密钥，请在**选择 AWS KMS 密钥**中选择一个密钥。
      + **空闲会话超时**：默认情况下，如果用户在与 Amazon Bedrock 代理的会话中 30 分钟未回应，代理将不再维护对话历史记录。对话历史记录既可用于恢复交互，也可用于根据对话的上下文来增强回应。要更改默认时间长度，请在**会话超时**字段中输入一个数字，然后选择一个时间单位。

   1. 在 **IAM 权限**部分，对于**代理资源角色**，选择一个[服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)。要让 Amazon Bedrock 代表您创建服务角色，请选择**创建和使用新服务角色**。要使用您之前创建的[自定义角色](agents-permissions.md)，请选择**使用现有服务角色**。
**注意**  
Amazon Bedrock 为您创建的服务角色不具备使用预览版功能的权限。要使用这些功能，请[为服务角色附加正确的权限](agents-permissions.md)。

   1. （可选）默认情况下，AWS 使用 AWS 托管式密钥对代理资源进行加密。要使用自己的客户自主管理型密钥加密代理，请在 **KMS 密钥选择**部分选择**自定义加密设置（高级）**。要创建新密钥，请选择**创建 AWS KMS 密钥**，然后刷新此窗口。要使用现有密钥，请在**选择 AWS KMS 密钥**中选择一个密钥。

   1. （可选）要将标签与此代理关联，请在**标签 - 可选**部分选择**添加新标签**，并提供键值对。

   1. 完成代理配置设置后，选择**下一步**。

1. 在**操作组**部分，您可以选择**添加**为代理添加操作组。有关设置操作组的更多信息，请参阅 [使用操作组定义代理要执行的操作](agents-action-create.md)。要了解如何将操作组添加到代理，请参阅 [在 Amazon Bedrock 中向代理添加操作组](agents-action-add.md)。

1. 在**知识库**部分，您可以选择**添加**，将知识组与代理关联。有关设置知识库的更多信息，请参阅 [利用 Amazon Bedrock 知识库检索数据并生成人工智能响应](knowledge-base.md)。要了解如何将知识库与代理关联，请参阅 [利用知识库来增强代理的响应生成能力](agents-kb-add.md)。

1. 在**护栏详细信息**部分，您可以选择**编辑**将护栏与代理关联，以阻止和筛选有害内容。从**选择护栏**下的下拉菜单中选择要使用的护栏，然后在**护栏版本**下选择要使用的版本。您可以选择**查看**来查看护栏设置。有关更多信息，请参阅 [使用 Amazon Bedrock 护栏检测和筛选掉有害内容](guardrails.md)。

1. 在**编排策略**部分中，您可以选择**编辑**来自定义代理的编排。有关代理可使用的编排策略的更多信息，请参阅[自定义代理编排策略](orch-strategy.md)。

1. 在**多代理协作**部分中，您可以选择**编辑**来创建多代理协作团队。有关多代理协作的更多信息，请参阅[结合使用多代理协作与 Amazon Bedrock 代理](agents-multi-agent-collaboration.md)。

1. 完成代理配置后，选择以下选项之一：
   + 要留在**代理生成器**中，请选择**保存**。然后，您可以**准备**代理，以便在测试窗口中使用更新后的配置对其进行测试。要了解如何测试代理，请参阅 [测试代理行为并进行问题排查](agents-test.md)。
   + 要返回**代理详细信息**页面，请选择**保存并退出**。

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

要创建代理，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateAgent.html) 请求（有关请求和响应格式以及字段详细信息，请参阅链接）。

[参阅代码示例](bedrock-agent_example_bedrock-agent_CreateAgent_section.md)

要准备好代理以便对其进行[测试](agents-test.md)或[部署](agents-deploy.md)，您必须至少包含以下字段（如果您愿意，可以跳过这些配置，稍后通过发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgent.html) 请求进行配置）：


****  

| 字段 | 应用场景 | 
| --- | --- | 
| agentResourceRoleArn | 指定有权有在代理上调用 API 操作的服务角色的 ARN | 
| foundationModel | 指定代理执行编排时使用的基础模型（FM） | 
| instruction | 提供指令告诉代理该做什么。在编排提示模板的 \$1instructions\$1 占位符中使用。 | 

以下字段是可选字段：


****  

| 字段 | 应用场景 | 
| --- | --- | 
| description | 描述代理的用途 | 
| idleSessionTTLInSeconds | 代理结束会话并删除所有存储信息的持续时间。 | 
| customerEncryptionKeyArn | 用于加密代理资源的 KMS 密钥的 ARN | 
| tags | 将[标签](tagging.md)与代理关联。 | 
| promptOverrideConfiguration | 自定义在编排的每个步骤向 FM 发送的[提示](advanced-prompts.md)。 | 
| guardrailConfiguration | 为代理添加[护栏](guardrails.md)。指定护栏的 ID 或 ARN 以及要使用的版本。 | 
| clientToken | 用于确保 API 请求仅完成一次。有关更多信息，请参阅[确保幂等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 
| cachingState | 启用对代理中输入内容的提示缓存。有关更多信息，请参阅 [用于加快模型推理速度的提示缓存](prompt-caching.md)。 | 
| reasoning\$1config | 启用模型推理，以便模型解释它是如何得出结论的。在 additionalModelRequestFields 字段内使用。您必须指定用于模型推理的 budget\$1tokens 数量，这些是输出词元的一个子集。有关更多信息，请参阅[使用模型推理增强模型响应](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-reasoning.html)。 | 

响应会返回一个 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_Agent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_Agent.html) 对象，其中包含新创建的代理的详细信息。如果代理创建失败，响应中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_Agent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_Agent.html) 对象会返回一个 `failureReasons` 列表和一个 `recommendedActions` 列表，供您进行故障排除。

```
    def create_agent(self, agent_name, foundation_model, role_arn, instruction):
        """
        Creates an agent that orchestrates interactions between foundation models,
        data sources, software applications, user conversations, and APIs to carry
        out tasks to help customers.

        :param agent_name: A name for the agent.
        :param foundation_model: The foundation model to be used for orchestration by the agent.
        :param role_arn: The ARN of the IAM role with permissions needed by the agent.
        :param instruction: Instructions that tell the agent what it should do and how it should
                            interact with users.
        :return: The response from Amazon Bedrock Agents if successful, otherwise raises an exception.
        """
        try:
            response = self.client.create_agent(
                agentName=agent_name,
                foundationModel=foundation_model,
                agentResourceRoleArn=role_arn,
                instruction=instruction,
            )
        except ClientError as e:
            logger.error(f"Error: Couldn't create agent. Here's why: {e}")
            raise
        else:
            return response["agent"]
```

有关更多信息，请参阅 [开始使用 Amazon Bedrock 代理](bedrock-agent_example_bedrock-agent_Hello_section.md)。

------