<?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: Guillaume Vernade</title>
    <description>The latest articles on DEV Community by Guillaume Vernade (@giom_v).</description>
    <link>https://dev.to/giom_v</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%2F3623117%2Ff8bd55b3-1b3d-4c3f-a763-db2cab3cc02d.jpeg</url>
      <title>DEV Community: Guillaume Vernade</title>
      <link>https://dev.to/giom_v</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/giom_v"/>
    <language>en</language>
    <item>
      <title>Vibe-coding in Google AI Studio: my tips to prompt better and create amazing apps</title>
      <dc:creator>Guillaume Vernade</dc:creator>
      <pubDate>Thu, 19 Mar 2026 17:48:19 +0000</pubDate>
      <link>https://dev.to/googleai/vibe-coding-in-google-ai-studio-my-tips-to-prompt-better-and-create-amazing-apps-3kcp</link>
      <guid>https://dev.to/googleai/vibe-coding-in-google-ai-studio-my-tips-to-prompt-better-and-create-amazing-apps-3kcp</guid>
      <description>&lt;p&gt;You might already know &lt;a href="https://ai.studio" rel="noopener noreferrer"&gt;&lt;strong&gt;Google AI Studio&lt;/strong&gt;&lt;/a&gt; as a sandbox to play with the Deepmind models and tinker with all their parameters. But did you know that you can also vibe-code webapps for free and publish them in a few clicks?&lt;/p&gt;

&lt;p&gt;Its &lt;a href="https://ai.studio/build" rel="noopener noreferrer"&gt;&lt;strong&gt;Build&lt;/strong&gt;&lt;/a&gt; section is a game-changer for "vibe coding" and generating functional applications without writing a single line of code. It allows you to rapidly build and iterate on ideas using the power of Gemini models, moving from simple concepts to fully deployed prototypes in minutes.&lt;/p&gt;

&lt;p&gt;Following my own experiments with the platform over the last year, this guide covers the core capabilities of AI Studio, how it compares to other tools, and how to prompt it effectively to build your apps.&lt;/p&gt;




&lt;p&gt;Here's what you'll find in this article:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0. &lt;em&gt;Why use AI Studio?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;1. &lt;em&gt;The App Gallery &amp;amp; Remixing&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;2. &lt;em&gt;Get started with Vibe Coding&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;3. &lt;em&gt;Create apps with databases&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;4. &lt;em&gt;My tips to better Vibe Code&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;5. &lt;em&gt;Publish your app&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;6. &lt;em&gt;AI Studio vs. Antigravity: When to use which?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;7. &lt;em&gt;My favorite creations&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  0. Why use AI Studio? (Native Gemini and Privacy)
&lt;/h1&gt;

&lt;p&gt;Before diving into the "how," let's address the most common question: &lt;em&gt;Why use AI Studio over other popular AI app builders on the market?&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;The first reason is for AI Studio's &lt;strong&gt;native Gemini&lt;/strong&gt; usage. It can create apps that are using the Gemini models, in a way that (as long as you stay in AI Studio) you don't have anything to set up so you, and the folks you're sharing your app with, can use the free tier and enjoy Gemini-powered apps for free.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: Some advanced models require a paid API key, but there's always an alternative with a free tier.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But the main differentiator is &lt;strong&gt;Privacy&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;On the free tiers of many competing platforms, unless you're paying, all the applications you generate are public by default. Anyone can see what you are working on. On AI Studio, your apps remain &lt;strong&gt;strictly private&lt;/strong&gt;. This is a huge advantage when you are prototyping personal ideas, working on sensitive client projects, or just want to experiment freely without worrying about public visibility. &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%2Fvrn59agd19568fe9mwip.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%2Fvrn59agd19568fe9mwip.png" alt="Sharing app" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sharing uses the same system as any Google Drive file, which makes sharing your apps easy and lets people try them without having to create a new account.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Pro tip:&lt;/em&gt; As with any Drive file, you can set your apps to be accessible to whoever has the link. That's what I do when I post on LinkedIn (cf. the last section of this post for examples).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In any case, even if you don't use AI Studio, my tip should still be relevant as most vibe coding agents are working similarly.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. The App Gallery &amp;amp; Remixing
&lt;/h1&gt;

&lt;p&gt;If you are new to vibe coding, the best way to understand how the code is generated is to explore the &lt;a href="https://aistudio.google.com/apps?source=showcase&amp;amp;showcaseTag=featured" rel="noopener noreferrer"&gt;App Gallery&lt;/a&gt; directly within AI Studio. &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%2Flbb2o4lbv6rq4fs097pv.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%2Flbb2o4lbv6rq4fs097pv.png" alt="App Gallery" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Explore:&lt;/strong&gt; Check out the impressive examples already built by the AI Studio team. Two of my personal favorites are the &lt;a href="https://aistudio.google.com/apps/bundled/spatial-understanding" rel="noopener noreferrer"&gt;Spatial understanding&lt;/a&gt; and the &lt;a href="https://aistudio.google.com/apps/bundled/personalized_comics" rel="noopener noreferrer"&gt;Comic Book Creator&lt;/a&gt; (which need a paid API key to use Nano-banana Pro, but you can try remixing it to only use Nano-Banana's free tier). &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Check the code:&lt;/strong&gt; For each app, you can click "code" in the top left corner to access all of the app's code and check how things are done (or more likely copy-paste it to an AI coding agent).
&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%2Fb7ybxly8je982mgfw9gv.png" alt="Code" width="742" height="468"&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Remix:&lt;/strong&gt; When you like an app and just want to create your own flavor of it, click "remix" to create a copy of it that you'll own. It's an excellent way to start from an existing, working codebase and make it your own.
&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%2Fprmyr91zr1i76do2mnfe.png" alt="Remix" width="515" height="78"&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  2. Get started with Vibe Coding
&lt;/h1&gt;

&lt;p&gt;Ready to build your own? The principle is incredibly straightforward: open the &lt;a href="https://aistudio.google.com/apps" rel="noopener noreferrer"&gt;build&lt;/a&gt; page, write what you want the app to do in a prompt, hit enter, and watch the coding agent (similar to the &lt;a href="https://antigravity.google/" rel="noopener noreferrer"&gt;Antigravity&lt;/a&gt; one) generate the UI and 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%2Fae8r3q0qes69e7iab79i.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%2Fae8r3q0qes69e7iab79i.png" alt=" " width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; the generation can take quite some time (about 5 mins on average), so go get a coffee or read a blog post and come back after the coding agent has finished its job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you get a working app, you can start adding new features by continuing to prompt in the code assistant chatbox on the left.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;New:&lt;/em&gt; One of the cool new additions in the past weeks is that the code assistant now works server-side, which means you can close the tab or change devices and it will continue to work for you. &lt;/p&gt;
&lt;/blockquote&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%2Fqwgqzs5qvx083phjt3w2.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%2Fqwgqzs5qvx083phjt3w2.png" alt="Vibe code with your voice" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depending on the case, you can also use those two buttons to provide visual clues to the model by drawing things on it, which is very convenient to give UI feedback.&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%2Fj5x7f1hjwomvfxv4f8sn.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%2Fj5x7f1hjwomvfxv4f8sn.png" alt="Visual feedback" width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another option is to dictate what changes you need. It's very convenient when you want to add a new feature on-the-fly while on your phone, but I would not recommend it for very precise updates. &lt;/p&gt;




&lt;h1&gt;
  
  
  3. Create apps with databases
&lt;/h1&gt;

