3분 안에 ‘Nano Banana’ 이미지 생성기 배포 (AWS S3 필요 없음)
Source: Dev.to

모두가 Gemini 2.0 Flash(친근하게 “Nano Banana” 모델이라 불리는) 이야기를 하고 있습니다. 빠르고, 멀티모달이며, 이제 개발자들에게 다른 이미지 생성 모델과 경쟁할 수 있는 기회를 주고 있습니다.
AI 에이전트, Discord 봇, 혹은 간단한 웹 앱을 만들고 있다면 곧 마주하게 될 공통적인 장벽이 있습니다: 스토리지.
Gemini API는 이미지를 원시 바이트 형태로 반환하는데, 이를 바로 Slack 채널이나 <img> 태그에 넣을 수 없습니다—URL이 필요합니다.
보통은 AWS S3 버킷을 설정하고, IAM 역할을 구성하고, CORS 문제를 해결하고, 보일러플레이트 코드를 작성해야 합니다. 오늘은 그 모든 과정을 건너뛰고 Lab Nocturne Images라는 제로‑컨피그 이미지 API를 사용해 50줄 이하의 파이썬 코드로 텍스트‑투‑이미지 생성기를 만들고 공유 가능한 링크를 반환해 보겠습니다.
스택
- 엔진: Google Gemini 2.0 Flash
- 스토리지: Lab Nocturne Images
- 언어: Python
1단계: 스토리지 키 받기 (1초)
Lab Nocturne은 “curl‑to‑start” 기능을 제공합니다. 터미널에서 다음 명령을 실행하세요:
curl https://images.labnocturne.com/key
JSON 형태의 응답으로 API 키를 받게 됩니다. 복사해 두세요—이것이 여러분의 스토리지 키입니다.
2단계: 파이썬 스크립트
필요한 패키지를 설치합니다:
pip install google-generativeai requests
import os
import requests
import google.generativeai as genai
import io
# CONFIGURATION
GOOGLE_API_KEY = "YOUR_GEMINI_API_KEY"
LAB_NOCTURNE_KEY = "YOUR_LN_TEST_KEY_FROM_STEP_1"
# Setup Gemini
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-2.0-flash-exp')
def host_image(image_bytes):
"""
Uploads raw bytes to Lab Nocturne and returns a public URL.
No AWS config, no buckets, just a POST request.
"""
url = "https://images.labnocturne.com/upload"
headers = {"Authorization": f"Bearer {LAB_NOCTURNE_KEY}"}
files = {'file': ('generated.jpg', image_bytes, 'image/jpeg')}
response = requests.post(url, headers=headers, files=files)
if response.status_code == 200:
return response.json()['url']
else:
raise Exception(f"Upload failed: {response.text}")
def generate_and_share(prompt):
print(f"🎨 Generating: '{prompt}'...")
# Generate the image
response = model.generate_content(prompt)
# Gemini returns parts; we want the image blob
if response.parts:
img_part = response.parts[0]
img_bytes = io.BytesIO(img_part.inline_data.data)
print("☁️ Uploading to CDN...")
public_url = host_image(img_bytes)
return public_url
else:
return "Failed to generate image."
# --- RUN IT ---
if __name__ == "__main__":
prompt = "A cyberpunk banana wearing sunglasses, 3d render, 4k"
link = generate_and_share(prompt)
print("-" * 30)
print(f"🚀 Image Live at: {link}")
print("-" * 30)
AI 에이전트에게 왜 중요한가
자율 에이전트(예: LangChain, CrewAI, AutoGen 등으로 구축)에는 “툴”이 필요합니다. S3 접근 권한을 부여하는 것은 위험하고 복잡하지만, Lab Nocturne 키는 안전하고 간단합니다. host_image 함수를 어떤 LLM 툴 정의에든 넣기만 하면 텍스트 기반 봇이 즉시 지속 가능한 시각 자료를 만들 수 있습니다.
제한 사항
- 1단계에서 생성된 키는 테스트 키입니다.
- 이미지는 7일 동안 보관됩니다(테스트/프로토타이핑에 적합).
- 업로드당 100 MB 크기 제한이 있습니다.
프로덕션에서는 영구 키를 발급받아야 하지만, 해커톤, 사이드 프로젝트, “Nano Banana” 실험에는 Prompt → URL 로 가는 가장 빠른 경로가 됩니다.
행복한 배포 되세요! 🚢