<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adeline Makokha [AWS Hero]</title>
    <description>The latest articles on DEV Community by Adeline Makokha [AWS Hero] (@adelinemakokha).</description>
    <link>https://dev.to/adelinemakokha</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F732265%2F06caaea8-9c11-443d-b9a5-09de866cebb4.png</url>
      <title>DEV Community: Adeline Makokha [AWS Hero]</title>
      <link>https://dev.to/adelinemakokha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adelinemakokha"/>
    <language>en</language>
    <item>
      <title>Build a Memory-Powered Multi-Agent Financial Advisor with Strands SDK &amp; Amazon Bedrock</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Thu, 23 Apr 2026 14:36:12 +0000</pubDate>
      <link>https://dev.to/aws-builders/build-a-memory-powered-multi-agent-financial-advisor-with-strands-sdk-amazon-bedrock-e08</link>
      <guid>https://dev.to/aws-builders/build-a-memory-powered-multi-agent-financial-advisor-with-strands-sdk-amazon-bedrock-e08</guid>
      <description>&lt;p&gt;&lt;strong&gt;Why Agents — Not Just Chatbots&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A chatbot answers your question and forgets you. An &lt;strong&gt;AI agent&lt;/strong&gt; takes actions, uses tools, and loops until the job is actually done. The difference isn't the model, it's the architecture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw51u1zxzo1ytup8zuyre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw51u1zxzo1ytup8zuyre.png" alt=" " width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent loop has four steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Perceive&lt;/strong&gt;- read the user's request plus any injected context (memory, RAG results, past turns)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan&lt;/strong&gt;- reason about what to do next; choose which tool(s) to call&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act&lt;/strong&gt;- call the chosen tool(s), APIs, or sub-agents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reflect&lt;/strong&gt;- evaluate the results; decide whether the task is done or the loop should continue&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Unlike a simple LLM call, the agent decides autonomously when it has gathered enough information to answer and it keeps going until it has.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Project: A Multi-Agent Financial Advisor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To make this concrete, we'll build a &lt;strong&gt;memory-powered multi-agent financial advisor&lt;/strong&gt;. It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accepts natural-language questions ("Should I rebalance my portfolio?")&lt;/li&gt;
&lt;li&gt;Delegates to specialist sub-agents for portfolio data, market prices, and financial news&lt;/li&gt;
&lt;li&gt;Uses &lt;strong&gt;Amazon Bedrock Guardrails&lt;/strong&gt; to enforce compliance rules at every step&lt;/li&gt;
&lt;li&gt;Stores client preferences and past conversations using &lt;strong&gt;Amazon Bedrock AgentCore Memory&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deploys as a serverless endpoint with a single &lt;code&gt;agentcore deploy&lt;/code&gt; command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full stack:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agent framework&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/strands-agents/sdk-python" rel="noopener noreferrer"&gt;Strands Agents SDK&lt;/a&gt; (open-source)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foundation model&lt;/td&gt;
&lt;td&gt;Claude 3.5 Sonnet via Amazon Bedrock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safety layer&lt;/td&gt;
&lt;td&gt;Amazon Bedrock Guardrails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory layer&lt;/td&gt;
&lt;td&gt;Amazon Bedrock AgentCore Memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime&lt;/td&gt;
&lt;td&gt;Amazon Bedrock AgentCore Runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;AWS CloudWatch + OpenTelemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvha4c8lxnouayd1itbed.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvha4c8lxnouayd1itbed.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The orchestrator agent receives every user request and intelligently routes sub-tasks to the right specialist. Results are synthesized into a single, coherent response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meet the Strands Agents SDK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/strands-agents/sdk-python" rel="noopener noreferrer"&gt;Strands&lt;/a&gt; is an open-source Python framework from AWS Labs that makes building production agents dramatically simpler. You define tools, wrap them in an &lt;code&gt;Agent&lt;/code&gt;, and Strands handles the loop.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install strands-agents&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The core idea is minimal boilerplate. Three imports and a decorator are enough to expose any Python function to an agent as a callable tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Define Tools with &lt;code&gt;@tool&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6b1vxw3qw08fnhm93oth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6b1vxw3qw08fnhm93oth.png" alt=" " width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;@tool&lt;/code&gt; decorator does the heavy lifting automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses Python &lt;strong&gt;type hints&lt;/strong&gt; into a JSON schema the model can read&lt;/li&gt;
&lt;li&gt;Converts the &lt;strong&gt;docstring&lt;/strong&gt; into the tool's description (what the agent uses to decide when to call it)&lt;/li&gt;
&lt;li&gt;Handles invocation so the agent decides when, and with what arguments, to call the function
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# tools/financial_tools.py
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;strands&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;

&lt;span class="nd"&gt;@tool&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_portfolio_value&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;include_unrealized_gains&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Retrieve the current portfolio value and positions for a client.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fetch_portfolio_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;include_unrealized_gains&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@tool&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_market_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tickers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1d&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Retrieve current market prices and key metrics for a list of tickers.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fetch_market_prices&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tickers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@tool&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_financial_news&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Retrieve recent financial news articles relevant to a query.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fetch_news_feed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@tool&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_risk_analysis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;risk_tolerance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Perform a risk analysis on a client&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s portfolio.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;compute_risk_metrics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;risk_tolerance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@tool&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_investment_recommendations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;goal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;growth&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;time_horizon_years&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Generate personalised investment recommendations for a client.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;generate_recommendations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;goal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;time_horizon_years&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each function becomes a first-class tool — no YAML, no schema files, no extra config.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2- Build Specialist Sub-Agents
&lt;/h2&gt;

&lt;p&gt;Rather than one monolithic agent with 15 tools, we split responsibilities. Each specialist agent gets only the tools it needs, which keeps the system prompt focused and improves tool selection accuracy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# agents/specialists.py
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;strands&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;strands.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BedrockModel&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;tools.financial_tools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;get_portfolio_value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_risk_analysis&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;get_market_data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_financial_news&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;MODEL_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us.anthropic.claude-3-5-sonnet-20241022-v2:0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_make_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;BedrockModel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;kwargs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;MODEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;region_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us-east-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guardrail_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;guardrail_id&lt;/span&gt;
        &lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guardrail_version&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DRAFT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;BedrockModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_portfolio_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;_make_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a Portfolio Specialist. Analyse holdings, risk metrics, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;and P&amp;amp;L. Be precise and cite specific numbers.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_portfolio_value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_risk_analysis&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_market_data_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;_make_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a Market Data Specialist. Provide current prices, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;52-week ranges, and key indices. Stick to facts.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_market_data&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_news_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;_make_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a Financial News Analyst. Summarise recent news and &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;provide sentiment analysis. Be objective.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_financial_news&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 3- The Orchestrator &amp;amp; Agent-as-Tool Pattern
&lt;/h2&gt;

&lt;p&gt;The orchestrator doesn't call specialist agents directly, it treats them as &lt;strong&gt;tools&lt;/strong&gt;. This is the agent-as-tool pattern: each sub-agent is wrapped in a &lt;code&gt;@tool&lt;/code&gt; function, so the orchestrator's model reasons about &lt;em&gt;which&lt;/em&gt; specialist to consult, exactly like it would choose any other tool.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# agents/orchestrator.py
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;strands&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;strands.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BedrockModel&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;agents.specialists&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;create_portfolio_agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;create_market_data_agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;create_news_agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;tools.financial_tools&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_investment_recommendations&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_build_specialist_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;portfolio_agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_portfolio_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;market_agent&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_market_data_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;news_agent&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_news_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nd"&gt;@tool&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask_portfolio_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Delegate a portfolio analysis or risk question to the Portfolio Specialist Agent.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;portfolio_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="nd"&gt;@tool&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask_market_data_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Delegate a market data or pricing question to the Market Data Specialist Agent.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;market_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="nd"&gt;@tool&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask_news_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Delegate a news or sentiment analysis question to the News Analyst Agent.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;news_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;ask_portfolio_agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ask_market_data_agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ask_news_agent&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="n"&gt;ORCHESTRATOR_PROMPT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
You are a Senior Financial Advisor AI. Your role is to provide comprehensive,
personalised financial guidance. You have three specialist agents available:

- Portfolio Specialist: portfolio values, positions, risk metrics
- Market Data Specialist: prices, indices, volatility
- News Analyst: financial news and sentiment

Always delegate to the right specialist(s), then synthesise their findings
into a clear, actionable response for the client.
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_financial_advisor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;memory_context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us.anthropic.claude-3-5-sonnet-20241022-v2:0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;specialist_tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;_build_specialist_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;system_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ORCHESTRATOR_PROMPT&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;memory_context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;system_prompt&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;## Client Memory&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;memory_context&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="n"&gt;model_kwargs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;region_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us-east-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;model_kwargs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guardrail_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;guardrail_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guardrail_version&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DRAFT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;BedrockModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;model_kwargs&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;specialist_tools&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_investment_recommendations&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the user asks "Should I rebalance my portfolio given today's market?", the orchestrator:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Calls &lt;code&gt;ask_portfolio_agent&lt;/code&gt; → gets current holdings &amp;amp; risk score&lt;/li&gt;
&lt;li&gt;Calls &lt;code&gt;ask_market_data_agent&lt;/code&gt; → gets today's index moves&lt;/li&gt;
&lt;li&gt;Calls &lt;code&gt;ask_news_agent&lt;/code&gt; → gets relevant headlines&lt;/li&gt;
&lt;li&gt;Synthesizes everything into a single coherent recommendation&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step 4- Persistent Memory Across Sessions
&lt;/h2&gt;

