

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

# 在运行时配置内联代理
<a name="agents-create-inline"></a>

您可以使用 [InvokeInlineAgent](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent-runtime_InvokeInlineAgent.html)API 在运行时动态配置和调用内联 Amazon Bedrock 代理。使用内联代理可以让您在调用代理的同时灵活地指定代理的功能，例如基础模型、指令、操作组、护栏和知识库。您无需预定义代理功能即可开始使用。

下面是一些使用内联代理的使用案例，让您可以在调用时配置代理，实现了更好的灵活性。
+ 使用不同配置尝试各种代理功能来快速开展实验，并在不创建独立代理的情况下动态更新可供代理使用的工具。
+ 动态调用代理来执行特定任务，而无需创建新的代理版本或准备代理。
+ 通过在运行时创建并调用代理，可以运行简单查询或使用代码解释器完成简单任务。
+ 在[多代理协作](agents-multi-agent-collaboration.md)设置中创建多个代理，以便在一个任务或对话中协同工作。

  要使用多代理协作，您可以使用内联代理按以下组合创建代理 APIs。  
**代理类型**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/agents-create-inline.html)

**支持的模型和区域**

您可以使用 Amazon Bedrock 代理支持的任何基础模型来配置内联代理，并且可以在 Amazon Bedrock 代理支持的任何区域中调用您的内联代理。有关 Amazon Bedrock 代理所支持模型和区域的更多信息，请参阅以下内容：
+ [支持 Amazon Bedrock 代理的区域](https://docs.aws.amazon.com//bedrock/latest/userguide/agents-supported.html)
+ [按功能划分的型号支持](https://docs.aws.amazon.com//bedrock/latest/userguide/models-features.html)

使用内联代理，您可以在模型之间切换。我们建议您在属于同一系列的模型之间切换。在不同模型系列之间切换可能会导致行为不一致，并可能引发故障。

Amazon Bedrock 控制台中目前不支持配置和调用内联代理。

## 为内联代理使用高级提示模板的指南
<a name="advanced-prompts-inline-guidelines"></a>
+ **基本提示模板** – 默认情况下，Amazon Bedrock 将使用内联代理的默认基本提示模板，并且可以随时在后台更改提示。这可能会使响应不一致。如果您希望查询得到一致的响应，请使用自己的配置覆盖默认基本提示模板中的逻辑，从而自定义内联代理的行为。有关更多信息，请参阅[高级提示模板](https://docs.aws.amazon.com//bedrock/latest/userguide/advanced-prompts-templates.html)。
+ **加密** – 使用 `customer managed key ` 加密静态/存储的会话详细信息。如果使用客户自主管理型密钥启动会话，则在会话的所有未来请求中都将需要使用该密钥。对同一会话使用不同的客户自主管理型密钥将导致异常。
+ **会话共享** – 今后，所有会话均为账户级别，而不是角色级别。您可以通过为 `agentName` 指定唯一值，在代理级别隔离会话。
+ **内联会话状态** – `InlineSessionState` 内部的属性在整个会话中持续存在。使用这些属性为模型和[少样本提示](https://docs.aws.amazon.com//bedrock/latest/userguide/what-is-a-prompt.html#few-shot-prompting-vs-zero-shot-prompting)提供附加上下文。

# 先决条件
<a name="inline-agent-prereq"></a>

**注意**  
Amazon Bedrock 的配置和调用内联代理功能目前为预览版，可能会有改变。

在调用内联代理之前，请先满足以下先决条件：

1. 确定要用于配置内联代理的基础模型、要从中调用代理的区域，以及告知内联代理应该做什么的指令。

1. 创建或准备以下一个或多个要用于内联代理的 Amazon Bedrock 代理属性。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/inline-agent-prereq.html)

1. 创建AWS身份和访问管理 (IAM) Access Management 角色并将本步骤中提到的策略附加到该角色。

   在调用内联代理之前，必须创建一个 IAM 角色来提供必要的权限，以使用 `InvokeInlineAgent` API 和访问 Lambda 函数、知识库和基础模型等资源。

   按照[创建向 IAM 用户委派权限的角色](https://docs.aws.amazon.com//bedrock/latest/userguide/getting-started.html)中的步骤进行操作，为内联代理创建自定义服务角色。创建 IAM 角色后，将以下策略附加到该角色。
**注意**  
出于安全考虑，最佳做法是在创建您的账户 ID 和*\$1.ids*特定资源 ID 后，将、和替换为 Region。*\$1\$1region\$1* *\$1\$1account-id\$1*

# 调用内联代理
<a name="inline-agent-invoke"></a>

**注意**  
Amazon Bedrock 的配置和调用内联代理功能目前为预览版，可能会有改变。

在调用内联代理之前，请确保您已满足[先决条件](https://docs.aws.amazon.com//bedrock/latest/userguide/inline-agent-prereq.html)。

要调用内联代理，请使用[适用于 Amazon Bedrock 的代理运行时终端节点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)发送 [InvokeInlineAgent](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent-runtime_InvokeInlineAgent.html)API 请求，并至少包含以下字段。


****  

| 字段 | 使用案例 | 
| --- | --- | 
| instruction | 提供指令，告知内联代理应该做什么以及如何与用户交互。 | 
| foundationModel | 指定[基础模型](https://docs.aws.amazon.com//bedrock/latest/userguide/foundation-models-reference.html)，以供您创建的内联代理进行编排。例如，anthropic claude、meta Llama3.1 等。 | 
| sessionId | 会话的唯一标识符。在不同请求中使用相同的值，以继续相同的对话。 | 

以下字段是可选字段：


****  

| 字段 | 使用案例 | 
| --- | --- | 
| actionGroups | 操作组列表，每个操作组定义了内联代理可以执行的操作。 | 
| knowledgeBases | 知识库与内联代理关联，以增强模型生成的响应。 | 
| guardrailConfiguration | 护栏配置，用于屏蔽话题、防止出现幻觉并为您的应用程序实施保护措施。 | 
| agentCollaboration | 定义协作者代理如何处理多个协作者代理之间的信息，以协调最终响应。协作者代理也可以是主管。 | 
| collaboratorConfigurations | 协作者代理的配置。 | 
| collaborators | 协作者代理名单。 | 
| promptOverrideConfiguration | 高级提示配置，用于覆盖默认提示。 | 
| enableTrace | 指定是否开启追踪，以追踪内联代理的推理过程。 | 
| IdleSes TTLIn sion 秒 | 指定内联代理应当结束会话并删除所有存储信息的持续时间。 | 
| customerEncryptionKeyArn | 指定用于加密代理资源的 KMS 密钥的 ARN | 
| endSession | 指定是否结束与内联代理的会话。 | 
| inlineSessionState | 用于指定会话的各种属性的参数。 | 
| inputText | 指定要发送给代理的提示。 | 
| reasoning\$1config | 启用模型推理，以便模型解释它是如何得出结论的。在 additionalModelRequestFields 字段内使用。您必须指定用于模型推理的 budget\$1tokens 数量，这些是输出词元的一个子集。有关更多信息，请参阅[使用模型推理增强模型响应](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-reasoning.html)。 | 

以下 `InvokeInlineAgent` API 示例提供了完整的内联代理配置，包括基础模型、指令、包含代码解释器的操作组、护栏和知识库。

```
response = bedrock_agent_runtime.invoke_inline_agent(
    // Initialization parameters: cannot be changed for a conversation
    sessionId='uniqueSessionId',
    customerEncryptionKeyArn: String,
    
    // Input
    inputText="Hello, can you help me with a task?",
    endSession=False,
    enableTrace=True,
    
    // Agent configurations
    foundationModel='anthropic.claude-3-7-sonnet-20250219-v1:0',
    instruction="You are a helpful assistant...",
    actionGroups=[
        {
            'name': 'CodeInterpreterAction',
            'parentActionGroupSignature': 'AMAZON.CodeInterpreter'
        },
        {
            'actionGroupName': 'FetchDetails',
            'parentActionGroupSignature': '',
            "actionGroupExecutor": { ... },
            "apiSchema": { ... },
            "description": "string",
            "functionSchema": { ... }
        }
    ],
    knowledgeBases=[
        {
            knowledgeBaseId: "string",
            description: 'Use this KB to get all the info',
            retrievalConfiguration: { 
                vectorSearchConfiguration: { 
                    filter: { ... },
                    numberOfResults: number,
                    overrideSearchType: "string"
               }
            }
        }
    ],
    guardrailConfiguration={
        guardrailIdentifier: 'BlockEverything',
        gurardrailVersion: '1.0'
    },
    promptOverrideConfiguration: {...}
    
    // session properties: persisted throughout conversation
    inlineSessionState = {
        sessionAttributes = { 'key': 'value' },
        promptSessionAttributes = {k:v},
        returnControlInvocationResults = {...},
        invocationId = 'abc',
        files = {...},
    }
  }
```

您可以在请求中包含模型推理参数。以下是在 `additionalModelRequestFields` 中开启模型推理的单个提示的示例。

```
{
    "basePromptTemplate": " ... ",
    "inferenceConfiguration": {
        "stopSequences": [
            "</answer>"
        ]
    },
    "parserMode": "DEFAULT",
    "promptCreationMode": "DEFAULT",
    "promptState": "DISABLED",
    "promptType": "ORCHESTRATION",
    "additionalModelRequestFields":
    "reasoning_config": {
        "type": "enabled",
        "budget_tokens": 1024
    }
}
```