&lt;p&gt;Since &lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/full-stack-vibe-coding-google-ai-studio/" rel="noopener noreferrer"&gt;this week&lt;/a&gt;, you can also ask the coding agent to create apps that can save things between sessions or users. You just need to ask it to specifically use a database:&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%2Fxq8gre9qxxhmwyizkuzm.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%2Fxq8gre9qxxhmwyizkuzm.png" alt="Create an app with a database" width="512" height="206"&gt;&lt;/a&gt;&lt;br&gt;
(&lt;em&gt;yes, I've been wanting to create my own grocery list app for a very long time&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;Just click "Enable" when asked and the magic will happen.&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%2Fmpc0cur6h9gt2t4xqw3s.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%2Fmpc0cur6h9gt2t4xqw3s.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What it will do behind the scenes is setting up the Firebase integration and a Firestore to store your data. It will also add authentication using a Google account to your app so it knows who's trying to access which data.&lt;/p&gt;

&lt;p&gt;You don't need to know how your database is structured, the code agent will manage everything for you depending on what your app needs. You want each user to have their own grocery list? Boom, it's done! You now want them to be able to have shared lists, that's also done! Add labels to the items, easy peasy.&lt;/p&gt;

&lt;p&gt;Your imagination is the limit! &lt;/p&gt;


&lt;h1&gt;
  
  
  4. My tips to better Vibe Code
&lt;/h1&gt;

&lt;p&gt;Nowadays, "vibe coding" has become a reflex for me. It is the absolute best way to prototype a user experience before potentially moving to a complex IDE. But if you're not careful, you can easily end up losing a lot of time to make the agent work in an efficient way.&lt;/p&gt;

&lt;p&gt;So here are my top tricks to get the most out of AI Studio (in no particular order). &lt;/p&gt;
&lt;h3&gt;
  
  
  Design your app before building it
&lt;/h3&gt;

&lt;p&gt;If you have opinions about what your app should look like (personally I usually don't, yolo), a good idea is to iterate on designs for it using something like &lt;a href="https://stitch.withgoogle.com/" rel="noopener noreferrer"&gt;Stitch&lt;/a&gt; (that is using Nano-Banana) and give the images to the coding agent so it knows what's expected.&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%2Fugatcj3g3fkafegw6ws3.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%2Fugatcj3g3fkafegw6ws3.png" alt="Stitch" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Save your progress so you can revert (and learn when to do it)
&lt;/h3&gt;

&lt;p&gt;AI makes mistakes. It might misunderstand your prompt or write code that breaks a previously working app. When this happens, you can ask it to "fix the error" and most of the time it works, but sometimes it doesn't.&lt;/p&gt;

&lt;p&gt;One very important skill to learn when vibe coding is when to try to fix things using AI, when to start anew, and when to go fix things yourself. &lt;/p&gt;

&lt;p&gt;My personal advice is that if the agent can't figure out how to fix something after 2 rounds, stop insisting and go back to a previous version otherwise you might end up spending an hour arguing with the AI for nothing. And when you think you're spending as much time explaining what you want than to actually do it yourself (a good example is "change this time for another"), just do it yourself.&lt;/p&gt;

&lt;p&gt;Thankfully AI Studio makes it easy for you to go back to a previous version:&lt;/p&gt;
&lt;h4&gt;
  
  
  Checkpoints
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Checkpoints&lt;/strong&gt; are the built-in version history to instantly revert to the last working state. They are the most convenient way to go back to a previous working version.&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%2Flyajpt8701dzzkcw1iro.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%2Flyajpt8701dzzkcw1iro.png" alt="Checkpoint" width="766" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Just be careful of something: you can revert the code, but not the database changes, so don't load a checkpoint that was before a database update (what I would do is load the checkpoint, copy the code, load the more recent/broken code, ask the assistant to fix it based on how it was before).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  Github
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt; is what I would recommend to save milestone versions. You should use it to save the state of your app when you reach a certain milestone, like when you finish adding a new feature. You can enable it in a few clicks:&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%2Fo6sh13kq469yi4bxebnl.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%2Fo6sh13kq469yi4bxebnl.png" alt="Open settings" width="592" height="174"&gt;&lt;/a&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%2Fk5kwfewicnl9i8kl8pq1.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%2Fk5kwfewicnl9i8kl8pq1.png" alt="Sign in to GitHub" width="800" height="1082"&gt;&lt;/a&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%2F9luwpefa3mjf5lp6sep7.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%2F9luwpefa3mjf5lp6sep7.png" alt="Create Repo" width="800" height="675"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then it will just be about describing your new feature and committing it to GitHub.&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%2Fyw3apclih27rrohygzyv.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%2Fyw3apclih27rrohygzyv.png" alt="Commit to GitHub" width="800" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One current limitation though is that the sync is one-way, so it's a good way to save your status in a place where you can easily reuse it, but you can't update your code in GitHub and sync it to AI Studio (yet).&lt;/p&gt;
&lt;h3&gt;
  
  
  Use Multi-Modal Prompting
&lt;/h3&gt;

&lt;p&gt;Stop relying purely on text. As I said before, AI studio gives you other options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Voice:&lt;/strong&gt; Incredibly practical for iterating quickly, especially if you are tweaking an app from your phone.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The "Annotate App" Tool:&lt;/strong&gt; This is my absolute favorite feature for UI work. Take a screenshot of your app, draw directly on it ("Move this button here", "Remove this menu"), and send it. &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Pro Tip:&lt;/em&gt; Always combine the annotated image with a clear text explanation to give the model maximum context.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Split Your Files! (Avoid the Monolith)
&lt;/h3&gt;

&lt;p&gt;As your app grows, the model might start to "hallucinate", forget earlier features, or tangle the logic. This is almost always a structural issue.&lt;/p&gt;

&lt;p&gt;By default, the AI tends to cram everything into one massive &lt;code&gt;app.tsx&lt;/code&gt; file. Veto this immediately.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Golden Rule:&lt;/strong&gt; Tell the model from the very beginning to separate features into distinct files and components. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt; It drastically reduces errors and makes generation faster. It also allows you to instantly spot if the AI is messing up (e.g., If you ask for a UI color change and it starts rewriting &lt;code&gt;auth-service.js&lt;/code&gt;, you know it lost the plot and you can stop it immediately). It will save you a lot of time when reviewing and at least gives you an &lt;em&gt;at a glance&lt;/em&gt; confidence that the right part of the codebase was updated.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Force the AI to Write Documentation
&lt;/h3&gt;

&lt;p&gt;To also help the AI remembering what the app is meant to do, have it maintain as much documentation as possible (from micro to macro):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Docstrings:&lt;/strong&gt; Always forces the app to document all its functions, what they do, what the inputs and the outputs are. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;File documentation:&lt;/strong&gt; Since you're creating a file per feature, tell the AI to maintain some documentation at the top of them to detail what the feature is about, what use cases should be covered, etc.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Design.md:&lt;/strong&gt; Finally, ask it to maintain a design doc of the whole app at the root of it.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt; By having the AI repeat everything multiple times you both help it (and potentially yourself) find where everything is being done and what is the expected behavior. Kind of like how &lt;a href="https://en.wikipedia.org/wiki/Error_correction_code" rel="noopener noreferrer"&gt;error correction codes&lt;/a&gt; work, having something written multiple times reduces the chances that they will be deleted by mistake.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Supercharge with System Instructions
&lt;/h3&gt;

&lt;p&gt;After some time you'll realize that you're always giving the same instructions to the coding agent and will get tired of repeating yourself. That's why AI Studio allows you to customize the underlying "System Instructions." Don't leave this blank! You can define your preferred tech stack, frameworks, coding style, and of course everything I mentioned before!&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%2F3g4fsuqp48ize2kxs9zo.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%2F3g4fsuqp48ize2kxs9zo.png" alt="Open settings" width="783" height="325"&gt;&lt;/a&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%2Fahf314jvprwwq926cj3x.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%2Fahf314jvprwwq926cj3x.png" alt="Set System Instructions" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Think of it as the onboarding package for your new junior developer, they need to know how you are expecting them to work, how to code, document, communicate, etc... You might not get it right the first time, but it's important to reflect on it and to keep on improving your package so that the next newcomers will be better onboarded and thus get productive faster.&lt;/p&gt;

&lt;p&gt;Here's the ones I'm always using on top of more specialized instructions (like trusting me on model names and not changing them):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Coding/documenting guidelines&lt;/span&gt;
&lt;span class="p"&gt;
*&lt;/span&gt; Create a file per feature or related features, split as much as possible in different files;
&lt;span class="p"&gt;*&lt;/span&gt; add docstrings to all functions to explain what they do;
&lt;span class="p"&gt;*&lt;/span&gt; start each file with a long comment explaining in detail what the feature is about and the different use cases;
&lt;span class="p"&gt;*&lt;/span&gt; maintain a &lt;span class="sb"&gt;`Design.md`&lt;/span&gt; document at the root of the app that documents all the features of the app;
&lt;span class="p"&gt;*&lt;/span&gt; log as info all function calls (with their parameters) and log all genai calls with all their parameters (model used, prompt, config) and their outputs, just strip inline data;
&lt;span class="p"&gt;*&lt;/span&gt; group all configurable items (like model names) in a centralized file;
&lt;span class="p"&gt;*&lt;/span&gt; always create a way to test the scripts without altering the data;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see that I also added some instruction about logging (as it always help debugging) and dry run as these are both good practices, vibe coding or not.&lt;/p&gt;

&lt;p&gt;Try them and tell me if that improved your vibe-coding experience!&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Publish your app
&lt;/h1&gt;

&lt;p&gt;You are now happy with your app and want to share it with the world (or maybe a subset of it), AI Studio offers you two ways of publishing your app:&lt;/p&gt;

&lt;h3&gt;
  
  
  Share it in AI Studio
&lt;/h3&gt;

&lt;p&gt;The easiest way is to just use AI Studio sharing capability.&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%2Fvrn59agd19568fe9mwip.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%2Fvrn59agd19568fe9mwip.png" alt="Sharing app" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can either decide to share the app with specific people or to make it available to whoever has its link (that's what I use on LinkedIn for ex.). &lt;/p&gt;

&lt;p&gt;One of the key benefits is that they will also get access to the code and be able to Remix it if they want. But you can also send a link that opens the app full screen and hides the code agent to your less technical friends.&lt;/p&gt;

&lt;p&gt;Another nice benefit is that if your app is using Gemini, your friends will use their free tier when using the app (or their API key if using a paid model), which means it won't cost you anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Publish the app on Cloud run
&lt;/h3&gt;

&lt;p&gt;This is what you should do if you want to publish the app for real to actual users. In a few clicks it will create a cloud run container, publish the app online and give you a URL for anyone to access it.&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%2F6sjpb3pg72pzdrp8qzoa.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%2F6sjpb3pg72pzdrp8qzoa.png" alt="Publish" width="603" height="193"&gt;&lt;/a&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%2Fi8q8lblzfszx5vt9vy3k.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%2Fi8q8lblzfszx5vt9vy3k.png" alt="Publish app" width="800" height="726"&gt;&lt;/a&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%2F6k5lueeaffjmeuhapr3e.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%2F6k5lueeaffjmeuhapr3e.png" alt="App published" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll then be able to buy a domain and give it a proper URL, deploy in different regions, automatically scale, etc... But then you'll also be the one paying for usage as it's your own app now.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. AI Studio vs. Antigravity: When to use which?
&lt;/h1&gt;

&lt;p&gt;Since AI Studio uses a similar underlying coding agent as Google's &lt;a href="https://antigravity.google/" rel="noopener noreferrer"&gt;Antigravity&lt;/a&gt;, you might be wondering when to use which tool. Here is my rule of thumb:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use AI Studio when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You are prototyping a front-end UI or a lightweight full-stack application.&lt;/li&gt;
&lt;li&gt;  You want to genuinely "vibe code" using multimodal inputs (like drawing directly on the app's UI or using your voice).&lt;/li&gt;
&lt;li&gt;  You want to instantly share a working prototype with stakeholders or friends via a simple link, without managing hosting.&lt;/li&gt;
&lt;li&gt;  You want zero-setup, native access to the Gemini models to build AI features quickly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use Antigravity when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You are building a production-grade, complex application with deep backend infrastructure requirements.&lt;/li&gt;
&lt;li&gt;  You need fine-grained control over your dependencies, complex build steps, and deployment pipelines.&lt;/li&gt;
&lt;li&gt;  You are integrating the AI coding agent into an &lt;em&gt;existing&lt;/em&gt;, large-scale codebase rather than starting a project from a blank slate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of AI Studio as your creative sketchbook for rapid iteration, and Antigravity as your full-fledged developer workshop.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. My favorite creations
&lt;/h1&gt;

&lt;p&gt;Now that you have mastered the basics of vibe coding, the best way to learn is by doing. I didn't follow all these rules perfectly when I started, but making mistakes is how you refine your workflow!&lt;/p&gt;

&lt;p&gt;To show you what's possible, here are a few applications I vibe-coded entirely from scratch using most of those methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;[AI-powered resume]&lt;/strong&gt;: &lt;em&gt;An AI-powered resume. Don't just read it, but ask Gemini questions about me (it will know some anecdotes that are not written), tailor it according to the role you want to propose to me or even ask for an audio overview.&lt;/em&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%2Fokt00odhpopc0l7v3w2j.png" alt="AI-powered resume" width="800" height="426"&gt;&lt;a href="https://aistudio.google.com/apps/drive/1VRVKZ8qFAG6Rgc1np3u8g5eBgbmI9094" rel="noopener noreferrer"&gt;Check it out here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;[Talk coach]&lt;/strong&gt;: &lt;em&gt;A coach for your talks. Give it a recording or youtube link and it will tell you how to get even better.&lt;/em&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%2F2frit2q7sdl3tbcdipck.png" alt="Talk coach" width="800" height="931"&gt;&lt;a href="https://aistudio.google.com/apps/drive/18XuOzEU1zuseoaPtXrdVUeTY3nNbM80u?appParams=value%253DcOp5rklR3jI" rel="noopener noreferrer"&gt;Check it out here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;[FreshList]&lt;/strong&gt;: &lt;em&gt;A copy of the app I'm working on to simplify the groceries&lt;/em&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%2Fcpl1xipyut59v2k1aqeo.png" alt="FreshList" width="800" height="957"&gt;&lt;a href="https://aistudio.google.com/apps/cee356a2-e448-4807-9d60-4dc6b734b969" rel="noopener noreferrer"&gt;Check it out here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See other examples in the &lt;a href="https://github.com/Giom-V/vibe-coding-challenge" rel="noopener noreferrer"&gt;repo&lt;/a&gt; I created when I thought I will have the time to vibe code an app per week.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>gemini</category>
      <category>promptengineering</category>
    </item>
    <item>
      <title>Getting the most out of Nano-Banana 2: tips &amp; prompt guide</title>
      <dc:creator>Guillaume Vernade</dc:creator>
      <pubDate>Thu, 05 Mar 2026 22:28:22 +0000</pubDate>
      <link>https://dev.to/googleai/getting-the-most-out-of-nano-banana-2-502k</link>
      <guid>https://dev.to/googleai/getting-the-most-out-of-nano-banana-2-502k</guid>
      <description>&lt;p&gt;Following our previous &lt;a href="https://dev.to/googleai/introducing-nano-banana-pro-complete-developer-tutorial-5fc8"&gt;Developer Guide&lt;/a&gt; and &lt;a href="https://dev.to/googleai/nano-banana-pro-prompting-guide-strategies-1h9n"&gt;Prompting Guide&lt;/a&gt;, this post dives into the brand new capabilities of Nano-Banana 2 (aka. "Gemini 3.1 Flash Image"), when you should (and shouldn't) use it, and how to prompt its newest features effectively.&lt;/p&gt;




&lt;p&gt;Here's what you'll find in this article:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Model Matrix: Nano-Banana 1 vs. 2 vs. Pro&lt;/li&gt;
&lt;li&gt;The Game Changer: Visual Grounding with Google Search&lt;/li&gt;
&lt;li&gt;New Parameters: Extreme Ratios &amp;amp; 512px Resolutions&lt;/li&gt;
&lt;li&gt;Controlling "Thinking" Mode&lt;/li&gt;
&lt;li&gt;Prompt Examples&lt;/li&gt;
&lt;li&gt;What about apps?&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. The Model Matrix: Nano-Banana 1 vs. 2 vs. Pro
&lt;/h2&gt;

&lt;p&gt;With three distinct models now in the Nano-Banana lineup, choosing the right engine for your specific workflow is crucial. Here is how the new Nano-Banana 2 fits into the ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nano-Banana 1 vs. Nano-Banana 2
&lt;/h3&gt;

&lt;p&gt;Don't count Nano-Banana 1 out just yet. If you have an existing application or workflow that uses Nano-Banana 1 and it is handling your use cases perfectly, stick with it! There is no forced migration (yet...). &lt;/p&gt;

&lt;p&gt;Nano-Banana 1 remains the absolute cheapest option and is still faster than Nano-Banana 2 since it's not a thinking model. However, for any &lt;em&gt;new&lt;/em&gt; pipeline that requires more nuance, better prompt adherence, or the new Image Grounding features, Nano-Banana 2 is absolutely worth the slight bump in price.&lt;/p&gt;

&lt;p&gt;Also you'll save on having to migrate from NB to NB2 in the future, so start testing your prompts on the new model instead of the old one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro-tip:&lt;/strong&gt; Create 512px images with NB2 to keep more or less the same prices as NB1.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Nano-Banana Pro vs. Nano-Banana 2
&lt;/h3&gt;

&lt;p&gt;The biggest question for developers and creators right now is: &lt;em&gt;Why use Pro if 2 is so good?&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Think of Nano-Banana 2 (Gemini-3.1-Flash) as offering roughly 95% of Pro's capabilities at a fraction of the cost. &lt;strong&gt;For almost all new projects, Nano-Banana 2 should be your immediate default.&lt;/strong&gt; It handles text rendering, complex styles, and the new visual grounding exceptionally well. &lt;/p&gt;

&lt;p&gt;You should only step up to &lt;strong&gt;Nano-Banana Pro&lt;/strong&gt; when you hit a wall. If Nano-Banana 2 consistently fails a highly complex, multi-layered prompt, or struggles with extreme logical constraints, Pro remains the ultimate heavy lifter.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note: If you find specific edge cases where Pro consistently beats Nano-Banana 2, please drop them in the comments! We need to know what to improve.)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Summary Matrix
&lt;/h3&gt;

&lt;p&gt;Here is a quick reference guide to help you route your API calls:&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%2F2q0ptspd84661nxjklwl.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%2F2q0ptspd84661nxjklwl.png" alt="Summary matrix" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Game Changer: Visual Grounding with Google Search
&lt;/h2&gt;

&lt;p&gt;While Nano-Banana Pro introduced the ability to search the web for &lt;em&gt;textual&lt;/em&gt; information, Nano-Banana 2 takes a massive leap forward: &lt;strong&gt;Image Grounding&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The model can now search the internet for specific images to understand exactly what a real-world subject looks like before generating it. This is incredibly powerful when you need to represent specific locations, monuments, or highly specific biological species just as they appear in reality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Locations:&lt;/strong&gt; Ask for specific churches, bridges, city squares, or niche buildings. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Nature:&lt;/strong&gt; Ask for exact animal species, breeds, or insects.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Limitation to keep in mind:&lt;/strong&gt; The model &lt;strong&gt;cannot&lt;/strong&gt; search for people.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Specific Location Grounding:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Generate a cinematic, golden-hour photograph of the main historical church in Voiron, France. Ensure the architectural details, the spire, the surrounding square, and the landscape (mountains) are accurate to reality."&lt;/em&gt; (change the city for your hometown)&lt;/p&gt;
&lt;/blockquote&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%2Fai3papaeh2weqp8uqq92.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%2Fai3papaeh2weqp8uqq92.png" alt="Voiron's church" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Specific Species Grounding:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Create a realistic picture of a machaon butterfly and a flambé one, and highlight their differences to show how to differentiate them."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2F0itpfky9o9qvej7cwmg4.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%2F0itpfky9o9qvej7cwmg4.png" alt="Machaon vs. Flambé butterflies" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to know how to use this new image grounding tool in code, check the &lt;a href="https://ai.google.dev/gemini-api/docs/image-generation#image-search" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; or this &lt;a href="https://colab.sandbox.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_Started_Nano_Banana.ipynb#scrollTo=kO5YvAcTFqgY" rel="noopener noreferrer"&gt;Python colab&lt;/a&gt; from our &lt;a href="https://github.com/google-gemini/cookbook/" rel="noopener noreferrer"&gt;cookbook&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. New Parameters: Extreme Ratios &amp;amp; 512px Resolutions
&lt;/h2&gt;

&lt;p&gt;Nano-Banana 2 introduces several new parameters that give developers and creators tighter control over output formats and cost optimization. &lt;/p&gt;

&lt;h3&gt;
  
  
  The 512px Batch-to-Upscale Workflow
&lt;/h3&gt;

&lt;p&gt;Nano-Banana 2 introduces the ability to generate images at &lt;strong&gt;512-pixel&lt;/strong&gt; resolutions. With these new resolutions, the generation is slightly faster and the cost is driven down to roughly the same price as Nano-Banana 1. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro-tip:&lt;/strong&gt; If you are a developer looking to optimize your costs while maintaining high-end output, here is the golden workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Use the Batch API (which gives a 50% discount) to generate dozens of variations of your prompt at 512px.&lt;/li&gt;
&lt;li&gt; Review the grid and select the absolute best composition.&lt;/li&gt;
&lt;li&gt; Ask Nano-Banana 2 to &lt;strong&gt;upscale&lt;/strong&gt; that specific image to 1K, 2K, or 4K.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Extreme Aspect Ratios (1:8 &amp;amp; 1:4)
&lt;/h3&gt;

&lt;p&gt;Nano-Banana 2 also introduces extreme new aspect ratios—&lt;strong&gt;1:8 and 1:4&lt;/strong&gt;—available in both vertical and horizontal formats. These are perfect for web banners, continuous scrolling assets, and comic book (BD) layouts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Horizontal Comic Strip:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Create a 4-panel horizontal comic strip (aspect ratio 4:1). The story follows a mischievous cat trying to steal a fish from a kitchen counter that ends with a twist. Use a vibrant, Franco-Belgian comic book style. Keep the cat's design consistent across all panels."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fcqnwpa4if7rl76dfan6b.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%2Fcqnwpa4if7rl76dfan6b.png" alt="Comic Strip" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Controlling "Thinking" Mode
&lt;/h2&gt;

&lt;p&gt;Like its predecessor, Nano-Banana 2 has a "Thinking" mode where it reasons about the prompt before generating. However, you can now toggle this feature &lt;strong&gt;ON&lt;/strong&gt; or &lt;strong&gt;OFF&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Recommendation: Keep it OFF by default.&lt;/strong&gt; &lt;br&gt;
For standard image generation, turning it off saves time and processing. You should only turn Thinking ON if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The model is generating nonsensical results and needs help reasoning through the prompt.&lt;/li&gt;
&lt;li&gt;  You are generating highly complex infographics.&lt;/li&gt;
&lt;li&gt;  You are combining complex Image Grounding with spatial reasoning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Again, if you find amazing use-cases where turning "Thinking" ON completely changes the game, let me know in the comments!)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Prompt Examples
&lt;/h2&gt;

&lt;p&gt;A nano-banana guide without some prompt examples would be like a meal &lt;em&gt;without&lt;/em&gt; cheese, so here are my favorite ones at the moment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Cartoon Portraits:&lt;/strong&gt; Transform personal photos into stylized, high-fidelity 3D characters interacting with their real-life selves.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Prompt:&lt;/em&gt; &lt;code&gt;Based strictly on the uploaded reference image, create a photorealistic scene featuring the real human standing next to a giant 3D animation-style version of themselves. Both must have identical facial structures, clothing, and poses. The real person is smiling naturally with their hand on the 3D character's shoulder. The 3D version is proportionally larger, anatomically identical but stylized, with expressive eyes and a playful smirk. Clean gray-blue studio background, cinematic lighting, crisp textures.&lt;/code&gt; &lt;em&gt;(Note: Requires uploading an image).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2F03s435jdcdeorgxzce98.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%2F03s435jdcdeorgxzce98.png" alt="Cartoon portrait" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Animation to Image:&lt;/strong&gt; Upload animated stills and utilize the model to interpret those outlines into hyper-realistic, photographic images.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Prompt:&lt;/em&gt; &lt;code&gt;Convert this uploaded animated still into an ultra-realistic, cinematic, and fully photorealistic scene. Transform the animated characters into real humans while perfectly preserving their original identities, facial structures, outfits, expressions, and overall likeness.&lt;/code&gt; &lt;em&gt;(Note: Requires uploading an image).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fg5i669u3fvgb2tz2hpgk.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%2Fg5i669u3fvgb2tz2hpgk.png" alt="Animation to image" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(original image from &lt;a href="https://archive.org/details/mobile_suit_gundam_coloring_book" rel="noopener noreferrer"&gt;https://archive.org/details/mobile_suit_gundam_coloring_book&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;History on Maps:&lt;/strong&gt;  Generate hyper-realistic, Maps-style street view imagery that "reimagines" historical events (like the 800 AD crowning of Charlemagne) as if captured by modern 360-degree cameras.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Prompt:&lt;/em&gt; &lt;code&gt;Generate a hyper-realistic image of the crowning of Charlemagne on December 25, 800 AD, perfectly replicating a Google Maps Street View capture. Show Pope Leo III placing the imperial crown on a kneeling Charlemagne inside Old St. Peter's Basilica. Include a 123-degree wide-angle barrel distortion, a semi-transparent Google Maps UI overlay (navigation compass, 2D map thumbnail, white directional chevron arrows floating over the stone floor), and a '© Google 800' watermark. Automatically blur the faces of Charlemagne, the Pope, and surrounding medieval nobles for privacy. Use warm, dim torchlight and candlelight filtering through the basilica, dramatic shadows, and high-ISO digital noise typical of a 360-degree camera struggling in a low-light interior.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fykv4j7xp7eobj7bmd85c.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%2Fykv4j7xp7eobj7bmd85c.png" alt="Charlemagne Crowning" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Kindergarten Filter:&lt;/strong&gt; Celebrate human imperfection and childhood nostalgia by generating intentionally messy, waxy crayon doodles on lined paper.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Prompt:&lt;/em&gt; &lt;code&gt;A child's crayon drawing on white lined notebook paper of maple taffy on snow. Use chunky wax-crayon strokes, wobbly outlines, and bright bold colors that messily overflow the lines. Include visible heavy pressure marks, waxy smudges, and uneven scribble shading. Draw important elements disproportionately large with simple flat shapes, round friendly faces, dot eyes, and big curved smiles. Add a classic large yellow sun in the corner, puffy clouds, and zero realistic perspective. Joyful, naive art style.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&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%2Ftk6bfkrodfmwj497psy9.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%2Ftk6bfkrodfmwj497psy9.png" alt="Kindergarten drawing" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. What about apps?
&lt;/h2&gt;

&lt;p&gt;Now that you know the new capabilities of Nano-Banana 2, it's time to build!&lt;/p&gt;

&lt;p&gt;Here are a couple of cool apps that you can use as a starting point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://aistudio.google.com/apps/bundled/window_seat" rel="noopener noreferrer"&gt;Window seat&lt;/a&gt;&lt;/strong&gt;: Generate photorealistic window views based on live weather and specific locations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://aistudio.google.com/apps/bundled/pet_passport" rel="noopener noreferrer"&gt;Pet passport adventure&lt;/a&gt;&lt;/strong&gt;: Send your pet on a global adventure using Nano-Banana.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://aistudio.google.com/apps/bundled/global_kit_generator" rel="noopener noreferrer"&gt;Global Kit Generator&lt;/a&gt;&lt;/strong&gt;: Developer tool for scaling localized marketing assets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please share your best apps in the comments, it's always great to see how creative everybody is!&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%2F4rpg8qpkkx5rxukofrat.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%2F4rpg8qpkkx5rxukofrat.png" alt="Congratulations" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gemini</category>
      <category>nanobanana</category>
      <category>promptengineering</category>
    </item>
    <item>
      <title>Lyria RealTime: The Developer’s Guide to Infinite Music Streaming</title>
      <dc:creator>Guillaume Vernade</dc:creator>
      <pubDate>Mon, 08 Dec 2025 21:31:01 +0000</pubDate>
      <link>https://dev.to/googleai/lyria-realtime-the-developers-guide-to-infinite-music-streaming-4m1h</link>
      <guid>https://dev.to/googleai/lyria-realtime-the-developers-guide-to-infinite-music-streaming-4m1h</guid>
      <description>&lt;p&gt;You love generating static songs with classic text to music models? Prepare to conduct a never-ending symphony. Introducing &lt;strong&gt;&lt;a href="https://deepmind.google/models/lyria/lyria-realtime/" rel="noopener noreferrer"&gt;Lyria RealTime&lt;/a&gt;&lt;/strong&gt;, Google DeepMind’s experimental model that doesn't just generate music—it &lt;em&gt;jams&lt;/em&gt; with you like it did during the Toro y Moi IO pre-show:&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/thAhd82XnMc"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;While traditional music generation models work like a jukebox (input prompt -&amp;gt; wait -&amp;gt; get song), Lyria RealTime operates on the principle of &lt;strong&gt;"Music as a Verb."&lt;/strong&gt; It creates a persistent, bidirectional streaming connection that produces a continuous 48kHz stereo stream. You can steer, warp, and morph the audio in the moment, making it the first generative model truly designed for interactive experiences.&lt;/p&gt;

&lt;p&gt;And the best part? Right now the model is &lt;strong&gt;free to use&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Here's quick summary of what you'll learn about in this guide:&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%2Fe91qwp3ixq4cqnpqmuvk.jpeg" 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%2Fe91qwp3ixq4cqnpqmuvk.jpeg" alt="Lyria RealTime infographics"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;This guide will walk you through building with Lyria RealTime using the Gemini API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This guide will cover:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;How Lyria RealTime Works (The "Goldfish Memory" Architecture)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Project Setup&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Basic Streaming (The "Hello World" of Music)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Steering the Stream (Weighted Prompts)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Advanced Configuration (BPM, Density, &amp;amp; Scale)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Blueprints for the Future: Advanced Use Cases&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Prompting Strategies &amp;amp; Best Practices&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Where to play with Lyria Real Time&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Jump directly to the last section if you want to play directly with Lyria RealTime, for ex. as a &lt;a href="https://aistudio.google.com/apps/bundled/promptdj-midi" rel="noopener noreferrer"&gt;DJ&lt;/a&gt;, driving a &lt;a href="https://aistudio.google.com/apps/bundled/spacedj" rel="noopener noreferrer"&gt;spaceship&lt;/a&gt; or using your &lt;a href="https://aistudio.google.com/apps/bundled/lyria_camera" rel="noopener noreferrer"&gt;camera&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: for an interactive version of this post, checkout the &lt;a href="https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_started_LyriaRealTime.ipynb" rel="noopener noreferrer"&gt;python cookbook&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  1) How Lyria RealTime Works
&lt;/h2&gt;

&lt;p&gt;Lyria RealTime uses a low-latency WebSocket connection to maintain a live communication channel with the model. Unlike offline models that plan a whole song structure (Intro-Verse-Chorus), Lyria operates on a &lt;strong&gt;chunk-based autoregression&lt;/strong&gt; system.&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%2Fb2uub6nyc7bnp6e61saa.gif" 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%2Fb2uub6nyc7bnp6e61saa.gif" alt="How Lyria RealTime Works"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It generates audio in 2-second chunks, looking back for a few seconds of context to maintain the rhythmic "groove" while looking forward at your current controls to decide the style. This means the model doesn't "compose songs" in the traditional sense; it navigates musical states.&lt;/p&gt;


&lt;h2&gt;
  
  
  2) Project Setup
