<?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: Rini Susan V S</title>
    <description>The latest articles on DEV Community by Rini Susan V S (@rinisvs).</description>
    <link>https://dev.to/rinisvs</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%2F2941959%2Ff68023f9-651c-49e3-b2cc-bd5066933247.jpg</url>
      <title>DEV Community: Rini Susan V S</title>
      <link>https://dev.to/rinisvs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rinisvs"/>
    <language>en</language>
    <item>
      <title>Why Local AI Was the Real Winner of Google I/O 2026 (An Insider’s Take)</title>
      <dc:creator>Rini Susan V S</dc:creator>
      <pubDate>Sun, 24 May 2026 07:41:13 +0000</pubDate>
      <link>https://dev.to/rinisvs/why-local-ai-was-the-real-winner-of-google-io-2026-an-insiders-take-3o4d</link>
      <guid>https://dev.to/rinisvs/why-local-ai-was-the-real-winner-of-google-io-2026-an-insiders-take-3o4d</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19"&gt;Google I/O Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There is nothing quite like the energy of Shoreline Amphitheatre in May. This year on May 19, sitting there surrounded by thousands of developers, I realized that the collective vibe has changed from LLMs to Agentic AI.&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%2Fbblmvvkb9s10cxeufrx0.jpg" 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%2Fbblmvvkb9s10cxeufrx0.jpg" alt=" " width="800" height="787"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was my third time attending Google I/O in person. My first year felt like an overwhelming introduction to the raw capabilities of Generative AI. Second was dominated by the excitement to plug LLMs into software and cloud. Walking into Shoreline for my third time this year, the atmosphere felt different; It was less about "wow" moments and much about "real tools to solve real problems".&lt;/p&gt;




&lt;h2&gt;
  
  
  The Keynote, in Brief
&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%2F7p74zia280vlf6j0u2rp.jpg" 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%2F7p74zia280vlf6j0u2rp.jpg" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The two-hour keynote was packed. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 3.5 Flash launched with frontier-level intelligence at less than half the price of comparable models. Running four times faster than preceding models, it's designed to be a high-speed background worker for the complex agent logic. &lt;/li&gt;
&lt;li&gt;Gemini Omni dropped as a multimodal "world model" that generates across video, audio, and text simultaneously, and it's already rolling out to subscribers. &lt;/li&gt;
&lt;li&gt;Google AI Studio is coming to Android natively, allowing developers to prompt-build full applications, preview them in an embedded emulator, and cleanly export the entire codebase directly to GitHub or Android Studio.&lt;/li&gt;
&lt;li&gt;Antigravity 2.0; this agent-first workspace enables you to spin up independent subagents to debug and patch application code inside secure terminal sandboxes with built-in credential masking.&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%2Ffswvrdyc585428jpxigb.jpg" 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%2Ffswvrdyc585428jpxigb.jpg" alt=" " width="799" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you look past the flashy main-stage spectacles like Intelligent Eyewear, Gemini 3.5 Flash, Omni, and Antigravity, the real sleeper hit of I/O 2026 for developers is the Google AI Edge Gallery app and its native integration with the new Gemma 4 open-weight model family.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google AI Edge Gallery
&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%2F5l0xfcr08tcjufhx3a1o.jpg" 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%2F5l0xfcr08tcjufhx3a1o.jpg" alt=" " width="800" height="1183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Edge Gallery&lt;/strong&gt; runs Google's open model - Gemma 4 entirely on your device with no internet connection, no API keys, and 100% data privacy. It leverages the fast prefill capabilities of the new LiteRT-LM engine to run on local CPU, GPU, and NPU hardware.&lt;/p&gt;

&lt;p&gt;The real magic comes from the edge-optimized Gemma 4 E2B (Effective 2 Billion) and E4B (Effective 4 Billion) variants. Using a distinct per-layer embedding architecture, they keep a tiny memory footprint while pulling off fast execution speeds—clocking over 3,000 tokens per second on modern phone hardware.&lt;/p&gt;

&lt;p&gt;That alone is interesting to developers. But what landed at I/O 2026 is what makes it genuinely exciting: MCP support, notification-triggered routines, and persistent chat history. Together they turn a model playground into something that looks a lot like a real agentic app.&lt;/p&gt;

&lt;h4&gt;
  
  
  MCP on Your Phone
&lt;/h4&gt;

