I Built My First AI Agent with the Strands Agents SDK — Here’s What Surprised Me

Originally published on Medium ↗

“The best way to learn a new AI framework is to build with it.”

Photo by Ryan Ancill on Unsplash

Most AI frameworks teach you how to chain prompts — few teach you how to build intelligence that lasts. That was the gap I kept running into.

Three months ago, I sat staring at my screen, surrounded by browser tabs — each promising the definitive guide to building AI agents. One tutorial showed me how to call an LLM. Another jumped straight into multi-agent orchestration without explaining the basics. I felt like someone had handed me puzzle pieces from five different boxes and said, “Figure it out.”

Then I discovered the Strands Agent SDK , and everything changed. Instead of scattered code snippets, I found a structured path — ten progressive lessons that built from the fundamentals to real production patterns. More importantly, I understood why each concept mattered and how they connected.

If you’ve ever felt overwhelmed trying to learn agent development, this post is your roadmap. I’ll walk you through the first half of the Strands Agents learning journey — the five foundational lessons that take you from “Hello World” to async, stateful, and MCP-integrated agents.

💡 Why Traditional Agent Learning Fails Developers

Most tutorials fall into two extremes: either too shallow (“paste this API key and call it a day”) or too advanced (“here’s how to coordinate five autonomous agents”). Few explain the middle ground — how to design agents that think, remember, and act.

That’s the gap the Strands Agents SDK fills. It organizes learning into a progressive path where each stage builds on the previous one — like climbing scaffolding instead of jumping between rooftops. You’re not just running examples; you’re mastering patterns.

⚡ Why This Moment Matters

We’re at an inflection point in AI development. For years, apps wrapped LLMs with prompts and APIs — but real intelligence needs agents that can reason, remember, and act.
The Strands Agents SDK clicked for me because it treats agents as systems, not scripts. Once you understand that shift, you stop thinking about AI features and start designing AI teammates.

🧵 What Is the Strands Agent SDK?

Strands Agents is an open-source Python SDK for building autonomous, stateful, and composable AI agents. It focuses on simplicity, concurrency, and production readiness , giving developers fine-grained control over how agents reason, remember, and interact.

The SDK is also model-agnostic , meaning it works seamlessly with any major LLM provider — OpenAI, Anthropic, Gemini, Bedrock, or even local models — giving developers full freedom of choice.

Unlike prompt-chaining libraries like LangChain, Strands Agents treats each agent as a long-running process — not just a function call. Agents maintain memory, manage context, and can communicate asynchronously, much like microservices for LLMs.

Key features include:

  • 🧠 Stateful design — Agents persist context across conversations.
  • Async first — Built-in concurrency for responsiveness.
  • 🧩 Composable architecture — Agents connect via tools or MCP (Model Context Protocol).
  • 🌐 Model-agnostic design — Works with any LLM provider through a unified interface.
  • 🛠️ Production focus — Logging, error handling, and persistence built in.

In short, Strands Agents turns toy chatbots into maintainable systems — ideal for anyone serious about production AI workflows.

🚀 The Five-Stage Learning Path

The Strands Agents learning journey is divided into five stages, but this post covers the first half — Lessons 1–5 , where the real foundations form.

Each lesson feels like upgrading your agent’s IQ. You start with a chatbot, give it tools, then memory, then async — until it behaves like a small distributed system. Every level adds another layer of intelligence.

🧠 Three Core Insights That Changed How I Think About Agents

Even after just five lessons, three ideas completely reshaped my mental model of agents:

1. Tools Make Agents Act

In Lesson 2, you add your first tool — a calculator. By Lesson 3, you’ve built an agent that can decide between multiple tools (like weather, time, or conversion) and even chain them together. That was my first aha! moment — realizing that tools don’t just extend an agent’s ability; they give it agency. The agent becomes capable of performing actions toward goals.

2. State Makes Agents Think

Lesson 4 introduces agent.state and the FileSessionManager, showing how agents maintain context across conversations. Without state, agents are amnesiac — they forget everything between messages. With state, they learn, adapt, and personalize interactions. It’s the difference between a reactive chatbot and a proactive assistant.

3. Async Makes Agents Scale

Lesson 5 is where everything clicks. You learn to run tasks concurrently, stream responses, and integrate with MCP to talk to external systems. Here’s a simplified concept from that lesson:

from strands import Agent, Message  
  
class PDFAgent(Agent):  
    async def handle(self, msg: Message):  
        if "summarize" in msg.content:  
            return "Summarizing PDF using async executor 📄"  
  
class ImageAgent(Agent):  
    async def handle(self, msg: Message):  
        if "analyze" in msg.content:  
            return "Analyzing image asynchronously 🖼️"  
  
async def main():  
    pdf = PDFAgent("pdf")  
    img = ImageAgent("img")  
  
    print(await pdf.send("summarize document"))  
    print(await img.send("analyze photo"))

That’s when I stopped seeing agents as code and started seeing them as living systems — processes that think and act in parallel.

⚙️ From Playground to Production

By Lesson 5, you’ve already encountered concepts that mirror real-world systems — structured state, retries, concurrency, and integration hooks. These aren’t just theoretical exercises. The same async and state management patterns now power automation workflows I’ve built in cinema control servers and cloud APIs.

One of my favorite experiments was extending Lesson 5 into a practical use case: a debug assistant that analyzes screenshots of error dialogs, extracts text, finds similar issues, and suggests fixes — all using async and multi-modal patterns from Strands.

When you realize that’s possible with under 100 lines of code, you start seeing just how close Strands Agents brings you to production-grade agent design.

✨ Your Turn

You don’t need a research lab or a massive cluster to start. You just need curiosity — and a framework that grows with you. Each lesson builds confidence through progress. That’s how you go from running examples to engineering intelligence — one success at a time.

🧭 What’s Next

Part 2 of this journey — Hooks to Production — will explore:

  • Hooks & Output Models
  • Multi-Agent Orchestration
  • Distributed Execution
  • Safety & Observability

These next stages turn individual agents into collaborative teams that can coordinate and reason collectively. If Lessons 1–5 teach you how to build an agent, Lessons 6–10 teach you how to run a company of them.

👉 Follow the repo to stay updated: github.com/jztan/strands-agents-learning

💬 Final Thoughts

Learning Strands Agents didn’t just help me build smarter agents — it rewired how I think about software itself. Once you understand agents as living systems, you start seeing how your own applications could think, remember, and evolve.

Documentation teaches you the API; projects teach you the architecture.

At halfway through, the Strands Agents SDK already transforms abstract AI concepts into runnable, maintainable systems. The rest of this series will take those foundations into orchestration, safety, and production.

⭐ Star the repo, try Lesson 1, and share what you build — I read and respond to every comment.
Your journey from zero to agent hero starts today.

👉 Follow the repo to stay updated: github.com/jztan/strands-agents-learning

📚 More posts: https://www.thefirstcommit.com/

#AIAgents #Python #StrandsAgents #LLMAgents #MachineLearning #OpenSource