Nano Banana(Gemini 2.5 Flash Image)의 prompt engineering을 통한 정밀 이미지 생성
Nano Banana can be prompt engineered for nuanced AI image generation
TL;DR Highlight
Google의 autoregressive 이미지 생성 모델 Nano Banana는 기존 diffusion 모델을 압도적으로 뛰어넘는 프롬프트 준수력을 보이며, 정교한 프롬프트 엔지니어링으로 극도의 이미지 제어 정밀도를 달성한다.
Who Should Read
AI 이미지 생성을 앱이나 워크플로우에 통합하려는 개발자, 또는 스토리보드·일러스트·콘텐츠 제작에 프로그래밍 방식으로 이미지를 생성하고 싶은 개발자.
Core Mechanics
- Nano Banana는 Google이 Gemini 2.5 Flash에 내장한 autoregressive 이미지 생성 모델로, diffusion 방식이 아니라 텍스트처럼 토큰(이미지당 1,290개)을 순차 생성해서 이미지를 만든다. LMArena에서 코드네임 'nano-banana'로 등장해 인기를 끌자 Google이 공식 별칭으로 채택했다.
- 가격이 1024×1024 기준 약 $0.04/장으로, gpt-image-1의 $0.17/장 대비 4분의 1 수준이다. 속도와 비용 면에서 diffusion 모델과 비슷한 수준을 유지하면서도 autoregressive 방식의 장점을 갖는다.
- 핵심 강점은 프롬프트 준수력(prompt adherence)이다. 컨텍스트 윈도우가 32,768 토큰으로 기존 CLIP의 77토큰, T5의 512토큰과는 비교가 안 될 만큼 넓어서, 매우 길고 복잡한 프롬프트도 충실히 반영한다.
- 저자는 'negative space prompting'이라는 기법을 소개하는데, 원하지 않는 요소를 명시적으로 금지하는 지시를 프롬프트에 포함시키면 불필요한 요소가 생성되는 것을 효과적으로 막을 수 있다.
- HTML 코드를 프롬프트로 넣으면 해당 웹페이지 렌더링을 놀라울 정도로 정확하게 이미지로 변환할 수 있다. 이는 넓은 컨텍스트 윈도우 덕분에 가능한 고유한 활용법이다.
- 반면 style transfer(스타일 변환)에는 약한 모습을 보인다. 특정 아트 스타일을 적용하려 해도 학습 데이터에 묶여 잘 안 되는 경우가 많다. 다만 커뮤니티에서는 참조 이미지 2장을 함께 넣으면 개선된다는 팁이 공유됐다.
- 저자가 만든 Python 패키지 gemimg을 사용하면 Gemini API의 복잡한 이미지 인코딩/디코딩 보일러플레이트 없이 몇 줄로 이미지를 생성할 수 있다. CLI도 지원한다.
- Google AI Studio에서 무료로 사용 가능하고, 가로세로 비율 등 파라미터도 설정할 수 있다. 다만 무료 버전에는 이미지 우측 하단에 워터마크가 찍힌다.
Evidence
- 한 사용자는 스토리보드 제작에 하루 수십 장씩 생성하며, 환경·카메라·피사체·구도·조명·색감·품질의 7개 레이어로 프롬프트를 구성해 캐릭터와 장면의 일관성을 수십 개 씬에 걸쳐 유지하고 있다고 공유했다. 바운딩 박스 편집 도구까지 만들어 불완전한 부분을 Claude와 연동해 수정하는 워크플로우를 구축했다고 한다.
- 자녀에게 Ender's Game 같은 텍스트를 일러스트로 만들어주는 프로젝트를 5번 이상 재작성했는데, Nano Banana가 가장 효과적이었다는 경험담이 있었다. 텍스트에서 엔티티를 추출하고, 아트 스타일에 맞는 캐릭터를 생성한 뒤 개별 일러스트로 조합하는 파이프라인을 사용한다고 한다.
- style transfer가 안 된다는 저자 의견에 반론도 있었다. 18세기 건축물 복원 프로젝트에서 SketchUp 모델이나 판화를 Nano Banana에 넣고 'make this into a photo'라고만 해도 형태를 유지하면서 스타일 변환이 잘 됐다는 경험이 공유됐다. 다만 '18세기'를 직접 언급하면 회화풍으로 나와서, '잘 보존된 역사 동네 사진' 같은 우회 표현이 필요했다고 한다.
- 신뢰성 문제를 제기하는 의견도 있었다. temperature를 0으로 설정하고 '절대 변경하지 마라'고 대문자로 강조해도, 이미지에 벽난로를 추가하거나 차고를 생성하는 등 랜덤한 대규모 편집이 산발적으로 발생해서 프로덕션 앱에 쓰기 어렵다는 지적이다.
- Gemini 2.5 Flash에 별도 system prompt를 넣어 이미지 생성용 프롬프트를 먼저 작성하게 하고, 그 출력을 Nano Banana에 전달하는 2단계 파이프라인이 고품질 이미지와 style transfer에 효과적이라는 팁이 공유됐다.
How to Apply
- 프로그래밍 방식으로 이미지를 대량 생성해야 하는 경우, gemimg 패키지를 설치하고 Gemini API 키만 세팅하면 2줄로 이미지 생성이 가능하다. gpt-image-1 대비 비용이 1/4 수준이므로 대량 생성 시 비용 절감 효과가 크다.
- 복잡한 장면을 생성할 때는 프롬프트를 환경/카메라/피사체/구도/조명/색감/품질 등 레이어별로 분리해서 작성하면 일관된 결과를 얻을 수 있다. 원하지 않는 요소는 negative space prompting으로 명시적으로 제외한다.
- style transfer가 필요하면 Gemini 2.5 Flash를 중간 프롬프트 작성자로 두고, 변환할 이미지 + 스타일 참조 이미지를 함께 제공하는 2단계 파이프라인을 구성하면 단순 텍스트 프롬프트보다 훨씬 좋은 결과를 얻을 수 있다.
- 프로덕션 앱에 적용할 때는 Nano Banana의 산발적 hallucination(없는 요소 추가) 문제를 감안해서, 생성 결과를 검증하는 후처리 단계를 반드시 포함해야 한다. temperature 0으로도 완전히 방지되지 않는다.
Code Example
from gemimg import GemImg
g = GemImg(api_key="AI...")
g.generate("A kitten with prominent purple-and-green fur.")
# CLI 사용법
# GEMINI_API_KEY="..." \
# uv run --with https://github.com/minimaxir/gemimg/archive/main.zip \
# python -m gemimg "a racoon holding a hand written sign that says I love trash"Terminology
관련 논문
Claude Code에서 HTML을 출력 포맷으로 쓰는 이유: Markdown보다 나은 점들
Claude Code 팀이 Markdown 대신 HTML을 LLM 출력 포맷으로 선호하기 시작한 이유와 그 실용적 장점을 정리한 글로, AI와 함께 문서/스펙/대시보드를 만드는 워크플로우에 직접적인 영향을 준다.
언제 투표하고 언제 다시 쓸까: Disagreement 기반 Test-Time Scaling 전략 라우팅
모델 출력이 얼마나 일치하는지 보고 쉬운 문제엔 majority voting, 어려운 문제엔 문제 rewriting을 자동으로 선택해 정확도 3~7% 올리고 샘플링 비용도 줄이는 학습 불필요 프레임워크.
Less Is More: Android 앱에 On-Device Small Language Model 통합할 때 실제로 겪는 엔지니어링 문제들
Wordle 게임에 온디바이스 SLM(Gemma 4 E2B, Qwen3 0.6B)을 5일간 붙여보면서 발견한 5가지 실패 유형과 8가지 실용 해결책 정리
확장 가능한 Synthetic Data 생성을 위한 Dynamic Context Evolution
VTS + Semantic Memory + Adaptive Prompt 3가지 메커니즘으로 구성된 프레임워크는 LLM 대량 synthetic data 생성 시 배치 간 중복·반복 현상을 완전히 제거한다.
Karpathy 워크플로우에서 영감받아 사전 컴파일된 Wiki로 세션당 토큰 90%+ 절감
사전에 정리된 코드베이스 Wiki를 활용하면 Claude 세션당 토큰 사용량을 90% 이상 줄인다.
3개월치 AI 생성 코드를 전부 삭제했다. 그리고 배운 것들.
AI로 작성된 코드베이스를 70% 삭제 후 2주 만에 재작성하니 절반 크기로 줄어들면서 완전한 이해 가능성을 확보했다.