&lt;/h2&gt;

&lt;p&gt;To follow this guide, you will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  An API key from Google AI Studio (it can be a free one).&lt;/li&gt;
&lt;li&gt;  The Google Gen AI SDK.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Install the SDK:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Python&lt;/strong&gt; (&lt;code&gt;3.12+&lt;/code&gt; recommended):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"google-genai&amp;gt;=1.52.0"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;JavaScript / TypeScript:&lt;/strong&gt;&lt;br&gt;
You'll need at least the 1.30 version of the &lt;a href="https://googleapis.github.io/js-genai/" rel="noopener noreferrer"&gt;JS/TS SDK&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @google/genai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The following examples use the Python SDK for demonstration. For JS/TS code sample, check the &lt;a href="https://aistudio.google.com/apps/bundled/promptdj-midi?showAssistant=true&amp;amp;showCode=true" rel="noopener noreferrer"&gt;AI studio Apps&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3) Basic Streaming
&lt;/h2&gt;

&lt;p&gt;To start a session, you connect to the model (&lt;code&gt;models/lyria-realtime-exp&lt;/code&gt;), send an initial configuration, and start the stream. The interaction loop is asynchronous: you send commands, and the server continuously yields raw audio chunks.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[Note: Ensure you are using the &lt;code&gt;v1alpha&lt;/code&gt; API version for experimental models like Lyria]&lt;/em&gt;.&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.genai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;types&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;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;http_options&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;api_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;v1alpha&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;receive_audio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Background task to process incoming audio chunks.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;receive&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;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;server_content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;audio_chunks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="c1"&gt;# 'data' is raw 16-bit PCM audio at 48kHz
&lt;/span&gt;                    &lt;span class="n"&gt;audio_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;server_content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;audio_chunks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;
                    &lt;span class="c1"&gt;# Add your audio playback logic here!