&lt;p&gt;Without memory, every conversation starts cold. AgentCore Memory gives the agent a persistent, semantic store, the agent remembers past interactions and client preferences across sessions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# memory/memory_manager.py
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dataclasses&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dataclass&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;field&lt;/span&gt;


&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MemoryManager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Wraps Amazon Bedrock AgentCore Memory with a local in-process fallback
    so the demo runs without any AWS credentials.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;memory_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us-east-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;use_local_fallback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;memory_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;memory_id&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;session_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session_id&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;default&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;use_local&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;use_local_fallback&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;memory_id&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_local_memory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;use_local&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bedrock-agentcore&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;region_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;save_turn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent_response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Persist a conversation turn.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;use_local&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_local_memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;agent_response&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt;

        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save_memory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;memoryId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;memory_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;sessionId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;agent_response&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_recent_context&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Return a formatted string of recent memory to inject into the system prompt.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;use_local&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_local_memory&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;
            &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Previous conversation context:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;turn&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;turn&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Assistant: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;turn&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;retrieve_memory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;memoryId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;memory_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;sessionId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recent client interactions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;maxResults&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Memory context is injected into the orchestrator's system prompt on every turn:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;memory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MemoryManager&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;use_local_fallback&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# swap to AWS for prod
&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_recent_context&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;advisor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_financial_advisor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;memory_context&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;advisor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save_turn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; "Persistent memory lets the agent remember past conversations and client preferences, enabling truly personalized financial guidance at scale."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Step 5- Compliance with Bedrock Guardrails
&lt;/h2&gt;

&lt;p&gt;Financial applications have strict compliance requirements: no guaranteed return promises, no off-topic advice, PII must be redacted. Bedrock Guardrails handles all of this at the infrastructure level, &lt;strong&gt;zero code changes&lt;/strong&gt; in your agent logic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flo8xbls0p8a3qxhxnirh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flo8xbls0p8a3qxhxnirh.png" alt=" " width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Guardrails are applied at &lt;strong&gt;both&lt;/strong&gt; the input and output layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Input filter:&lt;/strong&gt; blocks prompt injection, off-topic requests (medical, legal), and PII before the LLM ever sees them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output filter:&lt;/strong&gt; checks grounding, redacts any leaked PII, blocks harmful or hallucinated content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's how we configure it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# guardrails/config.py
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dataclasses&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dataclass&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;field&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;


&lt;span class="nd"&gt;@dataclass&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GuardrailsConfig&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;financial-advisor-guardrail&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;content_filter_strength&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HIGH&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="n"&gt;denied_topics&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default_factory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Non-Financial Advice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;definition&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Any advice outside personal finance, investments, or markets.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;examples&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;medical diagnosis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;legal advice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;relationship counselling&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Guaranteed Returns&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;definition&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Claims that any investment guarantees specific returns.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;examples&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guaranteed 20% return&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;risk-free investment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="n"&gt;pii_redaction_types&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default_factory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;US_SOCIAL_SECURITY_NUMBER&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CREDIT_DEBIT_CARD_NUMBER&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;US_BANK_ACCOUNT_NUMBER&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EMAIL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PHONE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NAME&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="n"&gt;blocked_words&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default_factory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guaranteed returns&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;risk-free investment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100% safe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cannot lose&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="n"&gt;enable_grounding_check&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="n"&gt;grounding_threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.7&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_or_create_guardrail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;GuardrailsConfig&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us-east-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Create (or retrieve existing) guardrail and return its ID.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nc"&gt;GuardrailsConfig&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bedrock&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;region_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Check if it already exists
&lt;/span&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;list_guardrails&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guardrails&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_guardrail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;contentPolicyConfig&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;filtersConfig&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SEXUAL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inputStrength&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content_filter_strength&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;outputStrength&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content_filter_strength&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;VIOLENCE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inputStrength&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content_filter_strength&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;outputStrength&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content_filter_strength&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HATE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inputStrength&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content_filter_strength&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;outputStrength&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content_filter_strength&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;topicPolicyConfig&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;topicsConfig&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;denied_topics&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;sensitiveInformationPolicyConfig&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;piiEntitiesConfig&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ANONYMIZE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pii_redaction_types&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;wordPolicyConfig&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wordsConfig&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;blocked_words&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;groundingPolicyConfig&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;filtersConfig&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GROUNDING&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;threshold&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grounding_threshold&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RELEVANCE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;threshold&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grounding_threshold&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enable_grounding_check&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;guardrailId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Attach the guardrail ID to the &lt;code&gt;BedrockModel&lt;/code&gt; and every request, input AND output, is automatically screened.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6- Deploy to Production with AgentCore Runtime
&lt;/h2&gt;

&lt;p&gt;AgentCore Runtime is a serverless execution environment for agents. It handles auto-scaling, session management, health checks, and observability out of the box.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fra2o1jnt26p8crrod2ys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fra2o1jnt26p8crrod2ys.png" alt=" " width="800" height="264"&gt;&lt;/a&gt;&lt;br&gt;
The deployment config lives in &lt;code&gt;agentcore.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"financial-advisor-agent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"runtime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"python3.12"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"main.handler"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bedrock"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"us.anthropic.claude-3-5-sonnet-20241022-v2:0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"memory"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"agentcore"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"session_ttl_days"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"guardrails"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"guardrail_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"financial-advisor-guardrail"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apply_to"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"output"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scaling"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"min_instances"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"max_instances"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"target_concurrency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"observability"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tracing"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"xray"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"metrics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cloudwatch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"log_level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"INFO"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three CLI commands take you from code to production:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Develop locally with hot-reload&lt;/span&gt;
agentcore dev
&lt;span class="c"&gt;# → Local agent running at http://localhost:8080&lt;/span&gt;

&lt;span class="c"&gt;# Deploy to Amazon Bedrock AgentCore Runtime&lt;/span&gt;
agentcore deploy
&lt;span class="c"&gt;# → Packaging agent... done&lt;/span&gt;
&lt;span class="c"&gt;# → Provisioning CDK stack... done&lt;/span&gt;
&lt;span class="c"&gt;# → Attaching guardrails... done&lt;/span&gt;
&lt;span class="c"&gt;# → Configuring AgentCore Memory... done&lt;/span&gt;
&lt;span class="c"&gt;# → Deployed! Endpoint: https://bedrock-agentcore.us-east-1.amazonaws.com/agents/fa-demo&lt;/span&gt;

&lt;span class="c"&gt;# Invoke the deployed agent&lt;/span&gt;
agentcore invoke &lt;span class="s2"&gt;"What is the portfolio value for client ABC123?"&lt;/span&gt; &lt;span class="nt"&gt;--stream&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Putting It All Together- Running the Demo
&lt;/h2&gt;

&lt;p&gt;Clone the repo and run the demo locally (no AWS credentials required):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/awslabs/agentcore-samples
&lt;span class="nb"&gt;cd &lt;/span&gt;agentcore-samples/financial-advisor

pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Local demo with mock data&lt;/span&gt;
python main.py

&lt;span class="c"&gt;# Full AWS mode with real Bedrock, Memory, and Guardrails&lt;/span&gt;
python main.py &lt;span class="nt"&gt;--use-aws&lt;/span&gt; &lt;span class="nt"&gt;--enable-guardrails&lt;/span&gt;

&lt;span class="c"&gt;# Interactive REPL&lt;/span&gt;
python main.py &lt;span class="nt"&gt;--interactive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The scripted demo walks through six representative turns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[1/6] What is the total portfolio value for client ABC123?
  → Portfolio Specialist retrieves holdings + P&amp;amp;L

[2/6] What are the current prices for AAPL, GOOGL, and MSFT?
  → Market Data Specialist fetches live prices + 52w range

[3/6] What's the latest news about Apple and Microsoft?
  → News Analyst returns headlines + sentiment scores

[4/6] What's the risk level of my current portfolio?
  → Portfolio Specialist runs risk decomposition

[5/6] Based on everything, should I rebalance?
  → Orchestrator calls all three specialists + synthesises

