nano / README.md
leave-everything's picture
Upload 4 files
92b9aa5 verified

A newer version of the Gradio SDK is available: 6.6.0

Upgrade
metadata
title: NanoBanana V9 - Gemini画像生成
emoji: 🍌
colorFrom: yellow
colorTo: red
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
license: mit

🍌 NanoBanana - Gemini画像生成 (Version 9)

Google Gemini AIを使用したテキストから画像を生成するアプリケーション(Gradio 5 + 新Google Gen AI SDK対応)

✨ V9の主な変更点

  • Gradio 5.49.1にアップグレード(パフォーマンス改善、SSR対応)
  • 新Google Gen AI SDK (google-genai) に移行
  • FastAPI削除 - Gradio純正API機能を使用
  • ✅ 依存パッケージ30%削減(10個→7個)
  • ✅ HF Spacesで最適化

🚀 クイックスタート

1. インストール

pip install -r requirements.txt

2. APIキーの設定

Google AI Studioで無料APIキーを取得

3. 起動

python app.py

ブラウザで http://localhost:7860 を開く

📡 API使用方法

エンドポイント

GET /api/health

ヘルスチェック

curl http://localhost:7860/api/health

レスポンス例:

{
  "status": "healthy",
  "timestamp": "2025-11-24T12:00:00.000Z",
  "version": "9.0.0",
  "available_models": {...}
}

GET /api/models

利用可能なモデルのリスト

curl http://localhost:7860/api/models

レスポンス例:

{
  "models": {
    "gemini-2.5-flash-image": {...},
    "gemini-3-pro-image-preview": {...}
  }
}

POST /api/generate

画像生成

cURLの例:

curl -X POST http://localhost:7860/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "data": [
      "富士山と桜、フォトリアリスティック、4K画質",
      "YOUR_GEMINI_API_KEY",
      "gemini-2.5-flash-image",
      "1024x1024",
      "Photorealistic",
      true,
      "",
      "my-image",
      false
    ]
  }'

Pythonの例:

from gradio_client import Client

client = Client("http://localhost:7860")
result = client.predict(
    prompt="富士山と桜、フォトリアリスティック、4K画質",
    gemini_api_key="YOUR_API_KEY",
    model="gemini-2.5-flash-image",
    size="1024x1024",
    style="Photorealistic",
    save_to_dataset=False,
    dataset_folder="",
    custom_filename="my-image",
    return_image_data=False,
    api_name="/generate"
)
print(result)

レスポンス例:

{
  "data": [{
    "success": true,
    "filename": "my-image.png",
    "local_path": "/file=generated_images/my-image.png",
    "prompt": "富士山と桜、フォトリアリスティック、4K画質",
    "size": "1024x1024",
    "style": "Photorealistic",
    "model": "gemini-2.5-flash-image",
    "dataset_url": "https://huggingface.co/datasets/..."
  }]
}

📦 依存関係

gradio==5.49.1
google-genai>=1.52.0
pillow>=10.0.0
numpy>=1.24.0
python-dotenv>=1.0.0
huggingface_hub>=0.27.0
datasets>=2.14.0

🏗️ アーキテクチャ

V9 (Gradio 5 + google-genai)
├── Gradio Blocks UI
├── Gradio Native API (/api/*)
└── Google Gen AI SDK (Client-based)

V8からの主な変更:

  • FastAPI層を削除 → Gradio純正APIに統合
  • google-generativeai → google-genai SDK
  • uvicorn削除 → Gradio単体で起動

🔧 環境変数(オプション)

Dataset保存機能を使用する場合のみ設定してください。

.env.example.envにコピーして設定:

# Hugging Face Dataset(オプション)
HF_TOKEN=your_hf_token_here
DATASET_REPO_ID=your_username/your_dataset_name

📝 V8からの移行ガイド

APIエンドポイントの変更

V8 (FastAPI) V9 (Gradio API) 変更内容
POST /api/generate/url?param=value POST /api/generate + JSON body リクエスト形式変更
POST /api/generate/full POST /api/generate + return_image_data=true パラメータ化
GET /api/health GET /api/health 互換性あり
GET /api/models GET /api/models 互換性あり

リクエストフォーマットの変更

V8 (FastAPI + クエリパラメータ):

curl -X POST "http://localhost:7860/api/generate/url?prompt=富士山&gemini_api_key=...&model=gemini-2.5-flash-image&size=1024x1024&style=Photorealistic"

V9 (Gradio API + JSONボディ):

curl -X POST http://localhost:7860/api/generate \
  -H "Content-Type: application/json" \
  -d '{"data": ["富士山", "...", "gemini-2.5-flash-image", "1024x1024", "Photorealistic", true, "", "", false]}'

パラメータの順序(V9)

/api/generateエンドポイントのdata配列の順序:

  1. prompt (string) - 画像生成プロンプト
  2. gemini_api_key (string) - Gemini APIキー
  3. model (string) - モデル名(デフォルト: "gemini-2.5-flash-image")
  4. size (string) - サイズ(デフォルト: "1024x1024")
  5. style (string) - スタイル(デフォルト: "Default")
  6. save_to_dataset (boolean) - Dataset保存(デフォルト: true)
  7. dataset_folder (string) - Datasetフォルダ名(デフォルト: "")
  8. custom_filename (string) - カスタムファイル名(デフォルト: "")
  9. return_image_data (boolean) - base64データ返却(デフォルト: false)

🚢 HF Spacesへのデプロイ

  1. リポジトリを作成
  2. README.mdのYAMLヘッダーを確認: ```yaml

    title: NanoBanana V9 emoji: 🍌 colorFrom: yellow colorTo: orange sdk: gradio sdk_version: 5.49.1 app_file: app.py pinned: false

    
    
  3. コードをpush
  4. HF Spacesの設定でSecretsを追加(オプション):
    • HF_TOKEN: Hugging Faceトークン(Dataset保存用)
    • DATASET_REPO_ID: データセットリポジトリID

🎨 利用可能なモデル

gemini-2.5-flash-image(推奨)

  • 高速・低コスト($0.039/画像)
  • 10種類のアスペクト比対応
  • 一般用途に最適

gemini-3-pro-image-preview

  • 高品質・2K/4K解像度対応
  • プロフェッショナル用途向け

🎭 利用可能なスタイル

  • Photorealistic(写真風)
  • Artistic(芸術的)
  • Anime(アニメ風)
  • 3D Render(3Dレンダリング)
  • Watercolor(水彩画)
  • Oil Painting(油絵)
  • Digital Art(デジタルアート)
  • Sketch(スケッチ)
  • Studio Photo(スタジオ写真)
  • Minimalist(ミニマリスト)

📏 利用可能なサイズ

  • 512x512
  • 768x768
  • 1024x1024(推奨)
  • 1024x768
  • 768x1024
  • 1536x1536
  • 2048x2048(gemini-3-pro-image-previewのみ)

🔍 トラブルシューティング

エラー: "google-genai not found"

pip install google-genai>=1.52.0

エラー: "API key required"

Gemini APIキーが正しく入力されているか確認してください。

画像が生成されない

  1. Gemini APIキーが有効か確認
  2. インターネット接続を確認
  3. モデル名が正しいか確認

📄 ライセンス

MIT License

🙏 謝辞

  • Google Gemini AI
  • Gradio 5
  • Hugging Face

Version: 9.0.0 最終更新: 2025-11-24 開発: Claude Code + tomo2chin2