&lt;/span&gt;            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;**-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;with &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="n"&gt;aio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;live&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;music&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&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="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;models/lyria-realtime-exp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TaskGroup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;tg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# 1. Start listening for audio
&lt;/span&gt;        &lt;span class="n"&gt;tg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_task&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;receive_audio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

        &lt;span class="c1"&gt;# 2. Send initial musical concept
&lt;/span&gt;        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_weighted_prompts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WeightedPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;elevator music&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# 3. Set the vibe (BPM, Temperature)
&lt;/span&gt;        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_music_generation_config&lt;/span&gt;&lt;span class="p"&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;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LiveMusicGenerationConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# 4. Drop the beat
&lt;/span&gt;        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;play&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="c1"&gt;# Keep the session alive
&lt;/span&gt;        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&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;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations, you've got some elevator music!&lt;/p&gt;

&lt;p&gt;Not impressed? That's just the beginning, dear padawan, now comes the cool part.&lt;/p&gt;




&lt;h2&gt;
  
  
  4) Steering the Stream (Weighted Prompts)
&lt;/h2&gt;

&lt;p&gt;This is where the magic happens. Unlike static generation, you can send new &lt;code&gt;WeightedPrompt&lt;/code&gt; messages &lt;em&gt;while the music is playing&lt;/em&gt; to smoothly transition the genre, instruments, or mood.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;weight&lt;/code&gt; parameter is your fader. A weight of &lt;code&gt;1.0&lt;/code&gt; is standard, but you can use multiple prompts to blend influences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Morphing from Piano to Live Performance&lt;/strong&gt;&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.genai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt;

&lt;span class="c1"&gt;# Send this while the loop is running to shift the style
&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_weighted_prompts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="c1"&gt;# Keep the piano strong
&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Piano&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;weight&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="c1"&gt;# Add a subtle meditative layer
&lt;/span&gt;        &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WeightedPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Meditation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="c1"&gt;# Push the 'Live' feeling
&lt;/span&gt;        &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WeightedPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Live Performance&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; As the model generates chunks after chunks, the changes can take a few seconds (usually around 2s) to be reflected in the music.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Pro Tip: Cross-fading
&lt;/h4&gt;

&lt;p&gt;Drastic prompt changes can be abrupt. For professional results, implement client-side cross-fading by sending intermediate weight values rapidly (e.g., every 500ms) to "morph" the music smoothly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: The "Morph" Function&lt;/strong&gt;&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.genai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;cross_fade&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;old_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;new_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;steps&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="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Smoothly morphs from one musical idea to another.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;step_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;duration&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;steps&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# Calculate the blend ratio (alpha goes from 0.0 to 1.0)
&lt;/span&gt;        &lt;span class="n"&gt;alpha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;steps&lt;/span&gt;

        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_weighted_prompts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="c1"&gt;# Fade out the old
&lt;/span&gt;                &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WeightedPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;old_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="c1"&gt;# Fade in the new
&lt;/span&gt;                &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WeightedPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;new_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;alpha&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;await&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;step_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Usage in your main loop:
# Morph from 'Ambient' to 'Techno' over 5 seconds
&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;cross_fade&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ambient Drone&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;Hard Techno&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that this code sample assumes all your prompts have a weight of 1 which might not be the case. &lt;/p&gt;




&lt;h2&gt;
  
  
  5) Advanced Configuration (The Knobs)
&lt;/h2&gt;

&lt;p&gt;Lyria RealTime exposes parametric controls that change the structure of the music. If you aren't a musician, think of these controls as the physics of the audio world:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Density&lt;/strong&gt; (0.0 - 1.0): Think of this as "Busyness."

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Low&lt;/em&gt; (0.1): A lonely drummer playing once every few seconds. Sparse.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;High&lt;/em&gt; (0.9): A chaotic orchestra where everyone plays at once. Intense.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Brightness&lt;/strong&gt; (0.0 - 1.0): Think of this as "Muffled vs. Crisp."

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Low&lt;/em&gt; (0.1): Listening to music from outside a club, through a wall. Dark and bass-heavy.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;High&lt;/em&gt; (0.9): Listening through high-end headphones. Sharp, clear, and treble-heavy.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;BPM&lt;/strong&gt; (60 - 200): The heartbeat of the track (Beats Per Minute).&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Scale&lt;/strong&gt;: The "Mood." It forces the music into a specific set of notes (Key/Mode).&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: While density and brightness can be changed smoothly on the fly, changing the BPM or Scale is a fundamental structural shift. You must call &lt;code&gt;reset_context()&lt;/code&gt; for these changes to take effect. This will clear the model's "short-term memory," causing a hard cut in the audio.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Example: The "Hard Drop"&lt;/strong&gt;&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;# Changing structural parameters requires a context reset
&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_music_generation_config&lt;/span&gt;&lt;span class="p"&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;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LiveMusicGenerationConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;bpm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Scale&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;C_MAJOR_A_MINOR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# Force happy/neutral mood
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# This command is mandatory for BPM/Scale changes to apply!
&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reset_context&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6) Blueprints for the Future: Advanced Use Cases
&lt;/h2&gt;

&lt;p&gt;We’ve covered basic streaming, but Lyria’s parametric controls allow for applications that connect the physical world to the audio stream. Here are four ideas to get you started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Case A: The "Biometric Beat" (Fitness &amp;amp; Health)
&lt;/h3&gt;

&lt;p&gt;Most fitness apps use static playlists that rarely match your actual pace. Because Lyria allows for real-time &lt;code&gt;bpm&lt;/code&gt; and &lt;code&gt;density&lt;/code&gt; control, you can build a music engine that is biologically coupled to the user.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Heart Rate Monitor (HRM) -&amp;gt; BPM:&lt;/strong&gt; Map the user's heart rate directly to the track's tempo.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Accelerometer -&amp;gt; Density:&lt;/strong&gt; If the user is sprinting (high variance in movement), increase &lt;code&gt;density&lt;/code&gt; to &lt;code&gt;1.0&lt;/code&gt; to add percussion and complexity. If they stop to rest, drop &lt;code&gt;density&lt;/code&gt; to &lt;code&gt;0.2&lt;/code&gt; for an ambient breakdown.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use Case B: The "Democratic DJ" (Social Streaming)
&lt;/h3&gt;

&lt;p&gt;Since &lt;code&gt;WeightedPrompts&lt;/code&gt; accept float values, you can build a collaborative radio station for Twitch streams or Discord bots where the audience votes on the genre. Instead of a winner-take-all system, Lyria can blend the votes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Input:&lt;/strong&gt; 100 users vote. 60 vote "&lt;em&gt;Cyberpunk&lt;/em&gt;", 30 vote "&lt;em&gt;Jazz&lt;/em&gt;", 10 vote "&lt;em&gt;Reggae&lt;/em&gt;".&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Normalization:&lt;/strong&gt; Convert votes to weights (0.6, 0.3, 0.1).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Result:&lt;/strong&gt; The model generates a dominant Cyberpunk track with clear Jazz harmonies and a subtle Reggae backbeat and changes it overtime according to the votes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use Case C: "Focus Flow" (Productivity)
&lt;/h3&gt;

&lt;p&gt;Deep work requires different audio textures than brainstorming. You can map Lyria's &lt;code&gt;brightness&lt;/code&gt; and &lt;code&gt;guidance&lt;/code&gt; parameters to a Pomodoro timer to guide the user's cognitive state.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Deep Work Phase:&lt;/strong&gt; Low &lt;code&gt;brightness&lt;/code&gt; (darker, warmer sounds), Low &lt;code&gt;density&lt;/code&gt; (minimal distractions), High &lt;code&gt;guidance&lt;/code&gt; (repetitive, predictable).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Break Phase:&lt;/strong&gt; High &lt;code&gt;brightness&lt;/code&gt; (energetic, crisp), High &lt;code&gt;density&lt;/code&gt;, Low &lt;code&gt;guidance&lt;/code&gt; (creative, surprising).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use Case D: "Realtime Game music" (Gaming)
&lt;/h3&gt;

&lt;p&gt;Coming from the gaming industry I could not avoid thinking of a gaming idea for Lyria Real Time. You could have Lyria create the music of the game in real time based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;The game's own style:&lt;/strong&gt; a bunch of prompts that defines the game and the overall ambiance,&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The environment:&lt;/strong&gt; different prompts depending on whether you're in a busy city, in a forest or sailing the Greek seas,&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The player's action:&lt;/strong&gt; are they fighting, then add the "epic" prompt, investigating instead, change it for the "mysterious" one,&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The players' current condition:&lt;/strong&gt; You could change the BPM and the weight of a "danger" prompt depending on the player's health bar. The lower it is, the more stressful the music would be.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7) Prompting Strategies &amp;amp; Best Practices
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The Prompt Formula:&lt;/strong&gt;&lt;br&gt;
Through testing, a reliable formula has emerged: &lt;strong&gt;[Genre Anchor] + [Instrumentation] + [Atmosphere]&lt;/strong&gt;...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Instruments:&lt;/strong&gt; &lt;em&gt;303 Acid Bass, Buchla Synths, Hang Drum, TR-909 Drum Machine&lt;/em&gt;...&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Genres:&lt;/strong&gt; &lt;em&gt;Acid Jazz, Bengal Baul, Glitch Hop, Shoegaze, Vaporwave&lt;/em&gt;...&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Moods:&lt;/strong&gt; &lt;em&gt;Crunchy Distortion, Ethereal Ambience, Ominous Drone, Swirling Phasers&lt;/em&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Developer Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Buffer Your Audio:&lt;/strong&gt; Because this is real-time streaming over the network, implement client-side audio buffering (2-3 chunks) to handle network jitter and ensure smooth playback.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The "Settling" Period:&lt;/strong&gt; When you start a stream or reset context, the model needs about 5-10 seconds to "settle" into a stable groove.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Safety Filters:&lt;/strong&gt; The model checks prompts against safety filters. Avoid asking for specific copyrighted artists ("Style of Taylor Swift"); instead, deconstruct their sound into descriptors ("Pop, female vocals, acoustic guitar").&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Instrumental Only:&lt;/strong&gt; The model is only instrumental. While you can set &lt;code&gt;music_generation_mode&lt;/code&gt; to &lt;code&gt;VOCALIZATION&lt;/code&gt;, it produces vocal-like textures (oohs/aahs), not coherent lyrics.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Session duration limit:&lt;/strong&gt; The session are currently limited to 10mn, but you can just restart a new one afterwards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More details and prompt ideas in Lyria RealTime's &lt;a href="https://ai.google.dev/gemini-api/docs/music-generation" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  8. Ready to Jam? Choose your preferred way to play with Lyria RealTime
&lt;/h2&gt;

&lt;p&gt;One of the easiest places to try is AI Studio, where a couple of cool apps are available for you to play with, and to vibe-customize to your needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://aistudio.google.com/apps/bundled/promptdj" rel="noopener noreferrer"&gt;Prompt DJ&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://aistudio.google.com/apps/bundled/promptdj-midi" rel="noopener noreferrer"&gt;MIDI DJ&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://labs.google/fx/tools/music-fx-dj" rel="noopener noreferrer"&gt;MusicFX&lt;/a&gt;&lt;/strong&gt; (US only) let you add and mix multiple prompts in real time:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://aistudio.google.com/apps/bundled/spacedj" rel="noopener noreferrer"&gt;Space DJ&lt;/a&gt;&lt;/strong&gt; lets you navigate the universe of music genders with a spacecraft! I personally love navigating around the &lt;em&gt;italo-disco&lt;/em&gt; and &lt;em&gt;euro-france&lt;/em&gt; planets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;   &lt;strong&gt;&lt;a href="https://aistudio.google.com/apps/bundled/lyria_camera" rel="noopener noreferrer"&gt;Lyria Camera&lt;/a&gt;&lt;/strong&gt; creates music in real time based on what it sees. I'd love to have that connected to my dashcam!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;&lt;a href="https://magenta.withgoogle.com/demos" rel="noopener noreferrer"&gt;Magenta website&lt;/a&gt;&lt;/strong&gt; also features a lot of cool demos. It's also a great place to get more details on Deepmind's music generation models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, &lt;strong&gt;check the &lt;a href="https://github.com/Giom-V/magic-mirror" rel="noopener noreferrer"&gt;magical mirror&lt;/a&gt; demo&lt;/strong&gt; I made that uses Lyria to create background music according to what it tells (Gemini generates the prompts on the fly):&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/Z7FUh8B4im4"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;And now the floor is yours, what will you create using Lyria RealTime?&lt;/p&gt;

&lt;h4&gt;
  
  
  Resources:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/music-generation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Magenta &lt;a href="http://magenta.withgoogle.com/" rel="noopener noreferrer"&gt;website&lt;/a&gt; and &lt;a href="https://magenta.withgoogle.com/blog" rel="noopener noreferrer"&gt;blog&lt;/a&gt; for the latest news on the music generation models.&lt;/li&gt;