[6/6] Given what I told you about my risk preference earlier, any concerns?
  → Memory-powered: agent recalls previous turns and personalises
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;The financial advisor demo shows how modern agent patterns come together in a coherent production architecture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strands SDK makes agents simple.&lt;/strong&gt; The &lt;code&gt;@tool&lt;/code&gt; decorator, &lt;code&gt;Agent&lt;/code&gt; class, and &lt;code&gt;BedrockModel&lt;/code&gt; eliminate most boilerplate. You describe your tools in plain Python; the SDK handles the rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specialisation beats monoliths.&lt;/strong&gt; Breaking the system into focused sub-agents — each with its own system prompt and tool set — produces sharper, more reliable answers than a single agent trying to do everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The agent-as-tool pattern is powerful.&lt;/strong&gt; Wrapping sub-agents as &lt;code&gt;@tool&lt;/code&gt; functions lets the orchestrator's model reason about delegation using the same mechanism it uses for everything else. No custom routing logic required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guardrails are infrastructure, not code.&lt;/strong&gt; Attaching a Bedrock Guardrail to &lt;code&gt;BedrockModel&lt;/code&gt; protects every single request- input AND output — without any changes to your agent logic. Compliance becomes a deployment concern, not a development one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory makes agents personal.&lt;/strong&gt; Injecting past conversations into the system prompt at runtime is simple but transformative. The agent genuinely remembers- and users notice immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;agentcore deploy&lt;/code&gt; is production-ready.&lt;/strong&gt; Serverless execution, auto-scaling, integrated tracing, and health management are all included. Going from local dev to a live endpoint is three CLI commands.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Demo code:&lt;/strong&gt; &lt;a href="https://github.com/awslabs/agentcore-samples" rel="noopener noreferrer"&gt;github.com/awslabs/agentcore-samples&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strands Agents SDK:&lt;/strong&gt; &lt;a href="https://github.com/strands-agents/sdk-python" rel="noopener noreferrer"&gt;github.com/strands-agents/sdk-python&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Bedrock AgentCore docs:&lt;/strong&gt; &lt;a href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html" rel="noopener noreferrer"&gt;docs.aws.amazon.com/bedrock-agentcore&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Bedrock Guardrails:&lt;/strong&gt; &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html" rel="noopener noreferrer"&gt;docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Summit 2025 session:&lt;/strong&gt; &lt;em&gt;Use Agent Strategies to Streamline Complex Business Tasks&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ using open-source tools and AWS. Questions or feedback? Drop them in the comments below.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>python</category>
      <category>agents</category>
    </item>
    <item>
      <title>How I Built MzansiShopper, An AI-Powered Retail Assistant for Personalized Shopping</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Wed, 19 Nov 2025 15:33:17 +0000</pubDate>
      <link>https://dev.to/aws-builders/how-i-built-mzansishopper-an-ai-powered-retail-assistant-for-personalized-shopping-2ini</link>
      <guid>https://dev.to/aws-builders/how-i-built-mzansishopper-an-ai-powered-retail-assistant-for-personalized-shopping-2ini</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Imagine walking into a store and the assistant knows exactly what you’re looking for, even speaks your language. That’s the shopping experience I wanted to bring online in South Africa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There is limited personalization in retail in South Africa.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;11 official languages hence creating accessibility barriers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consumers often feel excluded from digital tools.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I watched my mom struggle to shop online because everything was in English.&lt;/p&gt;

&lt;p&gt;MzansiShopper is my solution to make retail more personalized and inclusive using AI.&lt;/p&gt;

&lt;p&gt;South Africa's diverse languages and shopping needs inspired me to build a smart assistant that understands and recommends products in real time powered entirely by AWS services and deployed with Q- CLI for automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0jbphafihoa3vbfnlsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0jbphafihoa3vbfnlsc.png" alt=" " width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My goal was simple, to build an AI assistant that delivers personalized product recommendations in multiple languages, helping customers find exactly what they need, while supporting digital inclusion in South Africa's retail sector.&lt;/p&gt;

&lt;p&gt;But then came the challenge of building it. That's when I remembered Q CLI. Instead of starting from scratch, I leveraged Amazon Q for CLI, interacting with it right from my terminal to generate python code and bring MzansiShopper to life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6km4njrjnzw0bvus49t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6km4njrjnzw0bvus49t.png" alt=" " width="751" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MzansiShopper leverages AWS services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Lex powers the conversational chat interface, understanding natural language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Personalize generates real-time tailored product suggestions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Translate enables multilinguals support, breaking language barriers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DynamoDB securely stores user data and shopping history.&lt;br&gt;
And I used Q- CLI for streamlined deployment and management of all these resources.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsfm9qy4ondatws8rkg5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftsfm9qy4ondatws8rkg5.png" alt=" " width="800" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step by step Q-CLI created and built the project.&lt;br&gt;
But it didn’t stop there! It also walked me through the installation process and how to run the app successfully.&lt;br&gt;
Then… BOOM! It worked on the first try—no debugging, no errors, just pure Amazon Q magic. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The End Product&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fxfw8mlx81x29i0q2zk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1fxfw8mlx81x29i0q2zk.png" alt=" " width="800" height="783"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnmvja5j298hg1y5n5i7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnmvja5j298hg1y5n5i7b.png" alt=" " width="800" height="788"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Process&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automating setup with CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handling data for recommendations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrating Translate for multilingual support.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lessons learned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Challenge: Managing multiple languages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Win: CLI automation saved tons of time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Surprise: How quickly AWS Personalize started delivering accurate results.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5d2170s70mz0poxtwukw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5d2170s70mz0poxtwukw.png" alt=" " width="800" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Impact&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MzansiShopper has enables digital inclusion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Small retailers can now compete with bigger players.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shoppers across languages feel seen and understood.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re building with AWS, these tools are not for Silicon Valley startups, they’re for solving problems right here in Africa.&lt;/p&gt;

&lt;p&gt;With the right tools, we can build solutions that are inclusive, scalable, and impactful.&lt;/p&gt;

&lt;p&gt;MzansiShopper is a step towards making every South African feel at home in the digital economy.&lt;br&gt;
Building with Amazon Q-CLI was an absolute blast! . It’s truly a game-changer fast, intuitive, and super helpful.&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-supported-envs.html?trk=7c8639c6-87c6-47d6-9bd0-a5812eecb848&amp;amp;sc_channel=el" rel="noopener noreferrer"&gt;Supported environment for Amazon Q for command line&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html?trk=7c8639c6-87c6-47d6-9bd0-a5812eecb848&amp;amp;sc_channel=el" rel="noopener noreferrer"&gt;Install Amazon Q for command line in your own environment&lt;/a&gt;&lt;br&gt;
&lt;a href="http://mzansi-shopper-frontend-1754773926.s3-website-us-east-1.amazonaws.com/" rel="noopener noreferrer"&gt;Live Mzanzi App&lt;/a&gt;&lt;br&gt;
&lt;a href="https://builder.aws.com/content/2v1pCpswqtDMy5u6SBIJ4Emzksi/how-i-built-an-aws-trivia-game-with-amazon-q-clino-sweat" rel="noopener noreferrer"&gt;Blog About Q-CLI&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cli</category>
      <category>amazonq</category>
    </item>
    <item>
      <title>AI Agentic Kiro- Empowering Intelligent Agents</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Sat, 09 Aug 2025 09:56:43 +0000</pubDate>
      <link>https://dev.to/aws-builders/ai-agentic-kiro-empowering-intelligent-agents-426h</link>
      <guid>https://dev.to/aws-builders/ai-agentic-kiro-empowering-intelligent-agents-426h</guid>
      <description>&lt;p&gt;&lt;strong&gt;What Is AI Agentic Kiro?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built AI Agentic Kiro to let small, goal-driven programs called “agents”—handle cloud tasks automatically. Think of each agent like a little helper that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Understands what you want (for example, “fetch today’s sales data”).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does the work (runs code on AWS services).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keeps track of what it’s done (logs results and errors).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F45c91rw3zbgzx7v6v0nm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F45c91rw3zbgzx7v6v0nm.png" alt=" " width="800" height="650"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It’s Organized&lt;/strong&gt;&lt;br&gt;
It is organized in three steering files. Before any code runs, Kiro needs clear instructions. I found it easiest to keep three simple files in every project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;requirements.md&lt;/code&gt;&lt;br&gt;
Lists exactly what the agent should do, in plain English.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;design.md&lt;/code&gt;&lt;br&gt;
Sketches the overall flow—step 1 leads to step 2, and so on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;tasks.md&lt;/code&gt;&lt;br&gt;
Breaks the work into bite-sized tasks (for example, “download CSV,” “clean data,” “save to S3”).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keeping these plain-text files first means you stay organized and teammates know exactly what to expect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn264okebjeeoue1sptpg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn264okebjeeoue1sptpg.png" alt=" " width="574" height="1107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Agent’s Life: Hooks You Can Use&lt;/strong&gt;&lt;br&gt;
Each agent goes through a simple lifetime in Kiro. At certain moments, you can “hook” in your own code to customize behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;on_init&lt;/code&gt; (when the agent starts):&lt;br&gt;
Good for loading secrets or setting up connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;before_task&lt;/code&gt; (right before a task runs):&lt;br&gt;
Let’s you tweak the inputs—for example, add a timestamp or feature-flag.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;after_task&lt;/code&gt;(right after completion):&lt;br&gt;
Perfect for sending logs, metrics, or kicking off another process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;on_error&lt;/code&gt; (if something fails):&lt;br&gt;
You can send an alert or retry.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;on_shutdown&lt;/code&gt; (when all work is done):&lt;br&gt;
Great for cleanup or sending a summary email.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my first project, I used before_task to check if a file was large—if so, I sent it through a special processor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrap3dn55g0j06gvvh80.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrap3dn55g0j06gvvh80.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple Architecture&lt;/strong&gt;&lt;br&gt;
Under the hood, here’s what happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You write your steering files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An AWS-hosted MCP server holds those files and serves them to agents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kiro’s runtime (an AWS Lambda function) reads them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It pulls tasks from an SQS queue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each task runs in Lambda or Step Functions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Results and logs go to S3, DynamoDB, and CloudWatch.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That may sound like a lot, but Kiro hides most of it, your job is just to focus on the steering files and any custom hook code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The MCP Server: Your Control Hub&lt;/strong&gt;&lt;br&gt;
The Management Control Plane (MCP) server is a lightweight component you deploy once per project. It:&lt;/p&gt;

&lt;p&gt;Hosts your steering files (requirements.md, design.md, tasks.md).&lt;/p&gt;

