Experimental Feature: SmartGen is currently in beta. APIs and behaviors may change.
Overview
SmartGen provides a high-level interface for generating images with enhanced prompt engineering and dimension controls. It supports both FLUX and Stable Diffusion models.
Basic Example
import Heurist from 'heurist';
const heurist = new Heurist({
apiKey: process.env['HEURIST_API_KEY']
});
const response = await heurist.smartgen.generateImage({
description: "A futuristic cyberpunk portrait of a young woman",
image_model: "FLUX.1-dev",
stylization_level: 3,
detail_level: 4,
color_level: 5,
lighting_level: 2
});
Parameters and Controls
SmartGen accepts the following key parameters:
{
// Basic settings
description: string, // Main image description
width?: number,
height?: number,
// AI model settings
image_model?: string, // Default: FLUX-1-dev
is_sd?: boolean, // Default: false. Set it to true if we want to use stable diffusion prompt
language_model?: string, // Default: nvidia/llama-3.1-nemotron-70b-instruct. For image prompt generation.
// Dimension controls (all optional, scale 1-5)
stylization_level: number, // Realism vs artistic style. 1: Photorealistic 5: Highly artistic
detail_level: number, // Amount of detail. 1: Minimalist 5: Extreme intricate
color_level: number, // Color intensity. 1: Monochromatic 5: Hyper-saturated
lighting_level: number, // Lighting drama. 1: Flat, even lighting 5: Extreme dramatic lighting
// Optional parameters
must_include?: string, // Elements to always include without altering
examples?: string[], // Example prompts for reference
quality?: 'normal' | 'high', // Controls iteration count
num_iterations?: number, // Default is 20. If specified, this overrides quality setting
guidance_scale?: number, // 3 for Flux and 6 for Stable Diffusion
negative_prompt?: string, // Negative prompt, only applies to Stable Diffusion
param_only?: boolean // Default: false. Set it to true if we want to return params without execution.
}
Two-Step Generation
You can split the generation process into two steps:
// Step 1: Get image generation parameters
const params = await heurist.smartgen.generateImage({
description: "A cyberpunk cityscape",
image_model: "FLUX-1-dev",
stylization_level: 4,
must_include: "neon lights, flying cars",
param_only: true // Don't generate image yet. Only return the parameters
});
// Review and modify parameters if needed
console.log(params.parameters.prompt);
// Step 2: Call `images.generate` API to generate with the same or modified parameters
const imageResult = await heurist.images.generate({
...params.parameters
// You may change some fields
});
Response Type in Parameter-only Mode (param_only
set to true)
{
parameters: {
prompt: string, // LLM-enhanced prompt
model: string,
width: number,
height: number,
num_iterations: number,
guidance_scale: number,
neg_prompt?: string,
}
}
This allows you to preview and tweak the image generation parameters before invoking the generation method.
One-Step Generation
You can create an image with a simple description in one step:
const result = await heurist.smartgen.generateImage({
description: "A cyberpunk cityscape",
image_model: "FLUX-1-dev",
stylization_level: 4,
must_include: "neon lights, flying cars"
});
// Result image URL
console.log(result.url);
// You can inspect the image generation parameters
console.log(result.parameters);
Demonstration
Here are two examples showcasing the progression from monochromatic to vibrant colors (color_level from 1 to 5):
Example 1: “A futuristic cyberpunk portrait of a young woman”
Example 2: “Hot air balloons in the sky”.