&lt;li&gt;AI Studio &lt;a href="https://aistudio.google.com/apps?source=showcase&amp;amp;showcaseTag=gen-media" rel="noopener noreferrer"&gt;gen-media apps&lt;/a&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%2Fvk7aa727myswxdfemkja.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%2Fvk7aa727myswxdfemkja.png" alt="Congratulation"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gemini</category>
      <category>lyria</category>
      <category>tutorial</category>
      <category>music</category>
    </item>
    <item>
      <title>Nano-Banana Pro: Prompting Guide &amp; Strategies</title>
      <dc:creator>Guillaume Vernade</dc:creator>
      <pubDate>Thu, 27 Nov 2025 18:04:07 +0000</pubDate>
      <link>https://dev.to/googleai/nano-banana-pro-prompting-guide-strategies-1h9n</link>
      <guid>https://dev.to/googleai/nano-banana-pro-prompting-guide-strategies-1h9n</guid>
      <description>&lt;p&gt;&lt;strong&gt;Nano-Banana Pro&lt;/strong&gt; is a significant leap forward from previous generation models, moving from "fun" image generation to "functional" professional asset production. It excels in &lt;strong&gt;text rendering, character consistency, visual synthesis, world knowledge (Search), and high-resolution (4K) output.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Following the &lt;a href="https://dev.to/googleai/introducing-nano-banana-pro-complete-developer-tutorial-5fc8"&gt;developer guide&lt;/a&gt; on how to get started with &lt;a href="//ai.studio"&gt;AI Studio&lt;/a&gt; and the API, this guide covers the core capabilities and how to prompt them effectively.&lt;/p&gt;




&lt;p&gt;Here's what you'll find in this article:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0. The Golden Rules of Prompting&lt;/li&gt;
&lt;li&gt;1. Text Rendering, Infographics &amp;amp; Visual Synthesis&lt;/li&gt;
&lt;li&gt;2. Character Consistency &amp;amp; Viral Thumbnails&lt;/li&gt;
&lt;li&gt;3. Grounding with Google Search&lt;/li&gt;
&lt;li&gt;4. Advanced Editing, Restoration &amp;amp; Colorization&lt;/li&gt;
&lt;li&gt;5. Dimensional Translation (2D ↔ 3D)&lt;/li&gt;
&lt;li&gt;6. High-Resolution &amp;amp; Textures&lt;/li&gt;
&lt;li&gt;7. Thinking &amp;amp; Reasoning&lt;/li&gt;
&lt;li&gt;8. One-Shot Storyboarding &amp;amp; Concept Art&lt;/li&gt;
&lt;li&gt;9. Structural Control &amp;amp; Layout Guidance&lt;/li&gt;
&lt;li&gt;10. What's Next?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛑 Section 0: The Golden Rules of Prompting
&lt;/h2&gt;

&lt;p&gt;Nano-Banana Pro is a "Thinking" model. It doesn't just match keywords; it understands intent, physics, and composition. To get the best results, stop using "tag soups" (e.g., &lt;code&gt;dog, park, 4k, realistic&lt;/code&gt;) and start acting like a Creative Director.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Edit, Don't Re-roll&lt;/strong&gt;&lt;br&gt;
The model is exceptionally good at understanding conversational edits. If an image is 80% correct, do not generate a new one from scratch. Instead, simply ask for the specific change you need.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;Example:&lt;/em&gt; "That's great, but change the lighting to sunset and make the text neon blue."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Use Natural Language &amp;amp; Full Sentences&lt;/strong&gt;&lt;br&gt;
Talk to the model as if you were briefing a human artist. Use proper grammar and descriptive adjectives.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  ❌ &lt;strong&gt;Bad:&lt;/strong&gt; "Cool car, neon, city, night, 8k."&lt;/li&gt;
&lt;li&gt;  ✅ &lt;strong&gt;Good:&lt;/strong&gt; "A cinematic wide shot of a futuristic sports car speeding through a rainy Tokyo street at night. The neon signs reflect off the wet pavement and the car's metallic chassis."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Be Specific and Descriptive&lt;/strong&gt;&lt;br&gt;
Vague prompts yield generic results. Define the subject, the setting, the lighting, and the mood.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Subject:&lt;/strong&gt; Instead of "a woman," say "a sophisticated elderly woman wearing a vintage chanel-style suit."&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Materiality:&lt;/strong&gt; Describe textures. "Matte finish," "brushed steel," "soft velvet," "crumpled paper."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Provide Context (The "Why" or "For whom")&lt;/strong&gt;&lt;br&gt;
Because the model "thinks," giving it context helps it make logical artistic decisions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;Example:&lt;/em&gt; "Create an image of a sandwich &lt;strong&gt;for a Brazilian high-end gourmet cookbook&lt;/strong&gt;." (The model will infer professional plating, shallow depth of field, and perfect lighting).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Text Rendering, Infographics &amp;amp; Visual Synthesis
&lt;/h2&gt;