&lt;p&gt;The big one for me is Model Context Protocol (MCP) integration, available now on Android. The reasoning happens entirely on your phone. Your data doesn't have to leave the device to decide what to do with it.&lt;br&gt;
Google has published example configurations and technical documentation on their GitHub repo -(&lt;a href="https://github.com/google-ai-edge/gallery/tree/main/mcp" rel="noopener noreferrer"&gt;https://github.com/google-ai-edge/gallery/tree/main/mcp&lt;/a&gt;). &lt;/p&gt;

&lt;h4&gt;
  
  
  Notification-Triggered Routines
&lt;/h4&gt;

&lt;p&gt;Before this update, every interaction with the app was reactive. The new "Schedule Notification" skill changes that. Tell the agent "generate a daily morning calendar briefing" and it sets a local notification. Tapping the notification opens the app straight to the required tool with Gemma 4 ready to go, cutting context-switching down to zero. It depicts the shift from AI as a tool you go to, toward AI as something that comes to you on a schedule you control.&lt;/p&gt;

&lt;h4&gt;
  
  
  Persistent Chat History
&lt;/h4&gt;

&lt;p&gt;The app now supports persistent chat history — you can close it and pick up exactly where you left off, including text, images, and audio. What makes this work is the LiteRT-LM backend's fast prefill capability: on modern phone GPUs, it can process over 3,000 tokens per second. That means even restoring a long conversation context happens almost instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is the Announcement I'm Most Excited About
&lt;/h2&gt;

&lt;p&gt;The gap between "this is impressive" and "this is running on my actual phone, privately, doing something useful" is enormous. AI Edge Gallery is the rare announcement that closes that gap by design. MCP reasoning, routines, persistent sessions — runs locally, without your data leaving the device. The inference doesn't hit a server. You don't need an API key or a subscription tier to access it.&lt;br&gt;
For developers specifically: the MCP integration means you can wire up whatever tools you care about and let an on-device model coordinate across them. The open-source skills system means you can share what you build. &lt;/p&gt;

&lt;p&gt;Download it on &lt;a href="https://play.google.com/store/apps/details?id=com.google.ai.edge.gallery" rel="noopener noreferrer"&gt;Android&lt;/a&gt; or &lt;a href="https://apps.apple.com/us/app/google-ai-edge-gallery/id6749645337" rel="noopener noreferrer"&gt;iOS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Google AI Edge Gallery is proof that privacy and zero-latency are no longer just talking points for future roadmaps — they are practical, fully functional, and sitting right on our mobile devices today.&lt;/p&gt;

&lt;p&gt;What was your standout announcement from Google I/O 2026? Are you diving into cloud agents with Antigravity or testing local MCP skills on your device?&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
      <category>googleio</category>
      <category>edgeai</category>
    </item>
    <item>
      <title>Tying It All Together : How Strands Agents Enhance Retail Agent Performance Analysis</title>
      <dc:creator>Rini Susan V S</dc:creator>
      <pubDate>Tue, 30 Sep 2025 07:45:21 +0000</pubDate>
      <link>https://dev.to/aws-builders/tying-it-all-together-how-strands-agents-weave-together-retail-performance-analysis-50p4</link>
      <guid>https://dev.to/aws-builders/tying-it-all-together-how-strands-agents-weave-together-retail-performance-analysis-50p4</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Strands Agents is a simple-to-use, code-first framework for building agents. It is an open-source SDK by Amazon Web Services [AWS]. Strands comprise three key components: a language model, a system prompt, and a set of tools. Strands supports multiple agent architecture patterns, scaling from a single agent up to complex networks of agents.&lt;/p&gt;

&lt;p&gt;Strands is not tied to a single LLM provider, and can work with models on Amazon Bedrock by default. It also supports open source models such as LlamaAPI, Ollama, OpenAI, and others. Strands supports running agents in various environments – including Amazon EC2, AWS Lambda, AWS Fargate, and Amazon Bedrock AgentCore.&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%2F69gqurb9v2nx0hw2myuw.jpg" 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%2F69gqurb9v2nx0hw2myuw.jpg" alt=" " width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Software performance testing evaluates how retail applications behave under various workloads and conditions, ensuring a reliable customer experience. This is crucial for systems such as e-commerce platforms, point-of-sale systems, and inventory management. Identifying and resolving performance bottlenecks before they impact users minimizes lost sales.&lt;/p&gt;

&lt;p&gt;The rise of Large Language Models [LLMs] and Generative AI presents new challenges for performance testing and engineering. Unlike traditional applications, testers now deal with dynamic, context-aware AI agents that interact with different knowledge bases and tools. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Use Case: A Retail Customer Support Agent
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Preamble&lt;/strong&gt;&lt;br&gt;
Imagine a customer support agent for an e-commerce company that&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Answer policy questions by searching the Knowledge Base&lt;/li&gt;
&lt;li&gt;Check order status by calling an API through an Action Group.&lt;/li&gt;
&lt;li&gt;Consolidate information and provide a helpful response to the customer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In production, performance is critical, and even a 10-second delay can lead to a frustrated customer and a lost sale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Performance Puzzle&lt;/strong&gt;&lt;br&gt;
The total time a user waits for an answer is the sum of several processes. The Strands Agents framework provides visibility to understand each of these steps. The agent's trace usually includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Orchestration &amp;amp; Reasoning: The agent's underlying Foundation Model (FM) interprets the user's prompt and decides what to do.&lt;/li&gt;
&lt;li&gt;Knowledge Base Retrieval: If it's a policy question, the agent queries the knowledge base.&lt;/li&gt;
&lt;li&gt;Action Group Invocation: To check an order, the agent triggers a Lambda function that calls an internal Order Status API.&lt;/li&gt;
&lt;li&gt;Final Response Generation: The retrieved information is passed back to the LLM, which generates the final response.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Strands Agents in Action
&lt;/h2&gt;

&lt;p&gt;The Jupyter Notebook walks through the process of creating an Agent, based on the e-commerce customer support use case described earlier.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;An active AWS account.&lt;/li&gt;
&lt;li&gt;An Amazon Bedrock Agent created with:&lt;/li&gt;
&lt;li&gt;A Knowledge Base attached&lt;/li&gt;
&lt;li&gt;An Action Group configured to invoke a Lambda function for checking order status.&lt;/li&gt;
&lt;li&gt;The agentId and agentAliasId of your created agent.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;boto3&lt;/code&gt; library installed and configured with appropriate IAM permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Helper Function to Invoke the Agent&lt;/strong&gt;&lt;br&gt;
Using the Strands SDK's tool interfaces, we can build our own custom tools. Any Python function can be used as a tool by using the @tool decorator.&lt;br&gt;
Create a reusable function to invoke our agent. This function will capture the agent's response and also the full trace of its internal operations, which is crucial for performance analysis.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from strands.tools import tool
@tool
def invoke_bedrock_agent(prompt: str, session_id: str):
    """
    Invokes the Bedrock agent, captures the response, and returns the full event stream.

    Args:
        prompt (str): The user's query for the agent.
        session_id (str): A unique identifier for the conversation session.

    Returns:
        list: A list of all events received from the agent's response stream.
    """
    print(f"\nUser prompt: '{prompt}'")

    events = []
    start_time = time.time()

    try:
        response = bedrock_agent_runtime_client.invoke_agent(
            agentId=AGENT_ID,
            agentAliasId=AGENT_ALIAS_ID,
            sessionId=session_id,
            inputText=prompt,
            enableTrace=True # CRITICAL: This enables the detailed trace!
        )

        event_stream = response['completion']
        for event in event_stream:
            events.append(event)

        final_response = ""

        trace_data = None
        # Extract the final response and the trace data
        for event in events:
          if 'chunk' in event:
            final_response += event['chunk']['bytes'].decode('utf-8')
          if 'trace' in event:
            trace_data = event['trace']['trace']

    except Exception as e:
        print(f"An error occurred: {e}")
        return None
    finally:
        end_time = time.time()
        print("")
        print(f"Total Latency: {end_time - start_time:.2f} seconds")

    return events
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Performance Test Scenarios&lt;/strong&gt;&lt;br&gt;
Let’s run a few tests to establish a baseline for different types of queries.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Scenario A: Knowledge Base Query&lt;br&gt;
This tests the agent's ability to retrieve information from the attached knowledge base. The primary latency here will be in the &lt;code&gt;Retrieve&lt;/code&gt; step.&lt;br&gt;
&lt;code&gt;session_id_kb = str(uuid.uuid4())&lt;br&gt;
prompt_kb = "What is the return policy for clothes?"&lt;br&gt;
kb_events = invoke_bedrock_agent(prompt_kb, session_id_kb)&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scenario B: Action Group Query (API Call)&lt;br&gt;
This tests the agent's ability to invoke an external tool (our order status Lambda). Latency will be a combination of reasoning and the actual Lambda/API execution time.&lt;br&gt;
&lt;code&gt;session_id_ag = str(uuid.uuid4())&lt;br&gt;
prompt_ag = "Can you check the status for order #B-98765?"&lt;br&gt;
ag_events = invoke_bedrock_agent(prompt_ag, session_id_ag)&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Analyzing the Performance Trace&lt;/strong&gt;&lt;br&gt;
The real value comes from parsing the &lt;code&gt;trace&lt;/code&gt; data returned in the event stream. Create a function, trace_analysis() to extract and analyze this data, and use @tool decorator.&lt;/p&gt;

&lt;p&gt;Invoke the trace_analysis function with knowledge base events and action group events data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;def trace_analysis(kb_events)&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%2Fn1x10imc1x7i0bzohkv4.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%2Fn1x10imc1x7i0bzohkv4.png" alt=" " width="609" height="215"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;def trace_analysis(ag_events)&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%2Fh1tdkrn3d74mh62n4826.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%2Fh1tdkrn3d74mh62n4826.png" alt=" " width="611" height="246"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Strands Agent Function&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import strands&lt;br&gt;
from strands import Agent&lt;br&gt;
agent = Agent(&lt;br&gt;
tools=[trace_analysis,invoke_bedrock_agent]&lt;br&gt;
)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strands Agent - Knowledge Base Query&lt;/strong&gt;&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%2F035oqipijwbim55kr4ao.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%2F035oqipijwbim55kr4ao.png" alt=" " width="598" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strands Agent – Lambda Function Invocation&lt;/strong&gt;&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%2Ffzibtrpe0cvyk99nuwjt.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%2Ffzibtrpe0cvyk99nuwjt.png" alt=" " width="549" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CloudWatch Monitoring
&lt;/h2&gt;

&lt;p&gt;The token count and invocation latency can also be observed in AWS Cloud Watch, under GenAI Observability section.&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%2Fpkzr0otdloiiah5rase7.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%2Fpkzr0otdloiiah5rase7.png" alt=" " width="626" height="178"&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%2Fsbfspcrcyrp1y59bx3xm.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%2Fsbfspcrcyrp1y59bx3xm.png" alt=" " width="626" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Insights and Optimization Actions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Knowledge Base Bottleneck: If the "Knowledge Base Retrieval Time" is high, need to investigate the knowledge base settings. Are you retrieving too many chunks? Is the vector database under-provisioned?&lt;/li&gt;
&lt;li&gt;API Bottleneck: If the "Lambda/API Call Time" is high, the performance issue lies outside of Bedrock. You need to use tools like AWS X-Ray and CloudWatch Logs to optimize the Lambda function and any downstream services it calls.&lt;/li&gt;
&lt;li&gt;Model Latency: If "Final Response Generation Latency" is high, consider switching to a faster, more cost-effective model. Refine agent's instructions to produce more concise answers, thereby reducing the outputTokenCount.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://strandsagents.com/latest/documentation/docs/" rel="noopener noreferrer"&gt;https://strandsagents.com/latest/documentation/docs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/strands-agents/sdk-python" rel="noopener noreferrer"&gt;https://github.com/strands-agents/sdk-python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>aws</category>
      <category>performance</category>
      <category>llm</category>
    </item>
    <item>
      <title>Amazon Nova Canvas : opening up new canvases</title>
      <dc:creator>Rini Susan V S</dc:creator>
      <pubDate>Mon, 19 May 2025 07:28:26 +0000</pubDate>
      <link>https://dev.to/aws-builders/amazon-nova-canvas-opening-up-new-canvases-3mgi</link>
      <guid>https://dev.to/aws-builders/amazon-nova-canvas-opening-up-new-canvases-3mgi</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Amazon Nova is a new generation of foundation models available on Amazon Bedrock. Nova includes four understanding models, two creative content generation models, and one speech-to-speech model. The content generation models include Amazon Nova Canvas for image generation and Amazon Nova Reel for video generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon Nova Canvas
&lt;/h2&gt;

&lt;p&gt;Amazon Nova Canvas is an image generation model that creates professional-grade images from text and image inputs. Amazon Nova Canvas is ideal for various applications such as marketing and reporting. It supports features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text-to-image generation – Input a text prompt and generate an image as output.&lt;/li&gt;
&lt;li&gt;Image editing options – inpainting, outpainting, generating variations, and automatic editing.&lt;/li&gt;
&lt;li&gt;Color-guided content – input a list of hex color codes with a text prompt.&lt;/li&gt;
&lt;li&gt;Background removal – identifies multiple objects in the input image and removes the background.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Nova Canvas in Amazon Bedrock Playground
&lt;/h2&gt;

&lt;p&gt;It was a fun experience to try out the Nova Canvas model in the Amazon Bedrock playground. Being interested in photography, I wanted to evaluate how realistic the Nova model images were and know if the quality was similar to what Amazon claims.&lt;/p&gt;

&lt;p&gt;Below is an image of Yosemite National Park, which I have taken near the Tunnel View point. &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%2Fsqc6wuc7bigz8tbmgwdo.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%2Fsqc6wuc7bigz8tbmgwdo.png" alt="Image description" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I tried to generate a similar image in Amazon Bedrock Playground, using the Nova Canvas model.&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%2Fxk6pa3boz8nriok1jiui.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%2Fxk6pa3boz8nriok1jiui.png" alt="Image description" width="800" height="342"&gt;&lt;/a&gt;&lt;br&gt;
I was amazed to see how easily we could generate quality images using a few prompts. Yes, the experience of viewing the natural wonder in person is definitely rewarding. But time, effort, and cost factors are low in this option. The Amazon Canvas model can come in handy in case of weekly or monthly newsletters that need to have catchy cover pages or images related to a topic. &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%2Fk1gpvorr4x97jf98l034.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%2Fk1gpvorr4x97jf98l034.png" alt="Image description" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Nova Canvas in Python Notebook
&lt;/h2&gt;

&lt;p&gt;Amazon Nova also provides the option for image generation using Python notebooks, apart from the Bedrock playground. One method of invoking the Amazon Nova models is via the Invoke API.  Provided below is the Python code to generate the above image programmatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Install libraries
!pip install boto3

# Import necessary libraries
import base64
import json
import random
import boto3
from PIL import Image
import io
import os

# Get AWS Credentials from secrets
AWS_ACCESS_KEY_ID=os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY=os.getenv('AWS_SECRET_ACCESS_KEY')
AWS_DEFAULT_REGION=os.getenv('AWS_DEFAULT_REGION')

# Create a Bedrock Runtime client
client = boto3.client(
    "bedrock-runtime",
    region_name=AWS_DEFAULT_REGION,
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY
)

# Set the model ID for Nova Canvas
model_id = "amazon.nova-canvas-v1:0"

# Define the image generation prompt
prompt = "Generate a realistic-looking image of Yosemite from the tunnel view. The picture was taken during the summer season at noon."

# Generate a random seed
seed = 12

# Format the request payload
request_body = {
    "taskType": "TEXT_IMAGE",
    "textToImageParams": {"text": prompt},
    "imageGenerationConfig": {
        "seed": seed,
        "quality": "standard",
        "height": 1024,
        "width": 512,
        "numberOfImages": 1,
        "cfgScale": 8.0
    }
}

# Invoke the model
response = client.invoke_model(
    body=json.dumps(request_body),
    modelId=model_id,
    contentType="application/json",
    accept="application/json"
)
# Parse the response
response_body = json.loads(response["body"].read())
image_data = base64.b64decode(response_body["images"][0])

# Save the image
output_dir = "generated_images"
os.makedirs(output_dir, exist_ok=True)
output_path = os.path.join(output_dir, f"nova_canvas_image_{seed}.png")

image = Image.open(io.BytesIO(image_data))
image.save(output_path)
print(f"Image saved to: {output_path}")`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Security Guardrails in Amazon Nova
&lt;/h2&gt;

&lt;p&gt;The Nova Canvas model available through Amazon Bedrock comes with integrated security guardrails. Guardrails help evaluate user inputs and model responses based on specific policies and provide safeguards to help build generative AI applications securely. &lt;/p&gt;

&lt;p&gt;For example, if you try a non-safe prompt in Nova Canvas, the image won’t be generated, and a warning text message will be displayed as shown below.&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%2Fxav1whdf09kfr1298vlw.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%2Fxav1whdf09kfr1298vlw.png" alt="Image description" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Areas of Improvement
&lt;/h2&gt;

&lt;p&gt;The following are some features of Amazon Nova Canvas model, that needs enhancement&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input text size limit [ 1024 characters]&lt;/li&gt;
&lt;li&gt;Input image size limit [ longest side not exceeding 4096 pixels]&lt;/li&gt;
&lt;li&gt;No 3D image generation [ currently 2D image generation] &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;The Amazon Nova Canvas model is an excellent content generation model that can aid in prototyping, social media marketing, and advertising campaigns. It can be easily integrated into Generative AI applications. The security guardrails can ensure that the input prompt and the generated response don’t violate any safety policies. The foundation models are evolving rapidly, and the Amazon Nova Canvas model also has scope to improve. &lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/machine-learning/exploring-creative-possibilities-a-visual-guide-to-amazon-nova-canvas/" rel="noopener noreferrer"&gt;https://aws.amazon.com/blogs/machine-learning/exploring-creative-possibilities-a-visual-guide-to-amazon-nova-canvas/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/nova/latest/userguide/image-generation.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/nova/latest/userguide/image-generation.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>awscommunitybuilder</category>
      <category>ai</category>
      <category>amazonnovamodel</category>
    </item>
  </channel>
</rss>