&lt;p&gt;Authenticates agents before they fetch updates.&lt;/p&gt;

&lt;p&gt;Manages versioning, so you can roll back to a previous workflow design.&lt;/p&gt;

&lt;p&gt;I run mine in a small EC2 instance behind an Application Load Balancer. Agents use a short-lived IAM role to call the MCP’s HTTPS endpoint and pull the latest instructions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Daily Reports&lt;br&gt;
Let an agent grab yesterday’s sales numbers and email you a summary every morning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auto-Cleanup&lt;br&gt;
Agents monitor a folder in S3 and delete old files you no longer need.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simple Chatbot&lt;br&gt;
An agent reads support requests from a queue, checks a FAQ table, and posts answers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these starts by writing a few lines in &lt;code&gt;requirements.md&lt;/code&gt;&lt;br&gt;
 no heavy coding to get going.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tips for Getting Started&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Write clear instructions first&lt;br&gt;
Spend time on &lt;code&gt;requirements.md&lt;/code&gt;, it’s your blueprint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep hooks tiny&lt;br&gt;
Focus hooks on one job: logging, alerting, or modifying data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use AWS free tier&lt;br&gt;
You can experiment with Lambda, S3, and DynamoDB at no cost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test locally&lt;br&gt;
Kiro comes with a simple emulator so you can run agents on your laptop before you deploy.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Try It Yourself&lt;/strong&gt;&lt;br&gt;
Visit &lt;a href="https://kiro.dev/" rel="noopener noreferrer"&gt;Kiro website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6zfpqlrkwg9eshpu3kc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6zfpqlrkwg9eshpu3kc.png" alt=" " width="800" height="351"&gt;&lt;/a&gt;&lt;br&gt;
 Click on download button based on the operating system you are using.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>kiro</category>
      <category>agentaichallenge</category>
    </item>
    <item>
      <title>Why Am a Tech Community Ambassador in East Africa!!</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Sun, 14 Jul 2024 14:44:07 +0000</pubDate>
      <link>https://dev.to/aws-builders/why-im-a-tech-community-ambassador-in-east-africa-20e4</link>
      <guid>https://dev.to/aws-builders/why-im-a-tech-community-ambassador-in-east-africa-20e4</guid>
      <description>&lt;p&gt;&lt;strong&gt;WHAT KEEPS ME AWAKE!&lt;/strong&gt;&lt;br&gt;
I am deeply passionate about empowering youth to lead better lives. In today's rapidly evolving world, technology offers incredible opportunities for young people to improve their circumstances and contribute positively to their communities. I believe that by providing the right resources and support, we can unlock their full potential and help them build brighter futures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHAT THE NUMBERS ARE TELLING US&lt;/strong&gt;&lt;br&gt;
The tech industry is experiencing &lt;a href="https://www.forbes.com/advisor/education/it-and-tech/tech-industry-statistics-and-facts/" rel="noopener noreferrer"&gt;significant growth&lt;/a&gt; worldwide. Globally, the tech sector is expanding at a rate of 5% annually, creating millions of new jobs. In Africa, the potential is equally promising. By 2030, the continent is expected to have over 1.2 billion internet users, driving an increasing demand for tech professionals. This growth highlights the importance of equipping young people with the necessary skills to thrive in this dynamic field.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ivln1azh538qvauqdwi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ivln1azh538qvauqdwi.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To succeed in the tech industry, obtaining relevant certifications is crucial. Some of the &lt;a href="https://www.skillsoft.com/blog/top-paying-it-certifications" rel="noopener noreferrer"&gt;top certifications&lt;/a&gt; currently in demand include AWS Certified Solutions Architect, Google Certified Professional Cloud Architect, Microsoft Certified: Azure Solutions Architect Expert, and Cisco Certified Network Associate (CCNA). These certifications can significantly enhance career prospects and open doors to numerous opportunities.&lt;/p&gt;

&lt;p&gt;Despite the increasing number of young people getting trained or certified in technology, there is still a significant gap between training and employment. In Africa, thousands of young tech enthusiasts are trained annually, but only a fraction secure jobs in their field. For instance, in Kenya, only about &lt;a&gt;20% of trained&lt;/a&gt; tech professionals find relevant employment, highlighting the need for better support systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY THE GAP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuuj73yaju9ld27dd7ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuuj73yaju9ld27dd7ce.png" alt=" " width="636" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;1. Skill gaps&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Tech moves at lightning speed these days. It feels like there's always some new tool or programming language popping up. How's anyone supposed to keep up with all that? It's tough, especially when you're already juggling a full-time job and life stuff. Before you know it, your skills can start feeling a bit outdated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;2. Career stagnation&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Getting stuck in a career rut is super common. You might wake up one day and realize you've been doing the same thing for years. Maybe you're not learning anything new, or you're just not excited about your work anymore. It's like being on a hamster wheel - you're moving, but not really going anywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3. Limited access to vast job opportunities in the marketplace&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
There are so many cool jobs out there, but how do you even find out about them? If you don't have a big network, it's hard to hear about openings or get your foot in the door. And forget about those "hidden" jobs that never even get posted publicly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A CASE FOR TECH COMMUNITIES&lt;/strong&gt;&lt;br&gt;
Tech communities is here to bridge this gap, young people need key things:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02wks6p91csy9f91mhax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02wks6p91csy9f91mhax.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;1. Networking&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A tech community is like a big, friendly club for people who love technology. You get to meet lots of new people who are into the same stuff as you. It's a great way to make friends, find mentors, or even meet future work partners. You never know - the person you chat with at a meetup might end up being your next boss or business partner!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;2. Knowledge sharing&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
In a tech community, everyone's learning from each other all the time. It's like a never-ending study group, but way more fun. If you're stuck on a problem, there's always someone who's been there before and can help out. And when you figure something out, you get to share it with others too. It's a give-and-take that helps everyone grow smarter together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3. Exposure&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Being part of a tech community is like opening a window to the whole tech world. You get to see and try out new technologies before everyone else. You hear about job openings first. You might even get chances to speak at events or show off projects you've worked on. It's a great way to get your name out there and be known as well as making a lasting contribution in the tech world .&lt;br&gt;
&lt;strong&gt;&lt;em&gt;4. Mentorship&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Plus, mentors can be game-changers for your career. They can show you the ropes, help you avoid mistakes, and maybe even put in a good word for you with higher-ups. But finding a good mentor? That's like looking for a needle in a haystack if you don't have a solid network.&lt;/p&gt;

&lt;p&gt;And let's be real - sometimes it's not what you know, it's who you know. When you're competing against a ton of other qualified people, having someone vouch for you can make all the difference. But if your network is small, you're missing out on those personal recommendations that could give you an edge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CONCLUSION&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, here's the deal: We've got all these young techies out there, right? But they're kinda stuck between learning stuff and actually landing jobs. That's where tech communities come in. It's like creating a cool hangout spot where these techies can meet up, swap ideas, and find out about job openings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgs95nebhnvzoyksumzrc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgs95nebhnvzoyksumzrc.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've seen it work, and let me tell you, it's pretty amazing. We're talking hundreds of young folks who've totally turned their lives around. And it's not just about them - they're out there making a real difference in their communities too.&lt;br&gt;
That's why I'm all fired up about building more of these tech communities in East Africa, starting right here in Kenya. I'm telling you, this stuff is my passion. That is why it keeps me awake at night and also forms part of my breakfast.&lt;/p&gt;

&lt;p&gt;I can't stop thinking about how much good we could do. It's like, every time I close my eyes, I see all these young people crushing it in tech jobs, you know?&lt;/p&gt;

&lt;p&gt;Anyway, I've got loads more to say about why these tech communities are so awesome. But I'll save that for my next post. Don't wanna bore you all in one go! 😉&lt;br&gt;
Stay tuned, folks. This is gonna be good!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REFERENCE&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.skillsoft.com/blog/top-paying-it-certifications" rel="noopener noreferrer"&gt;Top Certificates&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.meetup.com/aws-user-group-nairobi/" rel="noopener noreferrer"&gt;AWS UserGroup Kenya&lt;/a&gt;&lt;/p&gt;

</description>
      <category>techcommunity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Leveraging Amazon Titan Text Premier for RAG AI in Software Testing</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Mon, 17 Jun 2024 06:07:26 +0000</pubDate>
      <link>https://dev.to/aws-builders/leveraging-amazon-titan-text-premier-for-rag-and-agent-based-ai-in-software-testing-3b81</link>
      <guid>https://dev.to/aws-builders/leveraging-amazon-titan-text-premier-for-rag-and-agent-based-ai-in-software-testing-3b81</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Amazon Titan Text Premier, now available through Amazon Bedrock, is a state-of-the-art generative AI model that can revolutionize various fields, including software testing. This article provides a detailed guide on how to implement Retrieval-Augmented Generation (RAG) and agent-based generative AI applications to enhance software testing processes, optimizing outcomes with these advanced technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding RAG and Agent-Based Generative AI&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Retrieval-Augmented Generation (RAG)&lt;/strong&gt;&lt;br&gt;