&lt;p&gt;Nano-Banana Pro has SOTA capabilities for rendering legible, stylized text and synthesizing complex information into visual formats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Compression:&lt;/strong&gt; Ask the model to "compress" dense text or PDFs into visual aids.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Style:&lt;/strong&gt; Specify if you want a "polished editorial," a "technical diagram," or a "hand-drawn whiteboard" look.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Quotes:&lt;/strong&gt; Clearly specify the text you want in quotes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Earnings Report Infographic (Data Ingestion):&lt;/strong&gt;&lt;br&gt;
[Input PDF of Google's latest &lt;a href="https://s206.q4cdn.com/479360582/files/doc_news/2025/Oct/29/attachments/2025q3-alphabet-earnings-release.pdf" rel="noopener noreferrer"&gt;earnings report&lt;/a&gt;]&lt;br&gt;
"Generate a clean, modern infographic summarizing the key financial highlights from this earnings report. Include charts for 'Revenue Growth' and 'Net Income', and highlight the CEO's key quote in a stylized pull-quote box."&lt;/p&gt;
&lt;/blockquote&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%2Fe4pg6n5f3udltijhcm77.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%2Fe4pg6n5f3udltijhcm77.png" alt="Earnings Report Infographic" width="800" height="436"&gt;&lt;/a&gt; &lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Generate%20a%20clean%2C%20modern%20infographic%20summarizing%20the%20key%20financial%20highlights%20from%20this%20earnings%20report.%20Include%20charts%20for%20%27Revenue%20Growth%27%20and%20%27Net%20Income%27%2C%20and%20highlight%20the%20CEO%27s%20key%20quote%20in%20a%20stylized%20pull-quote%20box.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a PDF)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Retro Infographic:&lt;/strong&gt;&lt;br&gt;
"Make a retro, 1950s-style infographic about the history of the American diner. Include distinct sections for 'The Food,' 'The Jukebox,' and 'The Decor.' Ensure all text is legible and stylized to match the period."&lt;/p&gt;
&lt;/blockquote&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%2Fyo8vewspjc6lrro025z5.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%2Fyo8vewspjc6lrro025z5.png" alt="Retro Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Make%20a%20retro%2C%201950s-style%20infographic%20about%20the%20history%20of%20the%20American%20diner.%20Include%20distinct%20sections%20for%20%27The%20Food%2C%27%20%27The%20Jukebox%2C%27%20and%20%27The%20Decor.%27%20Ensure%20all%20text%20is%20legible%20and%20stylized%20to%20match%20the%20period.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Technical Diagram:&lt;/strong&gt;&lt;br&gt;
"Create an orthographic blueprint that describes this building in plan, elevation, and section. Label the 'North Elevation' and 'Main Entrance' clearly in technical architectural font. Format 16:9."&lt;/p&gt;
&lt;/blockquote&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%2Ffk7q8vqyctplwufbwdsj.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%2Ffk7q8vqyctplwufbwdsj.png" alt="Technical Diagram" width="800" height="446"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Create%20an%20orthographic%20blueprint%20that%20describes%20this%20building%20in%20plan%2C%20elevation%2C%20and%20section.%20Label%20the%20%27North%20Elevation%27%20and%20%27Main%20Entrance%27%20clearly%20in%20technical%20architectural%20font.%20Format%2016%3A9.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Whiteboard Summary (Educational):&lt;/strong&gt;&lt;br&gt;
"Summarize the concept of 'Transformer Neural Network Architecture' as a hand-drawn whiteboard diagram suitable for a university lecture. Use different colored markers for the Encoder and Decoder blocks, and include legible labels for 'Self-Attention' and 'Feed Forward'."&lt;/p&gt;
&lt;/blockquote&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%2Fwx1jrqoda2bdwp03ac3o.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%2Fwx1jrqoda2bdwp03ac3o.png" alt="Whiteboard Summary" width="800" height="436"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Summarize%20the%20concept%20of%20%27Transformer%20Neural%20Network%20Architecture%27%20as%20a%20hand-drawn%20whiteboard%20diagram%20suitable%20for%20a%20university%20lecture.%20Use%20different%20colored%20markers%20for%20the%20Encoder%20and%20Decoder%20blocks%2C%20and%20include%20legible%20labels%20for%20%27Self-Attention%27%20and%20%27Feed%20Forward%27.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Character Consistency &amp;amp; Viral Thumbnails
&lt;/h2&gt;

&lt;p&gt;Nano-Banana Pro supports &lt;strong&gt;up to 14 reference images&lt;/strong&gt; (6 with high fidelity). This allows for "Identity Locking"—placing a specific person or character into new scenarios without facial distortion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Identity Locking:&lt;/strong&gt; Explicitly state: "Keep the person's facial features exactly the same as Image 1."&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Expression/Action:&lt;/strong&gt; Describe the &lt;em&gt;change&lt;/em&gt; in emotion or pose while maintaining the identity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Viral Composition:&lt;/strong&gt; Combine subjects with bold graphics and text in a single pass.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The "Viral Thumbnail" (Identity + Text + Graphics):&lt;/strong&gt;&lt;br&gt;
"Design a viral video thumbnail using the person from Image 1. &lt;strong&gt;Face Consistency:&lt;/strong&gt; Keep the person's facial features exactly the same as Image 1, but change their expression to look excited and surprised. &lt;strong&gt;Action:&lt;/strong&gt; Pose the person on the left side, pointing their finger towards the right side of the frame. &lt;strong&gt;Subject:&lt;/strong&gt; On the right side, place a high-quality image of a delicious avocado toast. &lt;strong&gt;Graphics:&lt;/strong&gt; Add a bold yellow arrow connecting the person's finger to the toast. &lt;strong&gt;Text:&lt;/strong&gt; Overlay massive, pop-style text in the middle: '3分钟搞定!' (Done in 3 mins!). Use a thick white outline and drop shadow. &lt;strong&gt;Background:&lt;/strong&gt; A blurred, bright kitchen background. High saturation and contrast."&lt;/p&gt;
&lt;/blockquote&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%2Fxj70ws3c9zt35ix9kb0k.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%2Fxj70ws3c9zt35ix9kb0k.png" alt="Viral Thumbnail" width="800" height="436"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Design%20a%20viral%20video%20thumbnail%20using%20the%20person%20from%20Image%201.%20Face%20Consistency%3A%20Keep%20the%20person%27s%20facial%20features%20exactly%20the%20same%20as%20Image%201%2C%20but%20change%20their%20expression%20to%20look%20excited%20and%20surprised.%20Action%3A%20Pose%20the%20person%20on%20the%20left%20side%2C%20pointing%20their%20finger%20towards%20the%20right%20side%20of%20the%20frame.%20Subject%3A%20On%20the%20right%20side%2C%20place%20a%20high-quality%20image%20of%20a%20delicious%20avocado%20toast.%20Graphics%3A%20Add%20a%20bold%20yellow%20arrow%20connecting%20the%20person%27s%20finger%20to%20the%20toast.%20Text%3A%20Overlay%20massive%2C%20pop-style%20text%20in%20the%20middle%3A%20%273%E5%88%86%E9%92%9F%E6%90%9E%E5%AE%9A!%27%20%28Done%20in%203%20mins!%29.%20Use%20a%20thick%20white%20outline%20and%20drop%20shadow.%20Background%3A%20A%20blurred%2C%20bright%20kitchen%20background.%20High%20saturation%20and%20contrast.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a reference image)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The "Fluffy Friends" Scenario (Group Consistency):&lt;/strong&gt;&lt;br&gt;
[Input 3 images of different plush creatures]&lt;br&gt;
"Create a funny 10-part story with these 3 fluffy friends going on a tropical vacation. The story is thrilling throughout with emotional highs and lows and ends in a happy moment. &lt;strong&gt;Keep the attire and identity consistent for all 3 characters&lt;/strong&gt;, but their expressions and angles should vary throughout all 10 images. Make sure to only have one of each character in each image."&lt;/p&gt;
&lt;/blockquote&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%2Futqhw1hi7997u4pftee6.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%2Futqhw1hi7997u4pftee6.png" alt="The " width="800" height="1433"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Create%20a%20funny%2010-part%20story%20with%20these%203%20fluffy%20friends%20going%20on%20a%20tropical%20vacation.%20The%20story%20is%20thrilling%20throughout%20with%20emotional%20highs%20and%20lows%20and%20ends%20in%20a%20happy%20moment.%20Keep%20the%20attire%20and%20identity%20consistent%20for%20all%203%20characters%2C%20but%20their%20expressions%20and%20angles%20should%20vary%20throughout%20all%2010%20images.%20Make%20sure%20to%20only%20have%20one%20of%20each%20character%20in%20each%20image.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading reference images)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Brand Asset Generation:&lt;/strong&gt;&lt;br&gt;
[Input 1 image of a product]&lt;br&gt;
"Create 9 stunning fashion shots as if they’re from an award-winning fashion editorial. Use this reference as the brand style but add nuance and variety to the range so they convey a professional design touch. Please generate nine images, one at a time."&lt;/p&gt;
&lt;/blockquote&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%2Fvdi6ut3gimx6gglj08ku.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%2Fvdi6ut3gimx6gglj08ku.png" alt="Brand Asset Generation" width="800" height="1422"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Create%209%20stunning%20fashion%20shots%20as%20if%20they%E2%80%99re%20from%20an%20award-winning%20fashion%20editorial.%20Use%20this%20reference%20as%20the%20brand%20style%20but%20add%20nuance%20and%20variety%20to%20the%20range%20so%20they%20convey%20a%20professional%20design%20touch.%20Please%20generate%20nine%20images%2C%20one%20at%20a%20time.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a reference image)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Grounding with Google Search
&lt;/h2&gt;

&lt;p&gt;Nano-Banana Pro uses Google Search to generate imagery based on real-time data, current events, or factual verification, reducing hallucinations on timely topics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Ask for visualizations of dynamic data (weather, stocks, news).&lt;/li&gt;
&lt;li&gt;  The model will "Think" (reason) about the search results before generating the image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Real-Time Data Visualization:&lt;/strong&gt;&lt;br&gt;
"Visualize the current stock value of the main tech companies and the current trends. For each add some explanation on what happened recently which could explain that trend."&lt;/p&gt;
&lt;/blockquote&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%2F6trm4bcm20isbse3lqtw.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%2F6trm4bcm20isbse3lqtw.png" alt="Real-Time Data Visualization" width="800" height="436"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Visualize%20the%20current%20stock%20value%20of%20the%20main%20tech%20companies%20and%20the%20current%20trends.%20For%20each%20add%20some%20explanation%20on%20what%20happened%20recently%20which%20could%20explain%20that%20trend.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Event Visualization:&lt;/strong&gt;&lt;br&gt;
"Generate an infographic of the best times to visit the U.S. National Parks in 2025 based on current travel trends."&lt;/p&gt;
&lt;/blockquote&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%2Fqb7cbgxiym5fg6c2warh.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%2Fqb7cbgxiym5fg6c2warh.png" alt="Event Visualization" width="800" height="446"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Generate%20an%20infographic%20of%20the%20best%20times%20to%20visit%20the%20U.S.%20National%20Parks%20in%202025%20based%20on%20current%20travel%20trends.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just be careful that it tend to mix a lot of information together, so as always with AI, double-check everything!&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Advanced Editing, Restoration &amp;amp; Colorization
&lt;/h2&gt;

&lt;p&gt;The model excels at complex edits via conversational prompting. This includes "In-painting" (removing/adding objects), "Restoration" (fixing old photos), "Colorization" (Manga/B&amp;amp;W photos), and "Style Swapping."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Semantic Instructions:&lt;/strong&gt; You do not need to manually mask; simply tell the model what to change naturally.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Physics Understanding:&lt;/strong&gt; You can ask for complex changes like "fill this glass with liquid" to test physics generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Object Removal &amp;amp; In-painting:&lt;/strong&gt;&lt;br&gt;
"Remove the tourists from the background of this photo and fill the space with logical textures (cobblestones and storefronts) that match the surrounding environment."&lt;/p&gt;
&lt;/blockquote&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%2Fa10yh8njebl5nssy8ht2.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%2Fa10yh8njebl5nssy8ht2.png" alt="Object Removal &amp;amp; In-painting" width="800" height="800"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Remove%20the%20tourists%20from%20the%20background%20of%20this%20photo%20and%20fill%20the%20space%20with%20logical%20textures%20(cobblestones%20and%20storefronts)%20that%20match%20the%20surrounding%20environment.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a photo)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Manga/Comic Colorization:&lt;/strong&gt;&lt;br&gt;
[Input black and white manga panel]&lt;br&gt;
"Colorize this manga panel. Use a vibrant anime style palette. Ensure the lighting effects on the energy beams are glowing neon blue and the character's outfit is consistent with their official colors."&lt;/p&gt;
&lt;/blockquote&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%2Fzrcg33qn8gccuknkh7iq.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%2Fzrcg33qn8gccuknkh7iq.png" alt="Manga/Comic Colorization" width="800" height="597"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Colorize%20this%20manga%20panel.%20Use%20a%20vibrant%20anime%20style%20palette.%20Ensure%20the%20lighting%20effects%20on%20the%20energy%20beams%20are%20glowing%20neon%20blue%20and%20the%20character%27s%20outfit%20is%20consistent%20with%20their%20official%20colors.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading an image)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Localization (Text Translation + Cultural Adaptation):&lt;/strong&gt;&lt;br&gt;
[Input image of a London bus stop ad]&lt;br&gt;
"Take this concept and localize it to a Tokyo setting, including translating the tagline into Japanese. Change the background to a bustling Shibuya street at night."&lt;/p&gt;
&lt;/blockquote&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%2Fnmlu3njxs595bpf6jo6i.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%2Fnmlu3njxs595bpf6jo6i.png" alt="Localization " width="687" height="1024"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Take%20this%20concept%20and%20localize%20it%20to%20a%20Tokyo%20setting%2C%20including%20translating%20the%20tagline%20into%20Japanese.%20Change%20the%20background%20to%20a%20bustling%20Shibuya%20street%20at%20night.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading an image)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Lighting/Seasonal Control:&lt;/strong&gt;&lt;br&gt;
[Input image of a house in summer]&lt;br&gt;
"Turn this scene into winter time. Keep the house architecture exactly the same, but add snow to the roof and yard, and change the lighting to a cold, overcast afternoon."&lt;/p&gt;
&lt;/blockquote&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%2F7t7fbnjyr62zvrwfhi27.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%2F7t7fbnjyr62zvrwfhi27.png" alt="Lighting/Seasonal Control" width="687" height="1024"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Turn%20this%20scene%20into%20winter%20time.%20Keep%20the%20house%20architecture%20exactly%20the%20same%2C%20but%20add%20snow%20to%20the%20roof%20and%20yard%2C%20and%20change%20the%20lighting%20to%20a%20cold%2C%20overcast%20afternoon.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading an image)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Dimensional Translation (2D ↔ 3D)
&lt;/h2&gt;

&lt;p&gt;A powerful new capability is translating 2D schematics into 3D visualizations, or vice versa. This is ideal for interior designers, architects, and meme creators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2D Floor Plan to 3D Interior Design Board:&lt;/strong&gt;&lt;br&gt;
"Based on the uploaded 2D floor plan, generate a professional interior design presentation board in a single image. &lt;strong&gt;Layout:&lt;/strong&gt; A collage with one large main image at the top (wide-angle perspective of the living area), and three smaller images below (Master Bedroom, Home Office, and a 3D top-down floor plan). &lt;strong&gt;Style:&lt;/strong&gt; Apply a Modern Minimalist style with warm oak wood flooring and off-white walls across ALL images. &lt;strong&gt;Quality:&lt;/strong&gt; Photorealistic rendering, soft natural lighting."&lt;/p&gt;
&lt;/blockquote&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%2F1lv4uptgdjnumcao1w16.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%2F1lv4uptgdjnumcao1w16.png" alt="Interior Design" width="800" height="436"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Based%20on%20the%20uploaded%202D%20floor%20plan%2C%20generate%20a%20professional%20interior%20design%20presentation%20board%20in%20a%20single%20image.%20Layout%3A%20A%20collage%20with%20one%20large%20main%20image%20at%20the%20top%20(wide-angle%20perspective%20of%20the%20living%20area)%2C%20and%20three%20smaller%20images%20below%20(Master%20Bedroom%2C%20Home%20Office%2C%20and%20a%203D%20top-down%20floor%20plan).%20Style%3A%20Apply%20a%20Modern%20Minimalist%20style%20with%20warm%20oak%20wood%20flooring%20and%20off-white%20walls%20across%20ALL%20images.%20Quality%3A%20Photorealistic%20rendering%2C%20soft%20natural%20lighting.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a floor plan)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2D to 3D Meme Conversion:&lt;/strong&gt;&lt;br&gt;
"Turn the 'This is Fine' dog meme into a photorealistic 3D render. Keep the composition identical but make the dog look like a plush toy and the fire look like realistic flames."&lt;/p&gt;
&lt;/blockquote&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%2Fdo83a3gzt1h287p5v4zf.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%2Fdo83a3gzt1h287p5v4zf.png" alt="Meme Conversion" width="800" height="446"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Turn%20the%20%27This%20is%20Fine%27%20dog%20meme%20into%20a%20photorealistic%203D%20render.%20Keep%20the%20composition%20identical%20but%20make%20the%20dog%20look%20like%20a%20plush%20toy%20and%20the%20fire%20look%20like%20realistic%20flames.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. High-Resolution &amp;amp; Textures
&lt;/h2&gt;

&lt;p&gt;Nano-Banana Pro supports native 1K to 4K image generation. This is particularly useful for detailed textures or large-format prints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Explicitly request high resolutions (2K or 4K) if your API/Interface allows.&lt;/li&gt;
&lt;li&gt;  Describe high-fidelity details (imperfections, surface textures).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;4K Texture Generation:&lt;/strong&gt;&lt;br&gt;
"Harness native high-fidelity output to craft a breathtaking, atmospheric environment of a mossy forest floor. Command complex lighting effects and delicate textures, ensuring every strand of moss and beam of light is rendered in pixel-perfect resolution suitable for a 4K wallpaper."&lt;/p&gt;
&lt;/blockquote&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%2F8ecke4m4ow0ukgddy164.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%2F8ecke4m4ow0ukgddy164.png" alt="4K Texture Generation" width="800" height="446"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Harness%20native%20high-fidelity%20output%20to%20craft%20a%20breathtaking%2C%20atmospheric%20environment%20of%20a%20mossy%20forest%20floor.%20Command%20complex%20lighting%20effects%20and%20delicate%20textures%2C%20ensuring%20every%20strand%20of%20moss%20and%20beam%20of%20light%20is%20rendered%20in%20pixel-perfect%20resolution%20suitable%20for%20a%204K%20wallpaper.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Complex Logic (Thinking Mode):&lt;/strong&gt;&lt;br&gt;
"Create a hyper-realistic infographic of a gourmet cheeseburger, deconstructed to show the texture of the toasted brioche bun, the seared crust of the patty, and the glistening melt of the cheese. Label each layer with its flavor profile."&lt;/p&gt;
&lt;/blockquote&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%2F1ogz1rel54z35crs8s26.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%2F1ogz1rel54z35crs8s26.png" alt="Complex Logic" width="800" height="446"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Create%20a%20hyper-realistic%20infographic%20of%20a%20gourmet%20cheeseburger%2C%20deconstructed%20to%20show%20the%20texture%20of%20the%20toasted%20brioche%20bun%2C%20the%20seared%20crust%20of%20the%20patty%2C%20and%20the%20glistening%20melt%20of%20the%20cheese.%20Label%20each%20layer%20with%20its%20flavor%20profile.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Thinking &amp;amp; Reasoning
&lt;/h2&gt;

&lt;p&gt;Nano-Banana Pro defaults to a "Thinking" process where it generates interim thought images (not charged) to refine composition before rendering the final output. This allows for data analysis and solving visual problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Solve Equations:&lt;/strong&gt;&lt;br&gt;
"Solve log_{x^2+1}(x^4-1)=2 in C on a white board. Show the steps clearly."&lt;/p&gt;
&lt;/blockquote&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%2Fwoy90sxms1jg6oj16h49.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%2Fwoy90sxms1jg6oj16h49.jpg" alt="Solve Equations" width="800" height="436"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Solve%20log_%7Bx%2B1%7D(x%5E2%2B1)%3D2%20in%20C%20on%20a%20white%20board.%20Show%20the%20steps%20clearly.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Visual Reasoning:&lt;/strong&gt;&lt;br&gt;
"Analyze this image of a room and generate a 'before' image that shows what the room might have looked like during construction, showing the framing and unfinished drywall."&lt;/p&gt;
&lt;/blockquote&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%2Fe8pq0z5wyn3ajxp8lrb6.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%2Fe8pq0z5wyn3ajxp8lrb6.png" alt="Visual Reasoning" width="800" height="800"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Analyze%20this%20image%20of%20a%20room%20and%20generate%20a%20%27before%27%20image%20that%20shows%20what%20the%20room%20might%20have%20looked%20like%20during%20construction%2C%20showing%20the%20framing%20and%20unfinished%20drywall.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading an image)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. One-Shot Storyboarding &amp;amp; Concept Art
&lt;/h2&gt;

&lt;p&gt;You can generate sequential art or storyboards without a grid, ensuring a cohesive narrative flow in a single session. This is also popular for "Movie Concept Art" (e.g., fake leaks of upcoming films).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create an addictively intriguing 9-part story with 9 images featuring a woman and man in an award-winning luxury luggage commercial. The story should have emotional highs and lows, ending on an elegant shot of the woman with the logo. &lt;strong&gt;The identity of the woman and man and their attire must stay consistent throughout&lt;/strong&gt; but they can and should be seen from different angles and distances. Please generate images one at a time. Make sure every image is in a 16:9 landscape format."&lt;/p&gt;
&lt;/blockquote&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%2Fheq0q4omitqbauym8cg7.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%2Fheq0q4omitqbauym8cg7.png" alt="One-Shot Storyboarding" width="800" height="446"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Create%20an%20addictively%20intriguing%209-part%20story%20with%209%20images%20featuring%20a%20woman%20and%20man%20in%20an%20award-winning%20luxury%20luggage%20commercial.%20The%20story%20should%20have%20emotional%20highs%20and%20lows%2C%20ending%20on%20an%20elegant%20shot%20of%20the%20woman%20with%20the%20logo.%20The%20identity%20of%20the%20woman%20and%20man%20and%20their%20attire%20must%20stay%20consistent%20throughout%20but%20they%20can%20and%20should%20be%20seen%20from%20different%20angles%20and%20distances.%20Please%20generate%20images%20one%20at%20a%20time.%20Make%20sure%20every%20image%20is%20in%20a%2016%3A9%20landscape%20format.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Structural Control &amp;amp; Layout Guidance
&lt;/h2&gt;

&lt;p&gt;Input images aren't limited to character references or subjects to edit. You can use them to strictly control the &lt;strong&gt;composition and layout&lt;/strong&gt; of the final output. This is a game-changer for designers who need to turn a napkin sketch, a wireframe, or a specific grid layout into a polished asset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Drafts &amp;amp; Sketches:&lt;/strong&gt; Upload a hand-drawn sketch to define exactly where the text and object should sit.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Wireframes:&lt;/strong&gt; Use screenshots of existing layouts or wireframes to generate high-fidelity UI mockups.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Grids:&lt;/strong&gt; Use grid images to force the model to generate assets for tile-based games or LED displays.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sketch to Final Ad:&lt;/strong&gt;&lt;br&gt;
"Create a ad for a [product] following this sketch."&lt;/p&gt;
&lt;/blockquote&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%2F93lhzmeat6ta2lkwicvo.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%2F93lhzmeat6ta2lkwicvo.png" alt="Sketch to Final Ad" width="800" height="446"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Create%20a%20high-end%20magazine%20advertisement%20for%20a%20luxury%20perfume%20brand%20called%20%27Nebula%27%20based%20on%20this%20hand-drawn%20sketch.%20Keep%20the%20exact%20layout%20of%20the%20bottle%20and%20text%20placement%2C%20but%20render%20it%20in%20a%20photorealistic%20style%20with%20a%20galaxy-themed%20background.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a sketch)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;UI Mockup from Wireframe:&lt;/strong&gt;&lt;br&gt;
"Create a mock-up for a [product] following these guidelines."&lt;/p&gt;
&lt;/blockquote&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%2Fn5dxh2w65y41x01d3x1r.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%2Fn5dxh2w65y41x01d3x1r.png" alt="UI Mockup from Wireframe" width="800" height="446"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Generate%20a%20photorealistic%20UI%20mockup%20for%20a%20fitness%20tracking%20app%20based%20on%20this%20wireframe.%20Replace%20the%20placeholder%20boxes%20with%20high-quality%20images%20of%20runners%20and%20data%20visualization%20charts%2C%20but%20strictly%20adhere%20to%20the%20button%20placement%20and%20grid%20structure.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a wireframe)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pixel Art &amp;amp; LED Displays:&lt;/strong&gt;&lt;br&gt;
"Generate a pixel art sprite of a unicorn that fits perfectly into this 64x64 grid image. Use high contrast colors."&lt;br&gt;
&lt;em&gt;(Tip: Developers can then programmatically extract the center color of each cell to drive a connected 64x64 LED matrix display).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fvpr4xhguji825rae3udw.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%2Fvpr4xhguji825rae3udw.png" alt="Pixel Art" width="800" height="800"&gt;&lt;/a&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?prompt=Generate%20a%20pixel%20art%20sprite%20of%20a%20unicorn%20that%20fits%20perfectly%20into%20this%2064x64%20grid%20image.%20Use%20high%20contrast%20colors.&amp;amp;model=gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;Try it in AI Studio&lt;/a&gt; &lt;em&gt;(Note: Requires uploading a grid image)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sprites:&lt;/strong&gt;&lt;br&gt;
"Sprite sheet of a woman doing a backflip on a drone, 3x3 grid, sequence, frame by frame animation, square aspect ratio. Follow the structure of the attached reference image exactly.."&lt;br&gt;
(Tip: You can then extract each cell and make a gif)&lt;/p&gt;
&lt;/blockquote&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%2F0kafc8px17sbjzpiz744.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%2F0kafc8px17sbjzpiz744.png" alt="Sprite sheet" width="800" height="800"&gt;&lt;/a&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%2Flnq1xjj2f89jmbsazcef.gif" 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%2Flnq1xjj2f89jmbsazcef.gif" alt="Sprite" width="340" height="340"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://colab.sandbox.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_Started_Nano_Banana.ipynb#scrollTo=xuQeyK-teUf1" rel="noopener noreferrer"&gt;Try it in Colab&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  10. What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that you have mastered the basics of prompting, here is how you can start building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Experiment in the UI:&lt;/strong&gt; &lt;a href="https://aistudio.google.com/" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt; is the fastest way to test prompts and parameters.&lt;/li&gt;
&lt;li&gt;  Check really cool &lt;strong&gt;Nano-banana powered app&lt;/strong&gt; in the &lt;a href="https://aistudio.google.com/apps?source=showcase&amp;amp;showcaseTag=nano-banana" rel="noopener noreferrer"&gt;App Gallery&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Vibe-code you dream app&lt;/strong&gt;: Transform you best prompt into an app that you can easily share with your friends in &lt;a href="https://aistudio.google.com/apps" rel="noopener noreferrer"&gt;AI Studio Build&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Build Applications:&lt;/strong&gt; Ready to code? Check out the &lt;a href="https://dev.to/googleai/introducing-nano-banana-pro-complete-developer-tutorial-5fc8"&gt;developer guide&lt;/a&gt; or the &lt;a href="https://colab.sandbox.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_Started_Nano_Banana.ipynb#nano-banana-pro" rel="noopener noreferrer"&gt;Gemini API Cookbook&lt;/a&gt; for guides and code snippets.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Technical Deep Dive:&lt;/strong&gt; Read the full &lt;a href="https://ai.google.dev/gemini-api/docs" rel="noopener noreferrer"&gt;Gemini API Documentation&lt;/a&gt; for details on rate limits, pricing, and integration.&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%2Fej883k4hdvceoweevlo8.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%2Fej883k4hdvceoweevlo8.png" alt="Banana master" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gemini</category>
      <category>nanobanana</category>
      <category>promptengineering</category>
    </item>
    <item>
      <title>Introducing Nano Banana Pro: Complete Developer Tutorial</title>
      <dc:creator>Guillaume Vernade</dc:creator>
      <pubDate>Fri, 21 Nov 2025 21:30:41 +0000</pubDate>
      <link>https://dev.to/googleai/introducing-nano-banana-pro-complete-developer-tutorial-5fc8</link>
      <guid>https://dev.to/googleai/introducing-nano-banana-pro-complete-developer-tutorial-5fc8</guid>
      <description>&lt;p&gt;You loved &lt;a href="https://dev.to/googleai/how-to-build-with-nano-banana-complete-developer-tutorial-646"&gt;Nano-Banana&lt;/a&gt;? Created figurine images of all your friends and ghost faces behind all your foes? Here now comes the not-so-nano "&lt;a href="https://deepmind.google/models/gemini-image/pro/" rel="noopener noreferrer"&gt;Gemini 3 Pro Image&lt;/a&gt;" model, that you will all prefer calling &lt;strong&gt;Nano Banana Pro&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;While the Flash model (Nano Banana) brought speed and affordability, the Pro version introduces "thinking" capabilities, search grounding, and high-fidelity 4K output. It's time to go bananas with complex creative tasks!&lt;/p&gt;

&lt;p&gt;This guide will walk you through the advanced features of Nano Banana Pro using the &lt;a href="https://ai.google.dev/" rel="noopener noreferrer"&gt;Gemini Developer API&lt;/a&gt;. For prompting advices, the &lt;a href="https://dev.to/googleai/nano-banana-pro-prompting-guide-strategies-1h9n"&gt;prompting guide&lt;/a&gt; will be your next read.&lt;/p&gt;

&lt;p&gt;This guide will cover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Using Nano Banana Pro in Google AI Studio&lt;/li&gt;
&lt;li&gt; Project setup&lt;/li&gt;
&lt;li&gt; Initialize the Client&lt;/li&gt;
&lt;li&gt; Basic Generation (The Classics)&lt;/li&gt;
&lt;li&gt; The "Thinking" Process&lt;/li&gt;
&lt;li&gt; Search Grounding&lt;/li&gt;
&lt;li&gt; High-Resolution 4K Generation&lt;/li&gt;
&lt;li&gt; Multilingual Capabilities&lt;/li&gt;
&lt;li&gt; Advanced Image Mixing&lt;/li&gt;
&lt;li&gt;Pro-Exclusive Demos&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: for an interactive version of this post, checkout the &lt;a href="https://colab.sandbox.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_Started_Nano_Banana.ipynb" rel="noopener noreferrer"&gt;python cookbook&lt;/a&gt; or the AI Studio's &lt;a href="https://ai.studio/apps/bundled/get_started_image_out?fullscreenApplet=true" rel="noopener noreferrer"&gt;Javascript Notebook&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1) Using Nano Banana Pro in Google AI Studio
&lt;/h2&gt;

&lt;p&gt;While end-users can access Nano Banana Pro in the &lt;a href="https://gemini.google.com/" rel="noopener noreferrer"&gt;Gemini app&lt;/a&gt;, the best environment for developers to prototype and test prompts is &lt;a href="https://aistudio.google.com/banana-pro" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;. AI Studio is a playground to experiment with all available AI models before writing any code, and it's also the entry point for building with the Gemini API.&lt;/p&gt;

&lt;p&gt;You can use Nano Banana Pro within AI Studio. To get started, go to &lt;a href="https://aistudio.google.com/banana-pro" rel="noopener noreferrer"&gt;aistudio.google.com&lt;/a&gt;, sign in with your Google account, and select &lt;strong&gt;Nano Banana Pro&lt;/strong&gt; (Gemini 3 Pro Image) from the model picker.&lt;/p&gt;

&lt;p&gt;Contrary to Nano-Banana, the pro version &lt;strong&gt;doesn't have a free tier&lt;/strong&gt;, which means you need to select an API key with billing enabled (see "project setup" section 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%2Fidqeymcwrtjlk416q2ag.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%2Fidqeymcwrtjlk416q2ag.png" alt="Get started with Nano Banana Pro on AI Studio" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: You can also vibe code Nano Banana web apps directly in AI Studio at &lt;a href="//ai.studio/apps"&gt;ai.studio/apps&lt;/a&gt;, or explore the code and remix one of the &lt;a href="https://aistudio.google.com/apps?source=showcase&amp;amp;showcaseTag=nano-banana" rel="noopener noreferrer"&gt;existing apps&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2) Project setup
&lt;/h2&gt;

&lt;p&gt;To follow this guide, you will need the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  An API key from &lt;a href="https://aistudio.google.com/" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  Billing set up for your project.&lt;/li&gt;
&lt;li&gt;  The Google Gen AI SDK for &lt;a href="https://github.com/googleapis/python-genai" rel="noopener noreferrer"&gt;Python&lt;/a&gt; or &lt;a href="https://github.com/googleapis/js-genai" rel="noopener noreferrer"&gt;JavaScript/TypeScript&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you already are a hardcore Gemini API user with all of that, great! just skip this section and move to the next one. Otherwise, here's how to get started:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step A: Get your API Key
&lt;/h3&gt;

&lt;p&gt;When you first log in on AI Studio, a Google Cloud project and an API key should be automatically created.&lt;/p&gt;

&lt;p&gt;Open the &lt;a href="https://aistudio.google.com/api-keys" rel="noopener noreferrer"&gt;API key management screen&lt;/a&gt; and click on the "copy" icon to copy your API key.&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%2Fkwglctk5jiunm7gdi207.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%2Fkwglctk5jiunm7gdi207.png" alt="Copy your API key" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step B: Enable Billing
&lt;/h3&gt;

&lt;p&gt;Since Nano Banana Pro doesn't have a free tier. You must enable billing on your Google Cloud project.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://aistudio.google.com/projects" rel="noopener noreferrer"&gt;API key management screen&lt;/a&gt;, click &lt;strong&gt;Set up billing&lt;/strong&gt; next to your project and follow the on-screen instructions.&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%2Fn7wi4ygjj4utb8lrntsl.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%2Fn7wi4ygjj4utb8lrntsl.png" alt="Set up billing" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  How much does Nano Banana Pro cost?
&lt;/h4&gt;

&lt;p&gt;Image generation with Nano Banana Pro is more expensive than the Flash version, especially for 4K images. At the time this post is published, a 1K or 2K image costs &lt;strong&gt;$0.134&lt;/strong&gt;, while a 4K one costs &lt;strong&gt;$0.24&lt;/strong&gt; (plus the token cost of the input and the text output).&lt;/p&gt;

&lt;p&gt;Check the &lt;a href="https://ai.google.dev/gemini-api/docs/pricing#gemini-3-pro-image-preview" rel="noopener noreferrer"&gt;pricing&lt;/a&gt; in the documentation for the latest details.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; To save 50% on your generation costs, you can use the &lt;a href="https://ai.google.dev/gemini-api/docs/batch-api?batch=file#image-generation" rel="noopener noreferrer"&gt;Batch API&lt;/a&gt;. In exchange you might have to wait up to 24h before getting your images.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step C: Install the SDK
&lt;/h3&gt;

&lt;p&gt;Choose the SDK for your preferred language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python:&lt;/strong&gt;&lt;br&gt;
You'll need Python 3 and at least the 1.52 version of the &lt;a href="https://googleapis.github.io/python-genai/" rel="noopener noreferrer"&gt;Python SDK&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; &lt;span class="s2"&gt;"google-genai&amp;gt;=1.52.0"&lt;/span&gt;
&lt;span class="c"&gt;# Install the Pillow library for image manipulation&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;Pillow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;JavaScript / TypeScript:&lt;/strong&gt;&lt;br&gt;
You'll need at least the 1.30 version of the &lt;a href="https://googleapis.github.io/js-genai/" rel="noopener noreferrer"&gt;JS/TS SDK&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @google/genai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The following examples use the Python SDK for demonstration. Equivalent code snippets to use Nano Banana in JavaScript are provided in this &lt;strong&gt;&lt;a href="https://ai.studio/apps/bundled/get_started_image_out?fullscreenApplet=true" rel="noopener noreferrer"&gt;JS Notebook&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3) Initialize the Client
&lt;/h2&gt;

&lt;p&gt;To use the Pro model, you'll need to use the &lt;strong&gt;&lt;code&gt;gemini-3-pro-image-preview&lt;/code&gt;&lt;/strong&gt; model ID.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.genai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize the client
&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;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Set the model ID
&lt;/span&gt;&lt;span class="n"&gt;PRO_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;gemini-3-pro-image-preview&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4) Basic Generation (The Classics)
&lt;/h2&gt;

