Tracks
Google vừa phát hành lần lặp thứ hai của mô hình tạo ảnh, Nano Banana 2. Khi Nano Banana lần đầu ra mắt, nó đã tạo nên cơn sốt, nhanh chóng trở thành mô hình tạo ảnh AI tốt nhất và nhanh nhất.
Trong bài viết này, chúng ta sẽ tìm hiểu sâu về mô hình mới, khám phá các tính năng mới và học cách sử dụng qua API với Python.
Nếu bạn quan tâm chung đến tạo ảnh, tôi khuyến nghị xem các hướng dẫn về những mô hình sau:
Nano Banana 2 là gì?
Nano Banana 2, còn gọi là Gemini 3.1 Flash Image, là mô hình AI tạo và chỉnh sửa hình ảnh tối tân mới nhất của Google DeepMind. Nó kết hợp tri thức thế giới nâng cao, chất lượng và khả năng suy luận của Nano Banana Pro với tốc độ cực nhanh của Gemini Flash, giúp tạo sản phẩm trung thực cao và lặp nhanh trong cùng một quy trình.
Khả năng chính
Tổng quan về các tính năng nổi bật của Nano Banana 2:
- Độ chính xác cải thiện: Nâng đỡ quá trình tạo ảnh bằng tri thức thế giới thực của Gemini và tín hiệu hình ảnh web thời gian thực để thể hiện chính xác hơn các chủ thể cụ thể. Lý tưởng cho đồ họa thông tin, sơ đồ và trực quan hóa dữ liệu.
- Chữ trong ảnh tốt hơn: Tạo văn bản trong ảnh rõ ràng, chính xác và hỗ trợ bản địa hóa, dịch trực tiếp trong ảnh.
- Kiểm soát sáng tạo: Cải thiện tính nhất quán của chủ thể cho tường thuật và storyboard. Mô hình giữ độ giống nhau cho tối đa 5 nhân vật và độ trung thực cho đến 14 đối tượng trong một quy trình.
- Độ tin cậy: Tuân thủ hướng dẫn chính xác hơn để nắm bắt tốt các prompt phức tạp, tinh tế.
- Độ phân giải cao: Thông số sẵn sàng cho sản xuất với tỷ lệ khung hình và độ phân giải linh hoạt từ 512 pixel đến 4K.
- Chất lượng thị giác: Nâng cấp độ trung thực hình ảnh với kết cấu giàu chi tiết, ánh sáng rực rỡ và chi tiết sắc nét ở tốc độ Flash.
Nếu bạn mới làm quen với Nano Banana, bạn có thể muốn đọc trước bài viết về lần lặp đầu tiên của Nano Banana Pro.
Cách truy cập Nano Banana 2
Trong bài viết này, chúng tôi trình bày cách sử dụng Nano Banana 2 thông qua API với Python. Tuy nhiên, các mô hình mới có sẵn trên toàn hệ sinh thái Gemini:
- Ứng dụng Gemini: Nano Banana 2 hiện là mô hình ảnh mặc định trên các chế độ Fast, Thinking và Pro. Người đăng ký Google AI Pro và Ultra vẫn có thể tạo lại bằng Nano Banana Pro qua menu ba chấm cho các tác vụ chuyên biệt yêu cầu độ chính xác thực tế tối đa.
- Tìm kiếm: Có sẵn trong AI Mode và Lens trên ứng dụng Google và trình duyệt di động/máy tính, với phạm vi mở rộng (bao gồm 141 quốc gia/vùng lãnh thổ mới và tám ngôn ngữ bổ sung).
- AI Studio + Gemini API: Có sẵn ở giai đoạn xem trước (xem giá). Cũng có trong Google Antigravity.
- Google Cloud: Xem trước qua Gemini API trong Vertex AI.
- Flow: Giờ là mô hình tạo ảnh mặc định cho tất cả người dùng Flow.
- Google Ads: Cung cấp gợi ý sáng tạo trong quá trình tạo chiến dịch.
Giá API
Trong bài viết này, chúng ta sẽ dùng Nano Banana 2 qua API, nghĩa là không cần đăng ký mà trả phí theo từng ảnh tạo ra.
Tôi thấy bảng giá chính thức hơi khó hiểu. Thông thường, mô hình tạo ảnh AI chỉ nêu giá cố định cho mỗi ảnh.
Để đơn giản hơn, tôi đã ước tính chi phí dự kiến theo kích thước ảnh. Lưu ý đây không phải giá chính xác vì có thể dao động đôi chút.
|
Kích thước ảnh |
Chi phí mỗi ảnh |
|
512px |
$0.045 |
|
1024px (1K) |
$0.067 |
|
2048px (2K) |
$0.101 |
|
4096px (4K) |
$0.151 |
Nano Banana 2 có thể thực hiện tìm kiếm web để tạo kết quả chính xác hơn. Đây là một tính năng rất hay, nhưng cũng cần tính vào chi phí vì mỗi lượt tìm kiếm sẽ phát sinh thêm phí.
5.000 truy vấn Google Search đầu tiên mỗi tháng được miễn phí khi dùng grounding với Google Search. Sau đó, chi phí là $14 cho mỗi 1.000 truy vấn.
Tạo ảnh Nano Banana 2 đầu tiên
Không dài dòng nữa, hãy bắt đầu với Nano Banana 2.
Tạo khóa API
Để dùng API, trước tiên ta cần tạo khóa API. Để làm vậy, hãy đăng nhập vào Google AI Studio. Sau đó nhấn nút Create API Key ở góc trên bên phải.
Khóa API cần liên kết với một dự án Google Cloud. Google AI Studio giúp việc này dễ dàng bằng cách cho phép tạo dự án trực tiếp trong quy trình tạo khóa API.