RAG combines retrieval-based techniques with generative models to create systems capable of fetching relevant information from extensive data sets and using this context to generate high-quality responses. This is particularly useful for tasks requiring detailed and contextually accurate outputs, such as creating comprehensive test cases or documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent-Based Generative AI&lt;/strong&gt;&lt;br&gt;
Agent-based generative AI employs autonomous agents powered by generative models to perform tasks like test case creation, scenario simulation, and software interaction. These agents can learn and adapt from their interactions, making software testing more efficient and effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Implement RAG and Agent-Based Generative AI in Software Testing&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Step 1: Setting Up the Environment&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;1.1 Accessing Amazon Bedrock&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Log into your AWS account and go to the Amazon Bedrock service.&lt;br&gt;
Ensure you have the necessary permissions to use the Amazon Titan Text Premier model.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;1.2 Provisioning the Titan Text Premier Model&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow the AWS documentation to set up the Titan Text Premier model in your AWS environment.&lt;br&gt;
Configure the model to meet your specific software testing needs.&lt;br&gt;
&lt;strong&gt;Step 2: Creating a RAG System for Test Case Generation&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2.1 Preparing the Data&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Collect a comprehensive set of documents, including user manuals, past test cases, and bug reports.&lt;br&gt;
Use a retrieval system like Elasticsearch or Amazon Kendra to index this data for efficient searching.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2.2 Implementing the RAG Framework&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Develop a retrieval component that queries the indexed data based on test requirements.&lt;br&gt;
Integrate the Titan Text Premier model to generate test cases using the retrieved information.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2.3 Automating Test Case Generation&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create automation scripts to streamline the process of retrieving and generating test cases.&lt;br&gt;
Use these generated test cases to enhance your existing test suite for broader and more thorough testing.&lt;br&gt;
Step 3: Deploying Agent-Based Generative AI for Dynamic Testing&lt;br&gt;
&lt;strong&gt;&lt;em&gt;3.1 Defining Agent Roles and Scenarios&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Identify the types of agents needed, such as UI testers, API testers, and performance testers.&lt;br&gt;
Define scenarios for these agents to cover, including edge cases and common user interactions.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;3.2 Developing Agent Logic&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use the Titan Text Premier model to enable agents to dynamically generate and execute test scripts.&lt;br&gt;
Implement logic for agents to adapt and learn from test results, improving their effectiveness over time.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;3.3 Integrating with CI/CD Pipelines&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connect the agent-based testing system to your Continuous Integration/Continuous Deployment (CI/CD) pipeline.&lt;br&gt;
Ensure agents can autonomously start tests, analyze results, and report issues, supporting continuous testing.&lt;br&gt;
&lt;strong&gt;Benefits of Using Amazon Titan Text Premier in Software Testing&lt;/strong&gt;&lt;br&gt;
Comprehensive Test Coverage&lt;br&gt;
RAG and generative AI allow for the creation of a wide range of test scenarios, including those that might be overlooked by human testers, ensuring thorough test coverage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhanced Efficiency&lt;/strong&gt;&lt;br&gt;
Automating test case generation and execution reduces manual effort and speeds up the testing process, enabling testers to focus on more complex issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Improvement&lt;/strong&gt;&lt;br&gt;
Generative AI models learn from test results, continuously improving the accuracy and relevance of generated test cases and scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;br&gt;
Agent-based systems can easily scale to handle large test suites and extensive applications, providing robust testing capabilities without significant additional resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Integrating Amazon Titan Text Premier into your software testing framework with RAG and agent-based generative AI greatly enhances testing efficiency and effectiveness. By automating and optimizing test processes, organizations can achieve higher-quality software products with faster release cycles. Amazon Bedrock's advanced infrastructure and capabilities make it feasible and highly beneficial to implement these innovative AI techniques.&lt;/p&gt;

&lt;p&gt;Embrace the future of software testing with Amazon Titan Text Premier and transform your testing strategies for superior results.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Leveraging Amazon Titan Text Premier for Agent-Based AI in Software Testing</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Sun, 26 May 2024 13:43:51 +0000</pubDate>
      <link>https://dev.to/aws-builders/leveraging-amazon-titan-text-premier-for-agent-based-ai-in-software-testing-581g</link>
      <guid>https://dev.to/aws-builders/leveraging-amazon-titan-text-premier-for-agent-based-ai-in-software-testing-581g</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Amazon Titan Text Premier, now available through Amazon Bedrock, is a state-of-the-art generative AI model that can revolutionize various fields, including software testing. This article provides a detailed guide on how to implement Retrieval-Augmented Generation (RAG) and agent-based generative AI applications to enhance software testing processes, optimizing outcomes with these advanced technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding RAG and Agent-Based Generative AI&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Retrieval-Augmented Generation (RAG)&lt;/strong&gt;&lt;br&gt;
RAG combines retrieval-based techniques with generative models to create systems capable of fetching relevant information from extensive data sets and using this context to generate high-quality responses. This is particularly useful for tasks requiring detailed and contextually accurate outputs, such as creating comprehensive test cases or documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent-Based Generative AI&lt;/strong&gt;&lt;br&gt;
Agent-based generative AI employs autonomous agents powered by generative models to perform tasks like test case creation, scenario simulation, and software interaction. These agents can learn and adapt from their interactions, making software testing more efficient and effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Implement RAG and Agent-Based Generative AI in Software Testing&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Step 1: Setting Up the Environment&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;1.1 Accessing Amazon Bedrock&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Log into your AWS account and go to the Amazon Bedrock service.&lt;br&gt;
Ensure you have the necessary permissions to use the Amazon Titan Text Premier model.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;1.2 Provisioning the Titan Text Premier Model&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Follow the AWS documentation to set up the Titan Text Premier model in your AWS environment.&lt;br&gt;
Configure the model to meet your specific software testing needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tl9t8ijzsie8b4d0qjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tl9t8ijzsie8b4d0qjh.png" alt=" " width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Creating a RAG System for Test Case Generation&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2.1 Preparing the Data&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Collect a comprehensive set of documents, including user manuals, past test cases, and bug reports.&lt;br&gt;
Use a retrieval system like Elasticsearch or Amazon Kendra to index this data for efficient searching.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2.2 Implementing the RAG Framework&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Develop a retrieval component that queries the indexed data based on test requirements.&lt;br&gt;
Integrate the Titan Text Premier model to generate test cases using the retrieved information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fysyjchs58jtpkkz2v142.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fysyjchs58jtpkkz2v142.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;2.3 Automating Test Case Generation&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create automation scripts to streamline the process of retrieving and generating test cases.&lt;br&gt;
Use these generated test cases to enhance your existing test suite for broader and more thorough testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Deploying Agent-Based Generative AI for Dynamic Testing&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;3.1 Defining Agent Roles and Scenarios&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Identify the types of agents needed, such as UI testers, API testers, and performance testers.&lt;br&gt;
Define scenarios for these agents to cover, including edge cases and common user interactions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9h6e8nm5pwiv7wn8e2dt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9h6e8nm5pwiv7wn8e2dt.png" alt=" " width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3.2 Developing Agent Logic&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use the Titan Text Premier model to enable agents to dynamically generate and execute test scripts.&lt;br&gt;
Implement logic for agents to adapt and learn from test results, improving their effectiveness over time.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;3.3 Integrating with CI/CD Pipelines&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connect the agent-based testing system to your Continuous Integration/Continuous Deployment (CI/CD) pipeline.&lt;br&gt;
Ensure agents can autonomously start tests, analyze results, and report issues, supporting continuous testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of Using Amazon Titan Text Premier in Software Testing&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Comprehensive Test Coverage&lt;/strong&gt;&lt;br&gt;
RAG and generative AI allow for the creation of a wide range of test scenarios, including those that might be overlooked by human testers, ensuring thorough test coverage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhanced Efficiency&lt;/strong&gt;&lt;br&gt;
Automating test case generation and execution reduces manual effort and speeds up the testing process, enabling testers to focus on more complex issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Improvement&lt;/strong&gt;&lt;br&gt;
Generative AI models learn from test results, continuously improving the accuracy and relevance of generated test cases and scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;br&gt;
Agent-based systems can easily scale to handle large test suites and extensive applications, providing robust testing capabilities without significant additional resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Integrating Amazon Titan Text Premier into your software testing framework with RAG and agent-based generative AI greatly enhances testing efficiency and effectiveness. By automating and optimizing test processes, organizations can achieve higher-quality software products with faster release cycles. Amazon Bedrock's advanced infrastructure and capabilities make it feasible and highly beneficial to implement these innovative AI techniques.&lt;/p&gt;

&lt;p&gt;Embrace the future of software testing with Amazon Titan Text Premier and transform your testing strategies for superior results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REFERENCE&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/blogs/machine-learning/build-generative-ai-applications-with-amazon-titan-text-premier-amazon-bedrock-and-aws-cdk/" rel="noopener noreferrer"&gt;Build generative AI applications&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/machine-learning/responsible-machine-learning/titan-text-premier/" rel="noopener noreferrer"&gt;AWS AI Service Cards&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS Community Day Kenya</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Mon, 29 Apr 2024 11:12:57 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-community-day-kenya-89h</link>
      <guid>https://dev.to/aws-builders/aws-community-day-kenya-89h</guid>
      <description>&lt;p&gt;The AWS User-group Kenya recently organized the first-ever AWS Community Day Kenya 2024, a big step forward for Kenya's tech scene. Held at KCA University on April 20th, the event brought together over 400 cloud enthusiasts, professionals, and businesses not only from Kenya but also neighboring countries like Uganda, Burundi, and Nigeria. The goal was simple: to share knowledge, discuss the latest trends, and explore how Amazon Web Services (AWS) can drive innovation in the cloud. &lt;/p&gt;