&lt;p&gt;Before we get into the fancy stuff, let's look at a standard generation. You can control the output using &lt;code&gt;response_modalities&lt;/code&gt; (to get text and images or only images) and &lt;code&gt;aspect_ratio&lt;/code&gt;.&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;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;Create a photorealistic image of a siamese cat with a green left eye and a blue right one&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;aspect_ratio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;# "1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9" or "21:9"
&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="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&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="n"&gt;PRO_MODEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&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;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;response_modalities&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;Text&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;Image&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="c1"&gt;# Or just ['Image']
&lt;/span&gt;        &lt;span class="n"&gt;image_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ImageConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;aspect_ratio&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="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Save the image
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;part&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="n"&gt;parts&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;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_image&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cat.png&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;&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%2Fqrqb18ptavkufaqav7o5.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%2Fqrqb18ptavkufaqav7o5.png" alt="Siamese cat" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chat mode is also an option (it's actually what I would recommend for multi-turn editing). Check the 8th example, "Polyglot Banana", for an example.&lt;/p&gt;




&lt;h2&gt;
  
  
  5) The "Thinking" Process (It's alive!)
&lt;/h2&gt;

&lt;p&gt;Nano Banana Pro isn't just drawing; it's &lt;em&gt;thinking&lt;/em&gt;. This means it can reason through your most complex, twisted prompts before generating an image. And the best part? You can peek into its brain!&lt;/p&gt;

&lt;p&gt;To enable this, set &lt;code&gt;include_thoughts=True&lt;/code&gt; in the &lt;code&gt;thinking_config&lt;/code&gt;.&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;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;Create an unusual but realistic image that might go viral&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;aspect_ratio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&lt;/span&gt;&lt;span class="sh"&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="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&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="n"&gt;PRO_MODEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&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;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;response_modalities&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;Text&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;Image&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;image_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ImageConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;thinking_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ThinkingConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;include_thoughts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt; &lt;span class="c1"&gt;# Enable thoughts
&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="c1"&gt;# Save the image and thoughts
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;part&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="n"&gt;parts&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;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;thought&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&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;Thought: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&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="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_image&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;viral.png&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;And you should get something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Imagining Llama Commuters&lt;/span&gt;

I'm focusing on the llamas now. The goal is to capture them as
daily commuters on a bustling bus in La Paz, Bolivia. My plan
involves a vintage bus crammed with amused passengers. The image
will highlight details like one llama looking out the window,
another interacting with a passenger, all while people take
photos.

[IMAGE]

&lt;span class="gu"&gt;## Visualizing the Concept&lt;/span&gt;

I'm now fully immersed in the requested scenario. My primary
focus is on the "unusual yet realistic" aspects. The scene is
starting to take shape with the key elements established.
&lt;/code&gt;&lt;/pre&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%2Fmi6pn0b3tuqnm37o85n8.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%2Fmi6pn0b3tuqnm37o85n8.jpg" alt="Viral image" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This transparency helps you understand how the model interpreted your request. It's like having a conversation with your artist!&lt;/p&gt;




&lt;h2&gt;
  
  
  6) Search Grounding (Real-time magic)
