183 lines
5.5 KiB
Markdown
183 lines
5.5 KiB
Markdown
# Generate Conversation Command
|
|
|
|
Multi-turn image generation with progressive refinement. Each turn builds on previous context, allowing iterative improvements without starting over.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
gemini-nano-banana-tool generate-conversation PROMPT -o OUTPUT [OPTIONS]
|
|
```
|
|
|
|
## Arguments
|
|
|
|
- `PROMPT` - Text prompt for this turn (required)
|
|
|
|
## Required Options
|
|
|
|
- `-o, --output PATH` - Output image file path (required)
|
|
|
|
## Conversation Options
|
|
|
|
- `-f, --file PATH` - Conversation file (creates new if doesn't exist)
|
|
- `-a, --aspect-ratio TEXT` - Aspect ratio (default: 1:1, only for new conversations)
|
|
- `-m, --model TEXT` - Gemini model (default: gemini-2.5-flash-image, only for new)
|
|
|
|
## Authentication Options
|
|
|
|
- `--api-key TEXT` - Override API key from environment
|
|
- `--use-vertex` - Use Vertex AI instead of Developer API
|
|
- `--project TEXT` - Google Cloud project (for Vertex AI)
|
|
- `--location TEXT` - Google Cloud location (for Vertex AI)
|
|
|
|
## Other Options
|
|
|
|
- `-v, --verbose` - Multi-level verbosity (-v INFO, -vv DEBUG, -vvv TRACE)
|
|
|
|
## How It Works
|
|
|
|
1. **First Turn**: Create initial image from prompt, save conversation state
|
|
2. **Subsequent Turns**: Previous output automatically becomes reference image
|
|
3. **Persistence**: All turns, prompts, and metadata saved to JSON file
|
|
4. **Resume**: Load conversation file to continue refinement
|
|
|
|
## Examples
|
|
|
|
### Basic Multi-Turn Workflow
|
|
|
|
```bash
|
|
# Turn 1: Initial generation
|
|
gemini-nano-banana-tool generate-conversation "A sunset over mountains" \
|
|
-o sunset1.png --file conversation.json
|
|
|
|
# Turn 2: Refinement (loads conversation automatically)
|
|
gemini-nano-banana-tool generate-conversation "Make the sky more orange" \
|
|
-o sunset2.png --file conversation.json
|
|
|
|
# Turn 3: Further refinement
|
|
gemini-nano-banana-tool generate-conversation "Add a lake in the foreground" \
|
|
-o sunset3.png --file conversation.json
|
|
```
|
|
|
|
### Interior Design Example
|
|
|
|
```bash
|
|
# Turn 1: Initial room
|
|
gemini-nano-banana-tool generate-conversation \
|
|
"A modern minimalist living room with large windows" \
|
|
-o room-v1.png --file interior.json -a 16:9
|
|
|
|
# Turn 2: Add furniture
|
|
gemini-nano-banana-tool generate-conversation \
|
|
"Add a gray sofa and wooden coffee table" \
|
|
-o room-v2.png --file interior.json
|
|
|
|
# Turn 3: Adjust lighting
|
|
gemini-nano-banana-tool generate-conversation \
|
|
"Make the lighting warmer and add floor lamp" \
|
|
-o room-v3.png --file interior.json
|
|
|
|
# Turn 4: Final touches
|
|
gemini-nano-banana-tool generate-conversation \
|
|
"Add plants and artwork on the walls" \
|
|
-o room-final.png --file interior.json
|
|
```
|
|
|
|
### Product Photography Example
|
|
|
|
```bash
|
|
# Turn 1: Initial product shot
|
|
gemini-nano-banana-tool generate-conversation \
|
|
"Professional product photo of wireless headphones" \
|
|
-o headphones-v1.png --file product.json -a 1:1
|
|
|
|
# Turn 2: Adjust angle
|
|
gemini-nano-banana-tool generate-conversation \
|
|
"Rotate to show the left side" \
|
|
-o headphones-v2.png --file product.json
|
|
|
|
# Turn 3: Change background
|
|
gemini-nano-banana-tool generate-conversation \
|
|
"Change background to dark gradient" \
|
|
-o headphones-v3.png --file product.json
|
|
```
|
|
|
|
## Conversation File Format
|
|
|
|
The conversation file stores complete history in JSON:
|
|
|
|
```json
|
|
{
|
|
"conversation_id": "20251120_181305",
|
|
"model": "gemini-2.5-flash-image",
|
|
"aspect_ratio": "16:9",
|
|
"turns": [
|
|
{
|
|
"prompt": "A sunset over mountains",
|
|
"output_path": "/path/to/sunset1.png",
|
|
"reference_images": [],
|
|
"metadata": {
|
|
"token_count": 1295,
|
|
"resolution": "1344x768",
|
|
"finish_reason": "STOP"
|
|
},
|
|
"timestamp": "2025-11-20T18:13:11.428020"
|
|
},
|
|
{
|
|
"prompt": "Make the sky more orange",
|
|
"output_path": "/path/to/sunset2.png",
|
|
"reference_images": ["/path/to/sunset1.png"],
|
|
"metadata": {
|
|
"token_count": 1554,
|
|
"resolution": "1344x768",
|
|
"finish_reason": "STOP"
|
|
},
|
|
"timestamp": "2025-11-20T18:13:27.318416"
|
|
}
|
|
],
|
|
"created_at": "2025-11-20T18:13:05.751502",
|
|
"updated_at": "2025-11-20T18:13:27.318430"
|
|
}
|
|
```
|
|
|
|
## Use Cases
|
|
|
|
- **Product Photography**: Iteratively adjust lighting, angles, styling
|
|
- **Character Design**: Refine poses, clothing, expressions progressively
|
|
- **Interior Design**: Build rooms by adding furniture and decor step by step
|
|
- **Marketing Materials**: Test variations while maintaining consistency
|
|
- **Concept Art**: Explore different iterations of a design
|
|
- **Fashion E-commerce**: Try products on models or in different settings
|
|
|
|
## Important Notes
|
|
|
|
- **Model & Aspect Ratio**: Only set when creating new conversation (locked for subsequent turns)
|
|
- **Reference Images**: Previous output automatically used (no manual `-i` needed)
|
|
- **Resume Anytime**: Load conversation file to continue from any turn
|
|
- **No File Flag**: Can use without `--file` but conversation won't be saved
|
|
|
|
## Why Use Conversation Mode?
|
|
|
|
- **Progressive Refinement**: Iteratively improve without losing context
|
|
- **Experiment Safely**: Try variations while maintaining consistency
|
|
- **Context Awareness**: Each turn references previous outputs automatically
|
|
- **Evolution Tracking**: Complete history of prompts and changes
|
|
- **Resume Anytime**: Continue conversations across sessions
|
|
|
|
## Cost Information
|
|
|
|
Each turn costs the same as a single generation:
|
|
- **Flash Model**: ~$0.039 per turn
|
|
- **Pro Model 1K/2K**: ~$0.134 per turn
|
|
- **Pro Model 4K**: ~$0.24 per turn
|
|
|
|
Cost is tracked per turn in conversation file metadata.
|
|
|
|
## Authentication
|
|
|
|
Set environment variable:
|
|
```bash
|
|
export GEMINI_API_KEY='your-api-key'
|
|
```
|
|
|
|
Get API key: https://aistudio.google.com/app/apikey
|