&lt;p&gt;Big shout out to our amazing sponsors: Amazon Web Services, KCA University, Silicon Overdrive, QuCoon Limited, eMobilis Mobile Technology Institute, ELEVEN DEGREES CONSULTING LIMITED, Moringa School, Labmero Consulting, Dumela Corp, Whizlabs, YellowCard and Mesh.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmgrjz7dcftmb65gdlo3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmgrjz7dcftmb65gdlo3.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The event boasted an impressive lineup of speakers, including Jeff Barr, Vice President &amp;amp; Chief Evangelist of AWS, who highlighted the global significance of the event. Eng. John Tanui, from Kenya's Ministry of ICT, and Dr. Aminah Zawedde, from Uganda's Ministry of ICT, and Robin Njiru shared insights into the region's digital transformation journey.&lt;/p&gt;

&lt;p&gt;Eng. Tanui emphasized Kenya's commitment to digital advancement and its partnership with AWS to achieve ambitious goals outlined in Kenya Vision 2030. He highlighted how cloud technology can boost economic growth and create opportunities for Kenya's youth, citing the recent establishment of an AWS development center in Nairobi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbspik4dz7t9sb3h33wv8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbspik4dz7t9sb3h33wv8.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dr. Zawedde echoed this sentiment, stressing the importance of empowering African youth to lead the technological revolution. She emphasized the role of events like the AWS Community Day in nurturing talent and fostering innovation, calling for its expansion to benefit more young people across the continent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhitehg0q8jqmegxoxeu9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhitehg0q8jqmegxoxeu9.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Robin Njiru's keynote shed light on the transformative impact of AWS technologies, emphasizing their potential to drive innovation, spur economic growth, and empower businesses across Sub-Saharan Africa. He spoke passionately about AWS's commitment to supporting the region's digital transformation journey, highlighting initiatives aimed at fostering talent development, enhancing technical skills, and accelerating cloud adoption.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylrpadjzpws2k1z97kko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fylrpadjzpws2k1z97kko.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In particular, He emphasized the role of events like the AWS Community Day in nurturing a vibrant and engaged community of cloud enthusiasts, professionals, and businesses. He commended the organizers and participants for their dedication and enthusiasm, recognizing their pivotal role in driving innovation and advancing technical expertise in the region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WOMEN IN TECH PANEL DISCUSSION&lt;/strong&gt;&lt;br&gt;
There was a special session called Women in Tech. This session brought together successful women working in different tech roles to talk about their experiences and challenges in the industry.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59ummsq0z3rmw63e7h7a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59ummsq0z3rmw63e7h7a.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One big topic they talked about was how hard it can be for women to balance work and personal life. They shared tips like being flexible with work hours, taking care of themselves, and getting support from family and colleagues.&lt;/p&gt;

&lt;p&gt;The discussion showed how important it is to have a supportive environment for women in tech to do well both at work and in their personal lives. By sharing their stories, the panelists inspired others and helped make the tech community more inclusive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ARTIFICIAL INTELLIGENCE &amp;amp; MACHINE LEARNING TRACK&lt;/strong&gt; &lt;br&gt;
Attendees had a chance to explore different tracks, each focusing on a specific area of cloud computing and technology. One standout track was all about AI and ML, where people got to dive into the world of artificial intelligence and machine learning. Led by experts, sessions covered topics like deep learning, language processing, and computer vision, showing how AI and ML are changing industries like healthcare and finance. Attendees also learned practical ways to use AWS tools like SageMaker to implement AI solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DEVOPS TRACK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another popular track was DevOps, which took a deep dive into how to streamline software development and operations. Participants learned about automation, continuous integration/delivery, and infrastructure as code. Through workshops and discussions, they discovered how AWS services like CodePipeline, CodeDeploy, and CloudFormation can make development faster and more efficient.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CYBERSECURITY TRACK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the Cybersecurity track, attendees got a comprehensive look at how to keep cloud environments safe from cyber threats. Led by experts, sessions covered topics like identity management, data encryption, and threat detection. Attendees learned practical ways to use AWS services like IAM, KMS, and WAF to beef up security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SUSTAINABILITY AND ENVIRONMENT TRACK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lastly, the Sustainability track focused on how AWS is making a positive impact on the environment through its cloud infrastructure. Sessions explored AWS's efforts in renewable energy and reducing carbon footprint. Attendees learned how organizations can use AWS services to build eco-friendly solutions and heard inspiring stories of businesses integrating sustainability into their cloud projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS ONLINE DEEPRACER COMPETITION&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As the AWS Community Day Kenya 2024 was winding down, things heated up for the AWS DeepRacer competition, capping off weeks of buildup and excitement. This fun event brought together people from different backgrounds, all pumped up to show off their machine learning and racing skills.&lt;/p&gt;

&lt;p&gt;Leading up to the competition, participants spent more than a month getting ready, fine-tuning their DeepRacer models to perfection. With the help of mentors and AWS Solution Architect Sello Tseka, they tackled tricky algorithms and polished their racing strategies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7l2lp6olqg3mpviery8b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7l2lp6olqg3mpviery8b.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the big moment finally arrived, the tension was thick in the air as the three winning teams emerged victorious. Their hard work paid off big time, and the DeepRacer competition not only showed off their tech skills but also brought the AWS community closer together.&lt;/p&gt;

&lt;p&gt;This success story of the DeepRacer competition highlighted just how much innovation and creativity can come from machine learning and AI. As the day came to a close, participants left feeling proud and excited to keep exploring the endless possibilities of cloud computing and beyond.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CONCLUSION&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As Kenya strides forward in its digital journey, events like the AWS Community Day play a crucial role in driving innovation and excellence in cloud computing. The AWS User-group Kenya has been instrumental in fostering a supportive community of AWS users and advocates, ultimately propelling Kenya towards a future powered by the endless possibilities of the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REFERENCE&lt;/strong&gt;&lt;br&gt;
 &lt;a href="https://awsusergroupkenya.co.ke/" rel="noopener noreferrer"&gt;AWS USERGROUP KENYA&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/RKB-TKCKJEE?si=9ENajD3wzMfvWKZM" rel="noopener noreferrer"&gt;JEFF BARR KEYNOTE&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/rk9QBMM7sWQ?si=l1PcJnicPZ6ptml3" rel="noopener noreferrer"&gt;ROBIN NJIRU KEYNOTE&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/_KSoUUH6VU4?si=nY5Jj8l3s-vVlwHi" rel="noopener noreferrer"&gt;ENG. JOHN TANUI KEYNOTE&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/VCj7Wce7SjY?si=8fGK2vi5UrJttdiM" rel="noopener noreferrer"&gt;DR. AMINAH ZAWEDDE KEYNOTE&lt;/a&gt;&lt;/p&gt;

</description>
      <category>awscommunity</category>
      <category>awscommunitydayke</category>
      <category>aws</category>
      <category>innovation</category>
    </item>
    <item>
      <title>The Power of Generative AI for Tomorrow's Tech Careers</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Wed, 17 Apr 2024 10:36:15 +0000</pubDate>
      <link>https://dev.to/aws-builders/the-power-of-generative-ai-for-tomorrows-tech-careers-50hn</link>
      <guid>https://dev.to/aws-builders/the-power-of-generative-ai-for-tomorrows-tech-careers-50hn</guid>
      <description>&lt;p&gt;In today's fast-paced world of technology, there's an incredible force shaking up how we work and what we can achieve: Generative Artificial Intelligence, or GenAI. It's not just another tool; it's like a spark igniting innovation, changing how we see and interact with technology.&lt;/p&gt;

&lt;p&gt;Imagine this: humans teaming up with super-smart machines, creating endless possibilities. At the core of this change is Generative AI, a type of artificial intelligence that lets machines learn, adapt, and even create things all on their own. Unlike older AI systems that follow strict rules and patterns, Generative AI uses deep learning to come up with brand-new stuff, like pictures, music, stories, and more.&lt;/p&gt;

