# aws-samples/sample-amazon-bedrock-for-beginners architecture

> Architecture diagram of the GitHub repository aws-samples/sample-amazon-bedrock-for-beginners, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aws-samples/sample-amazon-bedrock-for-beginners
- Repository: https://github.com/aws-samples/sample-amazon-bedrock-for-beginners

## Overview

This repository is a tutorial series of runnable Amazon Bedrock examples, culminating in an interactive university FAQ agent. In the capstone flow, a student asks a question in the terminal; the Strands agent uses a Bedrock model, retrieves FAQ material from a Knowledge Base, or looks up a course, then returns an answer. The README also documents uploading FAQ files to S3 and syncing them into the Knowledge Base. The graph preserves standalone Converse, multi-turn, tool-use, guarded RAG, and managed-KB examples. Agent wiring is based on the sampled capstone source; Knowledge Base provisioning and ingestion are documented rather than implemented here.

Main entry points: [`bedrock-examples/strands_agent.py`](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py) (University agent), [`bedrock-examples/tool_use.py`](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/tool_use.py) (Tool-use demo), [`bedrock-examples/guardrails.py`](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/guardrails.py) (Guarded KB demo), [`bedrock-examples/converse_api.py`](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/converse_api.py) (Converse demo)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_examples["Bedrock examples"]
  node_converse["Converse demo<br/>[converse_api.py]"]
  node_multi["Multi-turn demo<br/>[multi_turn.py]"]
  node_tool_demo["Tool-use demo<br/>[tool_use.py]"]
  node_kb_query["KB query demo"]
  node_guarded_query["Guarded KB demo<br/>[guardrails.py]"]
  node_managed_query["Managed KB demo"]
  node_bedrock_runtime{{"Bedrock runtime"}}
end

subgraph group_university["University agent"]
  node_university_agent["University agent<br/>[strands_agent.py]"]
  node_course_lookup["Course lookup<br/>[strands_agent.py]"]
  node_strands_retrieve["Retrieve tool<br/>[strands_agent.py]"]
  node_bedrock_model["Bedrock model<br/>[strands_agent.py]"]
end

subgraph group_knowledge["Knowledge Base"]
  node_bedrock_agent_runtime{{"Agent runtime"}}
  node_guardrail{{"Guardrail"}}
  node_faq_docs["University FAQs"]
  node_s3[("Amazon S3")]
  node_knowledge_base[("Knowledge Base")]
  node_managed_kb[("Managed Knowledge Base")]
end

node_student(("Student"))
node_terminal["Terminal"]

node_student -->|"asks"| node_terminal
node_terminal -->|"submits prompt"| node_university_agent
node_university_agent -->|"prints answer"| node_terminal
node_university_agent -->|"invokes"| node_bedrock_model
node_bedrock_model -->|"requests inference"| node_bedrock_runtime
node_bedrock_model -->|"applies safety"| node_guardrail
node_university_agent -->|"dispatches retrieval"| node_strands_retrieve
node_strands_retrieve -->|"retrieves FAQ"| node_knowledge_base
node_university_agent -->|"dispatches lookup"| node_course_lookup
node_faq_docs -->|"uploaded to"| node_s3
node_s3 -->|"synced into"| node_knowledge_base
node_converse -->|"calls Converse"| node_bedrock_runtime
node_multi -->|"calls Converse"| node_bedrock_runtime
node_tool_demo -->|"calls Converse"| node_bedrock_runtime
node_tool_demo -->|"sends tool result"| node_bedrock_runtime
node_kb_query -->|"calls retrieval"| node_bedrock_agent_runtime
node_bedrock_agent_runtime -->|"queries"| node_knowledge_base
node_guarded_query -->|"calls retrieval"| node_bedrock_agent_runtime
node_guarded_query -->|"configures safety"| node_guardrail
node_managed_query -->|"calls retrieval"| node_bedrock_agent_runtime
node_bedrock_agent_runtime -->|"queries"| node_managed_kb

click node_converse "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/converse_api.py"
click node_multi "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/multi_turn.py"
click node_tool_demo "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/tool_use.py"
click node_kb_query "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/knowledge_base_query.py"
click node_guarded_query "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/guardrails.py"
click node_managed_query "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/managed_knowledge_base_query.py"
click node_university_agent "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py"
click node_course_lookup "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py"
click node_strands_retrieve "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py"
click node_bedrock_model "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py"
click node_faq_docs "https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/tree/main/knowledge_base_docs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_converse,node_multi,node_tool_demo,node_kb_query,node_guarded_query,node_managed_query,node_bedrock_runtime toneBlue
class node_university_agent,node_course_lookup,node_strands_retrieve,node_bedrock_model toneAmber
class node_bedrock_agent_runtime,node_guardrail,node_faq_docs,node_s3,node_knowledge_base,node_managed_kb toneMint
class node_student,node_terminal toneIndigo
```

## Components

### Bedrock examples

- [Converse demo](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/converse_api.py): `bedrock-examples/converse_api.py`
- [Multi-turn demo](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/multi_turn.py): `bedrock-examples/multi_turn.py`
- [Tool-use demo](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/tool_use.py): `bedrock-examples/tool_use.py`
- [KB query demo](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/knowledge_base_query.py): `bedrock-examples/knowledge_base_query.py`
- [Guarded KB demo](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/guardrails.py): `bedrock-examples/guardrails.py`
- [Managed KB demo](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/managed_knowledge_base_query.py): `bedrock-examples/managed_knowledge_base_query.py`
- **Bedrock runtime**

### University agent

- [University agent](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py): `bedrock-examples/strands_agent.py`
- [Course lookup](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py): `bedrock-examples/strands_agent.py`
- [Retrieve tool](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py): `bedrock-examples/strands_agent.py`
- [Bedrock model](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/blob/main/bedrock-examples/strands_agent.py): `bedrock-examples/strands_agent.py`

### Knowledge Base

- **Agent runtime**
- **Guardrail**
- [University FAQs](https://github.com/aws-samples/sample-amazon-bedrock-for-beginners/tree/main/knowledge_base_docs): `knowledge_base_docs`
- **Amazon S3**
- **Knowledge Base**
- **Managed Knowledge Base**

### Other components

- **Student**
- **Terminal**

## Connections

- Student → Terminal: asks
- Terminal → University agent: submits prompt
- University agent → Terminal: prints answer
- University agent → Bedrock model: invokes
- Bedrock model → Bedrock runtime: requests inference
- Bedrock model → Guardrail: applies safety
- University agent → Retrieve tool: dispatches retrieval
- Retrieve tool → Knowledge Base: retrieves FAQ
- University agent → Course lookup: dispatches lookup
- University FAQs → Amazon S3: uploaded to
- Amazon S3 → Knowledge Base: synced into
- Converse demo → Bedrock runtime: calls Converse
- Multi-turn demo → Bedrock runtime: calls Converse
- Tool-use demo → Bedrock runtime: calls Converse
- Tool-use demo → Bedrock runtime: sends tool result
- KB query demo → Agent runtime: calls retrieval
- Agent runtime → Knowledge Base: queries
- Guarded KB demo → Agent runtime: calls retrieval
- Guarded KB demo → Guardrail: configures safety
- Managed KB demo → Agent runtime: calls retrieval
- Agent runtime → Managed Knowledge Base: queries