&lt;/h2&gt;

&lt;p&gt;One of the most game-changing features is &lt;strong&gt;Search Grounding&lt;/strong&gt;. Nano Banana Pro isn't stuck in the past; it can access real-time data from Google Search to generate accurate, up-to-date images. Want the weather? You got it.&lt;/p&gt;

&lt;p&gt;For example, you can ask it to visualize the &lt;em&gt;current&lt;/em&gt; weather forecast:&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;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;Visualize the current weather forecast for the next 5 days in Tokyo as a clean, modern weather chart. add a visual on what i should wear each day&lt;/span&gt;&lt;span class="sh"&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="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&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="n"&gt;PRO_MODEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&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;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;response_modalities&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;Text&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;Image&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;image_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ImageConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&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;tools&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;google_search&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="c1"&gt;# Enable Google Search
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Save the image
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;part&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="n"&gt;parts&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;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_image&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;weather.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Display sources (you must always do that)
&lt;/span&gt;&lt;span class="nf"&gt;print&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;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;grounding_metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search_entry_point&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rendered_content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&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%2Fbgg57xg6mvtzk521zslw.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%2Fbgg57xg6mvtzk521zslw.jpg" alt="Weather in Tokyo" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7) Go Big or Go Home: 4K Generation
&lt;/h2&gt;

&lt;p&gt;Need print-quality images? Nano Banana Pro supports 4K resolution. Because sometimes, bigger &lt;em&gt;is&lt;/em&gt; better.&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;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;A photo of an oak tree experiencing every season&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;resolution&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;4K&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;# Options: "1K", "2K", "4K", be careful lower case do not work.
&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="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&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="n"&gt;PRO_MODEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&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;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;response_modalities&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;Text&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;Image&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;image_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ImageConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1: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;image_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;resolution&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;/code&gt;&lt;/pre&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%2F7d7g9bjm3w1mtu5oa9pr.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%2F7d7g9bjm3w1mtu5oa9pr.jpg" alt="Oak tree experiencing all seasons" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: 4K generation comes at a higher cost, so use it wisely!&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8) Polyglot Banana (Multilingual Capabilities)
&lt;/h2&gt;

&lt;p&gt;The model can generate and even translate text within images across over a dozen languages. It's basically a universal translator for your eyes.&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;# Generate an infographic in Spanish
&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Make an infographic explaining Einstein&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s theory of General Relativity suitable for a 6th grader in Spanish&lt;/span&gt;&lt;span class="sh"&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&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;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;image_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ImageConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;aspect_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&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="c1"&gt;# Save the image
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;part&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="n"&gt;parts&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;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_image&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;relativity.png&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;&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%2Fvw5sj8d1e33wdu0kdxbc.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%2Fvw5sj8d1e33wdu0kdxbc.jpg" alt="General Relativity in Spanish" width="800" height="446"&gt;&lt;/a&gt;&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;# Translate it to Japanese
&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Translate this infographic in Japanese, keeping everything else the same&lt;/span&gt;&lt;span class="sh"&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Save the image
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;part&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="n"&gt;parts&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;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_image&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;relativity_JP.png&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;&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%2F1z8v17jqcxi9rp4vafdo.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%2F1z8v17jqcxi9rp4vafdo.jpg" alt="General Relativity in Japanese" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9) Mix it up! (Advanced Image Mixing)
&lt;/h2&gt;

&lt;p&gt;While the Flash model can mix up to 3 images, the Pro model can handle up to &lt;strong&gt;14 images&lt;/strong&gt;! That's a whole party in one prompt. Perfect for creating complex collages or showing off your entire product line.&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;# Mix multiple images
&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="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&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="n"&gt;PRO_MODEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&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;An office group photo of these people, they are making funny faces.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;PIL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;John.png&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;PIL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Jane.png&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="c1"&gt;# ... add up to 14 images
&lt;/span&gt;    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Save the image
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;part&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="n"&gt;parts&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;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;as_image&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;group_picture.png&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;&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%2F5gpi2avw16veccv9leyv.jpeg" 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%2F5gpi2avw16veccv9leyv.jpeg" alt="Mix multiple images" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: If you want very high fidelity for your characters, limit yourself to 5, which is already more than enough for a party night!&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  10) Show off time! (Pro-Exclusive Demos)
&lt;/h2&gt;

&lt;p&gt;Here are some examples of what's possible only with Nano Banana Pro. Prepare to be amazed:&lt;/p&gt;

&lt;h3&gt;
  
  
  Personalized Pixel Art (Search Grounding)
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Prompt: "Search the web then generate an image of isometric perspective, detailed pixel art that shows the career of Guillaume Vernade"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This uses search grounding to find specific information about a person and visualizes it in a specific style.&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%2Fcor096x1iq8jlct5nvl1.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%2Fcor096x1iq8jlct5nvl1.jpg" alt="Guillaume Vernade career" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Complex Text Integration
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Prompt: "Show me an infographic about how sonnets work, using a sonnet about bananas written in it, along with a lengthy literary analysis of the poem. Good vintage aesthetics"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The model can generate coherent, lengthy text and integrate it perfectly into a complex layout.&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%2Fp0xg8dnb2x567xtmzpl7.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%2Fp0xg8dnb2x567xtmzpl7.jpg" alt="Complex Text Integration" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  High-Fidelity Mockups
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Prompt: "A photo of a program for the Broadway show about TCG players on a nice theater seat, it's professional and well made, glossy, we can see the cover and a page showing a photo of the stage."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Create photorealistic mockups of print materials with accurate lighting and texture.&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%2Fh0xb4n9fn0rvlt6s5ljj.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%2Fh0xb4n9fn0rvlt6s5ljj.jpg" alt="High-Fidelity Mockups" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  11) Best Practices and prompting tips for Nano Banana and Nano Banana Pro
&lt;/h2&gt;

&lt;p&gt;To achieve the best results with the Nano Banana models, follow these prompting guidelines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Be Hyper-Specific:&lt;/strong&gt; The more detail you provide about subjects, colors, lighting, and composition, the more control you have over the output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provide Context and Intent:&lt;/strong&gt; Explain the purpose or desired mood of the image. The model's understanding of context will influence its creative choices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterate and Refine:&lt;/strong&gt; Don't expect perfection on the first try. Use the model's conversational ability to make incremental changes and refine your image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Step-by-Step Instructions:&lt;/strong&gt; For complex scenes, break your prompt into a series of clear, sequential instructions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Positive Framing:&lt;/strong&gt; Instead of negative prompts like "no cars," describe the desired scene positively: "an empty, deserted street with no signs of traffic."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control the Camera:&lt;/strong&gt; Use photographic and cinematic terms to direct the composition, such as "wide-angle shot", "macro shot", or "low-angle perspective".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use search grounding to your advantage:&lt;/strong&gt; When you know that you want the model to use real-time or real-world data, be very precise about it. "Search the web about the Olympique Lyonnais' last games and make an infographics" will work better than just "an infographics of the OL last games" (which should still work, but don't take chances).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use the &lt;a href="https://ai.google.dev/gemini-api/docs/batch-api?batch=file#image-generation" rel="noopener noreferrer"&gt;Batch API&lt;/a&gt; to lower your costs and get more quota&lt;/strong&gt;: The batch API is a way to send small or very large batches of requests together. They might take up to 24 to be processed, but in exchange you can save 50% on your generation costs. And the quota is also higher!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a deeper dive into best practices, check the &lt;a href="https://ai.google.dev/gemini-api/docs/image-generation#prompt-guide" rel="noopener noreferrer"&gt;prompting guide&lt;/a&gt; in the documentation and the &lt;a href="https://developers.googleblog.com/en/how-to-prompt-gemini-2-5-flash-image-generation-for-the-best-results/" rel="noopener noreferrer"&gt;prompting best practices&lt;/a&gt; for Nano Banana published on the official blog.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wrap up
&lt;/h2&gt;

&lt;p&gt;Nano Banana Pro (Gemini 3 Pro Image) opens up a new frontier for AI image generation. With its ability to think, search, and render in 4K, it's a tool for serious creators (and serious fun).&lt;/p&gt;

&lt;p&gt;Ready to try it out? Check my &lt;a href="https://dev.to/googleai/nano-banana-pro-prompting-guide-strategies-1h9n"&gt;prompt guide&lt;/a&gt;, head over to &lt;a href="https://aistudio.google.com/" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;, try or customize our &lt;a href="https://aistudio.google.com/apps?source=showcase&amp;amp;showcaseTag=nano-banana" rel="noopener noreferrer"&gt;Apps&lt;/a&gt; or check out the &lt;a href="https://colab.sandbox.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_Started_Nano_Banana.ipynb" rel="noopener noreferrer"&gt;cookbook&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%2Fcng2t1e9qmky91on2k7h.jpeg" 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%2Fcng2t1e9qmky91on2k7h.jpeg" alt="Congratulation" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gemini</category>
      <category>nanobanana</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