&lt;p&gt;The really cool thing about Generative AI is how it gets our creative juices flowing and brings different people together. In the world of tech jobs, it's like a big shake-up, offering new roles and chances. Instead of just doing the same old stuff, professionals can now explore and invent, using GenAI to boost their skills and make their ideas real.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6n8hhs5oa38bvogsg1q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6n8hhs5oa38bvogsg1q.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's even better is how Generative AI is opening up technology to everyone. You don't need to be a coding whiz or a data expert to use AI anymore. With easy-to-use tools and platforms, people from all backgrounds can tap into GenAI's power. Whether you're an artist, a musician, a writer, or a scientist, Generative AI welcomes you to a world where creativity has no limits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ksfuaddl5t7boajbl7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ksfuaddl5t7boajbl7p.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But there's more: Generative AI is shaking up how we think about work. As robots take over some tasks, it's time for us to team up with them and make the most of new technologies. Instead of worrying about losing our jobs, those who understand Generative AI are leading the charge, driving innovation and change.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyudyjo4f2n3iasfv45p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyudyjo4f2n3iasfv45p.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The future of tech careers isn't about machines replacing us; it's about working together to make amazing things happen. By embracing Generative AI, we can explore new ideas, try out new things, and break free from old job roles. It's a chance to redefine what's possible and make technology work for us, not against us.&lt;br&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt; &lt;br&gt;
So let's dive into the world of Generative AI together! Whether you're a seasoned pro or just getting started, there's never been a better time to explore this exciting new frontier. Join us as we unlock the full potential of Generative AI and create a future where innovation knows no bounds.&lt;br&gt;
&lt;strong&gt;REFERENCE&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/generative-ai/" rel="noopener noreferrer"&gt;https://aws.amazon.com/generative-ai/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>genai</category>
      <category>techcareer</category>
      <category>aws</category>
      <category>ai</category>
    </item>
    <item>
      <title>Generative AI with Bedrock and Party Rock</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Fri, 05 Apr 2024 14:22:02 +0000</pubDate>
      <link>https://dev.to/adelinemakokha/generative-ai-with-bedrock-and-party-rock-73l</link>
      <guid>https://dev.to/adelinemakokha/generative-ai-with-bedrock-and-party-rock-73l</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the ever-evolving landscape of artificial intelligence, the emergence of generative models has captured the imagination of researchers and enthusiasts alike. One such groundbreaking combination is the fusion of Bedrock and Party Rock, two powerful tools that promise to redefine the possibilities of generative AI. In this blog post, we'll explore the synergy between Bedrock and Party Rock, delving into their individual strengths and how their integration opens up new horizons in the world of AI-generated content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding Bedrock:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bedrock, a robust framework for generative models, provides a solid foundation for creating AI systems that excel in tasks such as image generation, text completion, and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3geegviq7wrsqgfombmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3geegviq7wrsqgfombmd.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Its versatility lies in its ability to adapt to various domains, making it a go-to choice for developers seeking to push the boundaries of what AI can achieve. With Bedrock, creating sophisticated and realistic generative content becomes an exciting venture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Power of Party Rock:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the other side of the spectrum, Party Rock introduces an element of creativity and dynamism to the generative AI landscape. &lt;br&gt;
Developed as a toolkit for enhancing the expressiveness of AI-generated content, Party Rock injects a sense of spontaneity and flair into the creations. This tool is particularly adept at infusing generative models with a touch of randomness, making the output more engaging and unpredictable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synergy in Action:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When Bedrock and Party Rock join forces, the result is a harmonious blend of structure and creativity. Bedrock provides the robust foundation, ensuring the generated content maintains coherence and relevance, while Party Rock adds the spark of innovation and originality. The synergy between these two tools results in AI-generated content that not only meets the criteria of accuracy and relevance but also possesses a unique and captivating edge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applications in Various Domains:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The integration of Bedrock and Party Rock opens up a myriad of applications across different domains. From generating lifelike images for virtual environments to creating compelling narratives in the field of natural language processing, the combined power of these tools has the potential to revolutionize industries ranging from entertainment and gaming to education and beyond.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges and Future Developments:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As with any technological advancement, the marriage of Bedrock and Party Rock comes with its set of challenges. Fine-tuning the balance between structure and creativity, addressing ethical considerations, and ensuring the responsible use of generative AI are among the key challenges that researchers and developers are actively working to overcome.&lt;/p&gt;

&lt;p&gt;Looking ahead, the future developments in generative AI using Bedrock and Party Rock hold immense promise. As these tools continue to evolve, we can anticipate even more sophisticated and nuanced AI-generated content that pushes the boundaries of what we thought possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generative AI has reached new heights with the amalgamation of Bedrock and Party Rock. The union of structure and creativity not only enhances the capabilities of generative models but also opens up a world of possibilities across diverse industries. As researchers and developers continue to explore the potential of these tools, we find ourselves on the brink of a new era in AI, where the line between human creativity and machine-generated content becomes increasingly blurred. The future is indeed exciting, and the journey into the realm of generative AI with Bedrock and Party Rock is just beginning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REFERENCE&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/bedrock/" rel="noopener noreferrer"&gt;https://aws.amazon.com/bedrock/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Say Hello to the Automated Testing Assistant by Party Rock</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Fri, 05 Apr 2024 12:40:23 +0000</pubDate>
      <link>https://dev.to/aws-builders/say-hello-to-the-automated-testing-assistant-by-party-rock-26m0</link>
      <guid>https://dev.to/aws-builders/say-hello-to-the-automated-testing-assistant-by-party-rock-26m0</guid>
      <description>&lt;p&gt;In the ever-changing world of software development, finding effective ways to test and ensure reliability is an ongoing challenge. But fear not – the Automated Testing Assistant, powered by Party Rock, has arrived, promising to shake up the world of test automation. In this article, I'll dive into what makes the Automated Testing Assistant tick and how it's changing the game by generating test cases, managing data, creating checklists, offering insightful reports, optimizing code, handling exceptions, and even making bug reporting a breeze.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features of Automated Testing Assistant&lt;/strong&gt;&lt;br&gt;
 &lt;strong&gt;1.Generating Test Cases and Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Say goodbye to the headache of creating test cases manually. The Automated Testing Assistant is a wizard at generating smart, all-encompassing test scenarios. Thanks to Party Rock's magic touch, it ensures your tests cover a wide range of situations, checking the resilience of your software under various conditions. And it doesn't stop there – it also helps whip up relevant test data to make sure your testing is as thorough as it gets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Checklist Creation for Hassle-Free Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Efficient testing requires a solid plan, and the app is the expert checklist creator you need. Tailoring detailed checklists to your application, it becomes the roadmap for your testing journey, ensuring every nook and cranny of your software gets the attention it deserves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Insightful Reports for Smarter Decisions&lt;/strong&gt;&lt;br&gt;
No more guesswork after running tests. Party Rock's Automated Testing Assistant goes the extra mile by delivering detailed reports that provide a 360-degree view of your test results. Developers and QA teams can quickly spot and tackle issues, armed with the kind of analytics that make continuous improvement a breeze.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadcm8fc8uglhvjl7y1g2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadcm8fc8uglhvjl7y1g2.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Optimizing and Refactoring for Cleaner Code&lt;/strong&gt;&lt;br&gt;
Recognizing the importance of clean code in the testing process, the app lends a helping hand in optimizing and refactoring code snippets. Not only does this boost the efficiency of your test scripts, but it also contributes to the overall maintainability of your software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.Exception Handling Made Simple&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Keeping your software stable is a priority, and the app is there to guide developers in setting up robust exception handling. Say goodbye to unexpected issues causing havoc during testing – this assistant has your back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.Seamless Bug Reporting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Spot a bug? Reporting it is now a walk in the park. The Automated Testing Assistant streamlines the bug reporting process with a user-friendly interface directly integrated into your testing environment. This means quicker bug resolution, paving the way for faster software delivery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwp14k7vr096ivykpvjs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwp14k7vr096ivykpvjs.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Future of Software Testing&lt;/strong&gt;&lt;br&gt;
As we navigate the ever-changing landscape of software development, the Automated Testing Assistant powered by Party Rock emerges as your trusty companion. From generating test cases to optimizing code and everything in between, it's changing the way we approach test automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REFERENCE&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS NewsBlog: &lt;a href="https://aws.amazon.com/blogs/aws/build-ai-apps-with-partyrock-and-amazon-bedrock/" rel="noopener noreferrer"&gt;https://aws.amazon.com/blogs/aws/build-ai-apps-with-partyrock-and-amazon-bedrock/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
The Automated Testing Assistant is proof of Party Rock's transformative impact on testing processes. As technology marches forward, embracing innovative solutions like this promises to take the software development industry to new heights of precision, agility, and reliability. The road to automated excellence has never looked more promising and exciting!&lt;/p&gt;

&lt;p&gt;PartyRock Website: &lt;a href="https://partyrock.aws/" rel="noopener noreferrer"&gt;https://partyrock.aws/&lt;/a&gt;&lt;br&gt;
Check out the snapshot from the app here:&lt;a href="https://partyrock.aws/u/Adele/c315JA0ho/Automated-Testing-Assistant" rel="noopener noreferrer"&gt;https://partyrock.aws/u/Adele/c315JA0ho/Automated-Testing-Assistant&lt;/a&gt;&lt;/p&gt;

</description>
      <category>genai</category>
      <category>awscommunity</category>
      <category>partyrock</category>
    </item>
    <item>
      <title>Tailoring AI Solutions for Your Business Success</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Sat, 02 Mar 2024 11:48:50 +0000</pubDate>
      <link>https://dev.to/aws-builders/tailoring-ai-solutions-for-your-business-success-492b</link>
      <guid>https://dev.to/aws-builders/tailoring-ai-solutions-for-your-business-success-492b</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the rapidly advancing landscape of artificial intelligence, AWS Bedrock stands out as a game-changer, offering a diverse range of features that empower businesses to harness the full potential of generative models. &lt;/li&gt;
