Skip to content

AmazonBedrockAgent

The AmazonBedrockAgent is a specialized agent class in the Agent Squad that integrates directly with Amazon Bedrock agents.

Here are various examples showing different ways to create and configure an AmazonBedrockAgent:

If you haven’t already installed the AWS-related dependencies, make sure to install them:

Terminal window
pip install "agent-squad[aws]"

1. Minimal Configuration

const agent = new AmazonBedrockAgent({
name: 'My Bank Agent',
description: 'A helpful and friendly agent that answers questions about loan-related inquiries',
agentId: 'your-agent-id',
agentAliasId: 'your-agent-alias-id'
});

2. Using Custom Client

import { BedrockAgentRuntimeClient } from "@aws-sdk/client-bedrock-agent-runtime";
const customClient = new BedrockAgentRuntimeClient({ region: 'us-east-1' });
const agent = new AmazonBedrockAgent({
name: 'My Bank Agent',
description: 'A helpful and friendly agent for banking inquiries',
agentId: 'your-agent-id',
agentAliasId: 'your-agent-alias-id',
client: customClient
});

3. With Tracing Enabled

const agent = new AmazonBedrockAgent({
name: 'My Bank Agent',
description: 'A banking agent with tracing enabled',
agentId: 'your-agent-id',
agentAliasId: 'your-agent-alias-id',
enableTrace: true
});

4. With Streaming Enabled

const agent = new AmazonBedrockAgent({
name: 'My Bank Agent',
description: 'A streaming-enabled banking agent',
agentId: 'your-agent-id',
agentAliasId: 'your-agent-alias-id',
streaming: true
});

5. Complete Example with All Options

import { AmazonBedrockAgent } from "agent-squad";
import { BedrockAgentRuntimeClient } from "@aws-sdk/client-bedrock-agent-runtime";
const agent = new AmazonBedrockAgent({
// Required fields
name: "Advanced Bank Agent",
description: "A fully configured banking agent with all features enabled",
agentId: "your-agent-id",
agentAliasId: "your-agent-alias-id",
// Optional fields
region: "us-west-2",
streaming: true,
enableTrace: true,
client: new BedrockAgentRuntimeClient({ region: "us-west-2" }),
});
  • name: (Required) Identifies the agent within your system.
  • description: (Required) Describes the agent’s purpose or capabilities.
  • agentId/agent_id: (Required) The ID of the Amazon Bedrock agent you want to use.
  • agentAliasId/agent_alias_id: (Required) The alias ID of the Amazon Bedrock agent.
  • region: (Optional) AWS region for the Bedrock service. If not provided, uses the default AWS region.
  • client: (Optional) Custom BedrockAgentRuntimeClient for specialized configurations.
  • enableTrace/enable_trace: (Optional) When set to true, enables tracing of the agent’s steps and reasoning process.
  • streaming: (Optional) Enables streaming for the final response. Defaults to false.

To integrate the AmazonBedrockAgent into your Agent Squad, follow these steps:

  1. First, ensure you have created an instance of the orchestrator:
import { AgentSquad } from "agent-squad";
const orchestrator = new AgentSquad();
  1. Then, add the agent to the orchestrator:
orchestrator.addAgent(agent);
  1. Now you can use the orchestrator to route requests to the appropriate agent, including your Amazon Bedrock agent:
const response = await orchestrator.routeRequest(
"What is the base rate interest for 30 years?",
"user123",
"session456"
);

When your Bedrock agent is backed by a Knowledge Base, the Amazon Bedrock API returns source citations alongside the response text. AmazonBedrockAgent captures these citations and makes them available on the ConversationMessage returned by route_request.

The citations field is undefined / None when the agent has no Knowledge Base or when the response contains no attribution data, so existing code that does not use citations is completely unaffected.

const response = await orchestrator.routeRequest(
"What is the base rate interest for 30 years?",
"user123",
"session456"
);
// The message is on response.output for a non-streaming response
const message = response.output as ConversationMessage;
if (message.citations && message.citations.length > 0) {
for (const citation of message.citations) {
const text = citation.generatedResponsePart?.textResponsePart?.text;
for (const ref of citation.retrievedReferences ?? []) {
const uri = ref.location?.s3Location?.uri ?? ref.location?.webLocation?.url;
console.log(`"${text}" — source: ${uri}`);
}
}
}

Each entry in citations mirrors the Citation object returned by the Amazon Bedrock InvokeAgent API:

| Field | Type | Description | |---|---|---| | generatedResponsePart.textResponsePart.text | string | The portion of the agent’s answer this citation covers | | generatedResponsePart.textResponsePart.span | object | { start, end } character offsets within the full response text | | retrievedReferences | array | One entry per Knowledge Base source chunk used for this part of the answer | | retrievedReferences[].content.text | string | The raw text retrieved from the Knowledge Base | | retrievedReferences[].location | object | Where the source lives — s3Location.uri, webLocation.url, etc. | | retrievedReferences[].metadata | object | Any custom metadata attached to the source document |


By leveraging the AmazonBedrockAgent, you can easily integrate pre-built Amazon Bedrock agents into your Agent Squad.