Để sử dụng khóa API, dự án Google Cloud liên kết với khóa đó phải bật thanh toán. Nếu bạn vừa tạo dự án mới, cần bật bằng cách nhấn nút Set up billing bên cạnh khóa API.

Cuối cùng, sao chép khóa API và dán vào tệp tên .env theo định dạng sau:
GEMINI_API_KEY=<paste_key_here>
Tệp .env này nên được tạo trong cùng thư mục nơi chúng ta sẽ viết các script Python.
Thiết lập môi trường
Tiếp theo, chúng ta cần cài đặt các phụ thuộc Python để tương tác với Gemini API. Chạy lệnh sau:
pip install google-genai python-dotenv pillow
Lệnh này sẽ cài các gói sau:
-
google-genai: Gói chính thức cho generative AI của Google. Dùng để dễ dàng tạo client tương tác với Gemini API. -
python-dotenv: Gói tiện ích dùng để tải khóa API từ tệp .env. -
pillow: Thư viện xử lý ảnh giúp dễ dàng nạp ảnh làm đầu vào cho Nano Banana 2.
Tạo một ảnh
Dưới đây là mã Python hoàn chỉnh để tạo một ảnh:
from google import genai
from dotenv import load_dotenv
from google.genai import types
import time
# Load API key
load_dotenv()
client = genai.Client()
prompt = """
Lego version of the empire state building being built.
"""
# Make API request
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=[prompt],
config=types.GenerateContentConfig(
response_modalities=["Image"],
image_config=types.ImageConfig(
aspect_ratio="16:9",
image_size="4K",
),
)
)
# Save the image and display output text if any
for part in response.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = part.as_image()
image.save(f"image_{int(time.time())}.png")
Đây là kết quả:

Tỷ lệ khung và độ phân giải được hỗ trợ
Trong yêu cầu trên, chúng ta chỉ định tỷ lệ khung bằng tham số aspect_ratio và độ phân giải bằng tham số image_size.
Nano Banana 2 hỗ trợ dải tỷ lệ khung và độ phân giải rộng từ 512 pixel đến 4K. Dưới đây là danh sách đầy đủ các giá trị được hỗ trợ:
-
aspect_ratio: "1:1","1:4","1:8","2:3","3:2","3:4","4:1","4:3","4:5","5:4","8:1","9:16","16:9","21:9" -
image_size(độ phân giải): "512px", "1K", "2K", "4K"
Thực hành với Nano Banana 2
Sau khi đã thiết lập xong và tạo thành công ảnh đầu tiên, đã đến lúc kiểm thử các tính năng đã quảng bá.
Chỉnh sửa ảnh với tính nhất quán chủ thể
Ta có thể cung cấp ảnh cho mô hình bằng cách nạp chúng với PIL (được cài từ gói pillow) và đưa vào danh sách contents.
Một trong những tính năng chính của Nano Banana 2 là khả năng bảo toàn chủ thể khi tạo ảnh. Khi thử các mô hình khác như lần lặp trước của Nano Banana hoặc GPT-Image, tôi thường thấy khó tạo ảnh dựa trên chủ thể đời thực vì mô hình có xu hướng thay đổi diện mạo của họ.
Theo tài liệu của họ, mô hình hỗ trợ tới năm nhân vật và 10 đối tượng, tổng cộng 14 tham chiếu. Họ không định nghĩa rõ ràng “nhân vật” và “đối tượng”, nhưng theo trực giác, có nghĩa là mô hình được huấn luyện để tạo cảnh có thể đặt tới 4 chủ thể chính và tối đa 10 đối tượng phụ mà các chủ thể này tương tác.
Mô hình không cung cấp tham số riêng để gửi ảnh nhân vật và đối tượng. Thay vào đó, việc này được mô tả trong prompt. Tôi đã xem mã nguồn một số bản demo của họ để hiểu cách họ cấu trúc prompt để tham chiếu các yếu tố này.
Mẫu tôi tìm được như sau:
<subject_name> (<Character #number>) = Image <#index>
Ví dụ, với hai nhân vật tên "Alice" và "Bob", sẽ là:
Subjects: Alice (Character 1) = Image 0, Bob (Character 2) = Image 1
Dưới đây là ví dụ đầy đủ cho thấy cách đặt dáng hai thú cưng, một chú chó và một chú mèo, cùng nhau trong một bức ảnh.
from google import genai
from dotenv import load_dotenv
from google.genai import types
import time
from PIL import Image
# Load API key
load_dotenv()
client = genai.Client()
prompt = """
Goldie and Wiskers are posing together.
Subjects: Goldie (Character 1) = Image 0, Wiskers (Character 2) = Image 1
Maintain strict subject consistency for characters.
Adjust the subject composition/pose as appropriate for the scene.
"""
dog = Image.open("dog.png")
cat = Image.open("cat.png")
# Make API request
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=[prompt, dog, cat],
config=types.GenerateContentConfig(
response_modalities=["Image"],
image_config=types.ImageConfig(
aspect_ratio="9:16",
),
)
)
# Save the image and display output text if any
for part in response.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = part.as_image()
image.save(f"image_{int(time.time())}.png")

Bổ sung đối tượng
Như đã đề cập, mẫu này không thuộc tài liệu chính thức. Mô hình có lẽ có thể hiểu từng phần từ prompt và hình ảnh. Tuy nhiên, khi xây dựng ứng dụng thực tế nơi ta muốn kết quả nhất quán, thực hành tốt là mô tả càng chính xác và nhất quán càng tốt trong prompt, nên tôi khuyến nghị dùng mẫu này.
Ví dụ của họ mở rộng mẫu cho tham chiếu đối tượng bằng cách thay "Character" bằng "Object" để báo cho mô hình biết ảnh là về một đối tượng chứ không phải chủ thể chính.
Để minh họa, hãy cho chú chó đeo kính râm cụ thể và mèo đội mũ bằng cách cung cấp hai tham chiếu đối tượng. Đây là prompt tôi dùng:
Goldie and Wiskers are posing together. Goldie is wearing the Glasses, and Wiskers is wearing the Hat.
Subjects: Goldie (Pet 1) = Image 0, Wiskers (Pet 2) = Image 1, Glasses (Object 1) = Image 3, Hat (Object 2) = Image 4.
Maintain strict subject consistency for characters and objects.
Adjust the subject composition/pose as appropriate for the scene.
Và đây là kết quả:

Tạo ảnh có đối chiếu bằng tìm kiếm
Nano Banana 2 cho phép đối chiếu (ground) quá trình tạo ảnh bằng tìm kiếm để kết quả chính xác hơn. Điều này đặc biệt hữu ích khi tạo ảnh cần nhất quán với thực tế, như ảnh một địa điểm hoặc loài vật cụ thể.
Tôi đang sống ở Đài Loan và gần đây có một buổi leo núi tổ chức, trong đó ban tổ chức dùng ảnh tạo bằng Nano Banana để mô tả địa điểm. Tuy nhiên, ảnh hoàn toàn không chính xác, khiến mọi người thất vọng vì trông khác hẳn thực tế.
Điều này khiến tôi tò mò thử xem Nano Banana 2 có xử lý được không.
Chúng ta có thể bật cả tìm kiếm web và tìm kiếm hình ảnh bằng tham số tools trong yêu cầu tạo.
Ví dụ đầy đủ:
from google import genai
from dotenv import load_dotenv
from google.genai import types
import time
# Load API key
load_dotenv()
client = genai.Client()
prompt = """
Create an image of the Yinhe Cave (銀河洞) in Taiwan at golden hour.
- Use Image Search to search for an image of the specified place.
- Keep the location and the view as close to the real reference as possible.
"""
# Make API request
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=[prompt],
config=types.GenerateContentConfig(
response_modalities=["Image"],
image_config=types.ImageConfig(
aspect_ratio="9:16",
),
tools=[
types.Tool(google_search=types.GoogleSearch(
search_types=types.SearchTypes(
web_search=types.WebSearch(), # Enables web search
image_search=types.ImageSearch() # Enables image search
)
))
]
)
)
# Save the image and display output text if any
for part in response.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = part.as_image()
image.save(f"image_{int(time.time())}.png")
Dưới đây là kết quả. Đầu tiên là ảnh thật từ Google Photos, sau đó là ảnh do Nano Banana 2 tạo có dùng tìm kiếm, và cuối cùng là ảnh tạo không dùng tìm kiếm. Ta thấy tìm kiếm giúp kết quả rất chính xác.

Nhóm Gemini đã xây dựng một bản demo tên Window View ứng dụng ý tưởng này để tạo một ứng dụng nhỏ hiển thị những địa điểm cụ thể qua khung cửa sổ. Đây là minh họa tốt cho khả năng hiểu thế giới thực của mô hình.
Kết hợp tính nhất quán chủ thể với hiểu biết thế giới
Khi mô hình có khả năng tạo địa điểm đời thực với độ chính xác cao, chúng ta có thể đặt các chủ thể cụ thể vào các địa điểm thực tế.
Hãy thử đặt Goldie và Wiskers ở một địa điểm tại Đài Loan. Tôi chọn địa điểm này vì muốn xem mô hình có xử lý được những nơi không quá nổi tiếng không.
Prompt như sau:
Goldie and Wiskers are traveling across the Sanxiantai Arch Bridge in Taiwan.
Subjects: Goldie (Pet 1) = Image 0, Wiskers (Pet 2) = Image 1
Use image search to find visual references of the location.
Maintain strict subject consistency for characters and objects.
Adjust the subject composition/pose as appropriate for the scene.
Lưu ý prompt yêu cầu rõ ràng mô hình thực hiện tìm kiếm hình ảnh. Tôi nhận thấy khi dùng công cụ, luôn tốt hơn nếu yêu cầu tường minh trong prompt.
Đây là ảnh hai nhân vật của chúng ta đang du lịch cùng nhau:

Để tiến xa hơn, tôi còn thử chỉ định địa điểm bằng vĩ độ và kinh độ, và đã thành công!
Goldie and Wiskers are at the location with a latitude of 17.0621186 and a longitude of -96.7255102.
Subjects: Goldie (Pet 1) = Image 0, Wiskers (Pet 2) = Image 1
Use image search to find visual references of the location.
Maintain strict subject consistency for characters and objects.
Adjust the subject composition/pose as appropriate for the scene.

Ngay cả khi địa điểm không đúng chính xác từng vĩ độ, kinh độ, các yếu tố trong ảnh vẫn tương ứng với những gì ta thấy ở nơi đó, khá ấn tượng theo tôi.
Bản địa hóa văn bản
Nano Banana 2 cải thiện các mô hình ảnh dựa trên Flash trước đây bằng khả năng hiển thị văn bản nhất quán và đáng tin cậy hơn.
Văn bản nay có thể sắc nét và chính xác như đồ họa xung quanh. Nano Banana 2 cũng cho phép bản địa hóa trong ảnh, giúp tạo hoặc dịch văn bản sang nhiều ngôn ngữ trực tiếp trong ảnh được tạo.
Tôi đã thử bản địa hóa bằng cách tạo một poster cho thương hiệu tai nghe thực tế ảo hư cấu tên "Beyond Reality." Sau đó tôi chỉ dùng prompt như:
Change the language of the poster to Japanese.
Dưới đây là kết quả sau khi đổi ngôn ngữ văn bản poster sang tiếng Pháp và sau đó là tiếng Nhật:

Điều thú vị là mô hình đủ “thông minh” để không dịch tên thương hiệu, dù điều này không được nêu trong prompt.
Chế độ hội thoại
Tính năng cuối cùng chúng ta khám phá là chế độ hội thoại. Các ví dụ trước không tương tác: ta gửi yêu cầu đến API và nhận kết quả. Nếu muốn lặp trên kết quả đó, ta cần tạo yêu cầu mới với ảnh đó và thay đổi mong muốn.
Cách tốt hơn là dùng chế độ chat. Trong chế độ chat, ta tạo một phiên chat bằng hàm client.chats.create(), rồi gửi tin nhắn qua lại bằng hàm client.send_message(). Chúng ta có thể dùng điều này để triển khai quy trình chỉnh sửa qua chat:
- Người dùng gửi prompt
- Nano Banana 2 tạo ảnh dựa trên prompt và ảnh trước đó (nếu có)
- Ảnh được hiển thị cho người dùng
- Người dùng gửi prompt chỉnh sửa, quay lại bước 2.
Dưới đây là script đầy đủ triển khai luồng này:
from google import genai
from google.genai import types
from dotenv import load_dotenv
from PIL import Image
import time
load_dotenv()
client = genai.Client()
# Initialize the chat session
chat = client.chats.create(
model="gemini-3.1-flash-image-preview",
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
tools=[{"google_search": {}}]
)
)
# We keep track of the latest image object to send back as context
latest_image = None
while True:
user_input = input("\nPrompt: ")
if user_input.lower() in ['quit', 'exit', 'q']:
break
# Construct the message content
# If we have a previous image, we include it so the model knows what to edit
content = [user_input]
if latest_image:
content.append(latest_image)
try:
response = chat.send_message(content)
for part in response.parts:
# Handle Text Response
if part.text:
print(f"\nAI: {part.text}")
elif part.inline_data is not None:
image = part.as_image()
filename = f"image_{int(time.time())}.png"
image.save(filename)
print("Saved image", filename)
latest_image = Image.open(filename)
latest_image.show()
except Exception as e:
print(f"An error occurred: {e}")
print("Session ended.")
Khi chạy script này, ta có thể chỉnh sửa ảnh lặp dần trực tiếp trong terminal như sau:

Dưới đây là kết quả từ tương tác này:

Nano Banana so với Nano Banana 2
Bảng dưới đây làm nổi bật những khác biệt chính giữa các mô hình Nano Banana. Như đã đề cập, phiên bản mới mang lại cải tiến đáng kể về độ chính xác, tính nhất quán và độ phân giải trong khi chỉ chậm hơn đôi chút so với lần lặp đầu tiên.

Bảng này thực ra được Nano Banana 2 tạo ra sau khi cung cấp dữ liệu cho nó.
Khi nào nên dùng Nano Banana Pro
Dù Nano Banana 2 là tiêu chuẩn mới, Nano Banana Pro vẫn khả dụng cho các tác vụ “Thinking” và chuyên biệt. Bạn có thể vẫn chọn Pro khi cần:
- Tính hiện thực cực cao: Pro vẫn nhỉnh hơn một chút về vật lý ánh sáng và kết cấu da.
- Suy luận phức tạp: Pro giỏi hơn trong việc “suy nghĩ” qua các hướng dẫn không gian (ví dụ: “người đứng sau cột thứ hai bên trái”).
Kết luận
Nano Banana 2 thực sự xứng đáng là người kế nhiệm vì nó giảm mạnh “trôi” giữa các lần lặp, cho phép bạn cố định phong cách và duy trì nhất quán qua các cảnh, định dạng và ngôn ngữ.
Nhờ khả năng duy trì chủ thể mạnh hơn, tuân thủ hướng dẫn chặt chẽ hơn, tính hiện thực có đối chiếu tìm kiếm và chỉnh sửa hội thoại theo hướng tinh chỉnh thay vì vẽ lại, việc giữ nguyên danh tính, bố cục và phong cách trong khi khám phá biến thể trở nên dễ dàng hơn nhiều.
Khả năng hiển thị văn bản đạt chuẩn sản xuất giúp các yếu tố thương hiệu nhất quán, và tỷ lệ khung linh hoạt giúp mở rộng chiến dịch qua banner, poster và story di động thật mượt. Với các đội ngũ xây storyboard, ảnh sản phẩm hoặc ấn phẩm đa địa phương, mô hình mang lại tính lặp lại mà không phải hy sinh tốc độ hay độ trung thực.
Nano Banana 2 bắc cầu rõ ràng giữa Nano Banana và Nano Banana Pro: tốc độ gần với nhịp Flash gần như tức thì của Nano Banana, trong khi năng lực, độ trung thực hình ảnh, tuân thủ hướng dẫn chính xác, tính nhất quán chủ thể và tính hiện thực có đối chiếu tìm kiếm thường xuyên tiệm cận Nano Banana Pro.
Nếu bạn muốn tìm hiểu thêm về các khái niệm đằng sau những công cụ như Nano Banana 2, tôi khuyến nghị tham gia khóa học Generative AI Concepts của chúng tôi.
Nano Banana 2 FAQs
Tên mô hình của Nano Banana 2 khi dùng API là gì?
Tên kỹ thuật của Nano Banana 2 là gemini-3.1-flash-image-preview.
Nano Banana 2 có cung cấp gói miễn phí để tạo ảnh không?
Nếu bạn có đăng ký Gemini, Nano Banana 2 là mặc định mới, nên bạn có thể truy cập ở đó. Khi dùng API, không có gói miễn phí, nhưng mỗi ảnh tạo ra có chi phí rất thấp.
Nano Banana 2 có tốt hơn Nano Banana Pro không?
Nano Banana 2 nằm giữa Nano Banana và Nano Banana Pro. Nó nhanh hơn nhiều so với Nano Banana Pro và đạt kết quả tương tự.
Search grounding có bật mặc định trong Nano Banana 2 không?
Không. Để dùng search grounding, chúng ta phải cung cấp rõ các công cụ đó cho mô hình. 5.000 yêu cầu tìm kiếm đầu tiên được miễn phí. Các yêu cầu tiếp theo tốn $0.014, cộng thêm chi phí tạo ảnh.