&lt;li&gt;This article delves into the key aspects of AWS Bedrock, exploring its broad choice of foundation models, the ability to customize model responses for business needs, private customization with proprietary data, knowledge bases, guardrails, batch mode, and model evaluation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Broad Choice of Foundation Models:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Bedrock provides a comprehensive selection of foundation models, laying the groundwork for various AI applications. Whether your focus is on natural language processing, image generation, or other tasks, Bedrock's array of models allows you to choose the foundation that aligns perfectly with your business objectives.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ctcdfafxy15f9c4gqg0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ctcdfafxy15f9c4gqg0.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customizing Model Responses for Your Business:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tailoring AI responses to meet the specific needs of your business is a hallmark feature of AWS Bedrock.&lt;/li&gt;
&lt;li&gt;The platform offers customization options that enable you to fine-tune model behavior, ensuring that the generated content aligns seamlessly with your brand, industry, or unique use case.
You can use the raw data to maintain the accuracy of the foundation model for the domain through continued pre-training.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxzisx5dgp5ziqi4aumx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxzisx5dgp5ziqi4aumx.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privately Customize Models with Your Data:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security and privacy are paramount concerns in the world of AI, and AWS Bedrock addresses these issues by allowing businesses to privately customize models with their proprietary data.&lt;/li&gt;
&lt;li&gt;This ensures that sensitive information remains within the confines of your organization, providing a secure and compliant environment for AI model development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqtm0tijf0p0okw6soyr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqtm0tijf0p0okw6soyr.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge Bases for Amazon Bedrock:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Knowledge bases within AWS Bedrock serve as repositories of information, enhancing the model's understanding and decision-making capabilities. &lt;/li&gt;
&lt;li&gt;Leveraging knowledge bases allows businesses to augment the generative process with contextually rich data, resulting in more sophisticated and context-aware AI responses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Guardrails for Amazon Bedrock:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To ensure responsible and ethical AI use, AWS Bedrock includes guardrails that help guide the development and deployment of generative models.&lt;/li&gt;
&lt;li&gt;These guardrails serve as checks and balances, promoting adherence to ethical standards and preventing unintended consequences in AI-generated content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Batch Mode Amazon Bedrock:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The batch mode feature in AWS Bedrock facilitates the processing of multiple inputs simultaneously, streamlining workflows and improving efficiency.&lt;/li&gt;
&lt;li&gt;This capability is particularly beneficial for businesses dealing with large datasets or requiring bulk processing of AI tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Model Evaluation on Amazon Bedrock:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ensuring the accuracy and effectiveness of generative models is essential, and AWS Bedrock simplifies this process with robust model evaluation tools.&lt;/li&gt;
&lt;li&gt;Businesses can assess the performance of their AI models, refine them based on real-world data, and continuously improve the quality of generated content.&lt;/li&gt;
&lt;li&gt;With Amazon Bedrock one can use the trained model to generate new images. for example image of Maasai village in Kenya.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7siq3vkvy46abzryaeh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7siq3vkvy46abzryaeh8.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Bedrock emerges as a powerful and flexible solution for businesses seeking to integrate generative AI into their operations.&lt;/li&gt;
&lt;li&gt;It does the heavy lifting from the model customization process.&lt;/li&gt;
&lt;li&gt;With its broad choice of foundation models, customization options, private customization with proprietary data, knowledge bases, guardrails, batch mode, and model evaluation features, AWS Bedrock empowers organizations to harness the true potential of AI while maintaining control, security, and ethical standards.&lt;/li&gt;
&lt;li&gt;As businesses navigate the evolving landscape of AI, AWS Bedrock stands as a reliable foundation for success.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;REFERENCE&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/bedrock/" rel="noopener noreferrer"&gt;https://aws.amazon.com/bedrock/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>genai</category>
      <category>amazonbedrock</category>
    </item>
    <item>
      <title>Amazon Elastic File System</title>
      <dc:creator>Adeline Makokha [AWS Hero]</dc:creator>
      <pubDate>Wed, 12 Oct 2022 05:35:28 +0000</pubDate>
      <link>https://dev.to/aws-builders/amazon-elastic-file-system-2fpi</link>
      <guid>https://dev.to/aws-builders/amazon-elastic-file-system-2fpi</guid>
      <description>&lt;p&gt;• Amazon EFS is a serverless, scalable, high-performance file system in the cloud. &lt;/p&gt;

&lt;p&gt;• EFS file systems can be accessed by Amazon EC2 Linux instances, Amazon ECS, Amazon EKS, AWS Fargate, and AWS Lambda functions via a file system interface such as NFS protocol. &lt;/p&gt;

&lt;p&gt;• Amazon EFS supports file system access semantics such as strong consistency and file locking. &lt;/p&gt;

&lt;p&gt;• EFS file systems can automatically scale in storage to handle petabytes of data. With Bursting mode, the throughput available to a file system scales as a file system grows. Provisioned Throughput mode allows you to provision a constant file system throughput independent of the amount of data stored. &lt;/p&gt;

&lt;p&gt;• EFS file systems can be concurrently accessed by thousands of compute services without sacrificing performance. &lt;/p&gt;

&lt;p&gt;• Common use cases for EFS file systems include big data and analytics workloads, media processing workflows, content management, web serving, and home directories. &lt;/p&gt;

&lt;p&gt;• Amazon EFS has four storage classes: Standard, Standard Infrequent Access, One Zone, and One Zone Infrequent Access &lt;/p&gt;

&lt;p&gt;• You can create lifecycle management rules to move your data from standard storage classes to infrequent access storage classes. &lt;/p&gt;

&lt;p&gt;• Every EFS file system object of Standard storage is redundantly stored across multiple AZs. &lt;/p&gt;

&lt;p&gt;• EFS offers the ability to encrypt data at rest and in transit. Data encrypted at rest using AWS KMS for encryption keys. Data encryption in transit uses TLS 1.2 &lt;/p&gt;

&lt;p&gt;• To access EFS file systems from on-premises, you must have an AWS Direct Connect or AWS VPN connection between your on-&lt;br&gt;
premises datacenter and your Amazon VPC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon FSx for Windows File Server&lt;/strong&gt; &lt;br&gt;
• Amazon FSx for Windows File Server is a fully managed, scalable file storage that is accessible over SMB protocol.  &lt;/p&gt;

&lt;p&gt;• Since it is built on Windows Server, it natively supports administrative features such as user quotas, end-user file restore, and Microsoft Active Directory integration. &lt;/p&gt;

&lt;p&gt;• FSx for WFS is accessible from Windows, Linux, and MacOS compute instances and devices. Thousands of compute instances and devices can access a file system concurrently. &lt;/p&gt;

&lt;p&gt;• FSx  for WFS can connect your file system to Amazon EC2, Amazon ECS, VMware Cloud on AWS, Amazon WorkSpaces, and Amazon AppStream 2.0 instances. &lt;/p&gt;

&lt;p&gt;• Every file system comes with a default Windows file share, named “share”. &lt;/p&gt;

&lt;p&gt;• Common use cases for FSx for WFS include CRM, ERP, custom or .NET applications, home directories, data analytics, media and entertainment workflows, software build environments, and Microsoft SQL Server. &lt;/p&gt;

&lt;p&gt;• You can access FSx file systems from your on-premises environment using an AWS Direct Connect or AWS VPN connection between your on-premises datacenter and your Amazon VPC.  &lt;/p&gt;

&lt;p&gt;• You can choose the storage type for your file system: SSD storage for latency-sensitive workloads or workloads requiring the highest levels of IOPS/throughput. HDD storage for throughput-focused workloads that aren’t latency-sensitive. &lt;/p&gt;

&lt;p&gt;• Every FSx for WFS ﬁle system has a throughput capacity that you conﬁgure when the ﬁle system is created and that you can change at any time. &lt;/p&gt;

&lt;p&gt;• Each Windows File Server file system can store up to 64 TB of data. You can only manually increase the storage capacity. &lt;/p&gt;

&lt;p&gt;• Your file system can be deployed in multiple AZs or a single AZ only. Multi-AZ file systems provide automatic failover. &lt;/p&gt;

&lt;p&gt;• FSx for Windows File Server always encrypts your file system data and your backups at-rest using keys you manage through AWS KMS. Data-in-transit encryption uses SMB Kerberos session keys. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon FSx for Lustre&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;• Amazon FSx for Lustre is a serverless file system that runs on Lustre ー an open-source, high-performance file system. &lt;/p&gt;

&lt;p&gt;• The Lustre file system is designed for applications that require fast storage. FSx for Lustre file systems can scale to hundreds of GB/s of throughput and millions of IOPS. FSx for Lustre also supports concurrent access to the same file or directory from thousands of compute instances. &lt;/p&gt;

&lt;p&gt;• Unlike EFS, storage capacity needs to be manually increased, and only every six hours can you do so. &lt;/p&gt;

&lt;p&gt;• Amazon FSx for Lustre also integrates with Amazon S3, which lets you process cloud data sets with the Lustre high-performance file system. &lt;/p&gt;

&lt;p&gt;• Common use cases for Lustre include machine learning, high-performance computing (HPC), video processing, financial modeling, genome sequencing, and electronic design automation (EDA). &lt;/p&gt;

&lt;p&gt;• FSx for Lustre can only be used by Linux-based instances. To access your file system, you first install the open-source Lustre client on that instance. Then you mount your file system using standard Linux commands. Lustre file systems can also be used with Amazon EKS and AWS Batch. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FSx for Lustre provides two deployment options:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Scratch file systems are for temporary storage and shorter-term processing of data. Data is not replicated and does not persist if a file server fails. &lt;/p&gt;

&lt;p&gt;Persistent file systems are for longer-term storage and workloads. The file servers are highly available, and data is automatically replicated within the AZ that is associated with the file system. &lt;/p&gt;

&lt;p&gt;• You can choose the storage type for your file system: SSD storage for latency-sensitive workloads or workloads requiring the highest levels of IOPS/throughput. HDD storage for throughput-focused workloads that aren’t latency-sensitive. &lt;/p&gt;

&lt;p&gt;• FSx for Lustre always encrypts your file system data and your backups at-rest using keys you manage through AWS KMS. FSx encrypts data-in-transit when accessed from supported EC2 instances&lt;/p&gt;

</description>
      <category>amazon</category>
      <category>efs</category>
      <category>fsx</category>
    </item>
  </channel>
</rss>
