Generate ICRL thought-of-the-day images using LiteLLM, PIL, and Typer.
Project description
ICRL Image Generator
This project generates "thought of the day" images for the International Consciousness Research Laboratories (ICRL).
It uses LiteLLM to:
- Turn a text thought into an image prompt
- Generate an AI image
- Blend the generated image with an overlay image
The script is exposed as a command-line tool using Typer.
Features
- Generate text-to-image prompts using LiteLLM (
completion) - Produce images using LiteLLM (
image_generation) - Blend generated images with overlay images using configurable alpha values
- Batch process multiple thoughts from CSV files
- Save:
- the final blended image
- the raw generated image (optional)
- the generated image prompt (optional)
- Easy CLI interface
Installation
git clone https://github.com/HonakerM/icrl-generator.git
cd icrl-generator
pip install .
Usage
CLI - Single Image Generation
After installation, you can run the following command to generate an image.
Linux:
export OPENAI_API_KEY="<openai-api-key>"
python -m icrl_generator generate-image \
"Never assume that what you see on a person's face is what lies in their heart." \
overlay.png \
output.png \
--image-prompt-output image-prompt.txt \
--raw-image-output raw_image.png \
--log-level DEBUG \
--alpha 50
Windows:
$env:OPENAI_API_KEY = "<openai-api-key>"
python -m icrl_generator generate-image `
"Never assume that what you see on a person's face is what lies in their heart." `
overlay.png `
output.png `
--image-prompt-output image-prompt.txt `
--raw-image-output raw_image.png `
--log-level DEBUG `
--alpha 50
To view all options and their descriptions:
python -m icrl_generator generate-image --help
CLI - Batch Generation
To generate multiple images from a CSV file:
Linux:
export OPENAI_API_KEY="<openai-api-key>"
python -m icrl_generator generate-batch \
thoughts.csv \
overlay.png \
output_folder \
--include-image-prompt \
--include-raw-image \
--log-level INFO \
--alpha 50
Windows:
$env:OPENAI_API_KEY = "<openai-api-key>"
python -m icrl_generator generate-batch `
thoughts.csv `
overlay.png `
output_folder `
--include-image-prompt `
--include-raw-image `
--log-level INFO `
--alpha 50
The CSV file should have thoughts in column 2 (index 1) and publish dates in the second-to-last column in YYYY-MM-DD format.
To view all options:
python -m icrl_generator generate-batch --help
Code
If you want to call it from Python directly:
from pathlib import Path
from icrl_generator import generate_image
generate_image(
thought="Reality responds to our expectations.",
overlay=Path("overlay.png"),
output=Path("out.png"),
image_prompt_output=Path("prompt.txt"),
raw_image_output=Path("raw.png"),
alpha=50
)
Alpha Blending
The --alpha parameter controls the blend between the generated image and the overlay:
0: Fully generated image (no overlay)50: Equal blend (default)100: Fully overlay image (no generated image visible)
Results
Requirements
- Python 3.10+
- LiteLLM API keys properly configured (
export OPENAI_API_KEY=...) - Pillow
- Typer
- tqdm (for batch processing progress bars)
Command Reference
generate-image
Generate a single image with overlay blending.
Arguments:
THOUGHT: The thought text to generate an image forOVERLAY: Path to overlay image to blend with generated imageOUTPUT: Path to save the final blended image
Options:
--image-prompt-output PATH: Save the generated image prompt--raw-image-output PATH: Save the raw image before blending--log-level: Set logging level (default: INFO)--prompt-gen-model TEXT: LLM model for prompt generation (default: gpt-4o-mini)--image-gen-model TEXT: Image generation model (default: gpt-image-1-mini)--alpha INTEGER: Blend alpha value 0-100 (default: 50)
generate-batch
Generate multiple images from a CSV file.
Arguments:
INPUT: Path to CSV file with thoughts and publish datesOVERLAY: Path to overlay image to blend with all generated imagesOUTPUT_FOLDER: Folder to save generated images
Options:
--include-image-prompt/--no-include-image-prompt: Save image prompts (default: no)--include-raw-image/--no-include-raw-image: Save raw images (default: no)--log-level: Set logging level (default: INFO)--prompt-gen-model TEXT: LLM model for prompt generation (default: gpt-4o-mini)--image-gen-model TEXT: Image generation model (default: gpt-image-1-mini)--alpha INTEGER: Blend alpha value 0-100 (default: 50)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file icrl_generator-0.0.6.tar.gz.
File metadata
- Download URL: icrl_generator-0.0.6.tar.gz
- Upload date:
- Size: 9.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9937bb7f11465a25a310a11aed307d03639115fb63718044f6f1242e06f7b50
|
|
| MD5 |
73499a6af6ce65840a2550e888164173
|
|
| BLAKE2b-256 |
e310e80afaefb4646aa1fba815168722787c201bd8624d60fc0b173ebcad7c44
|
Provenance
The following attestation bundles were made for icrl_generator-0.0.6.tar.gz:
Publisher:
publish.yml on HonakerM/icrl-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
icrl_generator-0.0.6.tar.gz -
Subject digest:
e9937bb7f11465a25a310a11aed307d03639115fb63718044f6f1242e06f7b50 - Sigstore transparency entry: 756587166
- Sigstore integration time:
-
Permalink:
HonakerM/icrl-generator@a4d5d0ba2b5caf00d19864fd0a739236a4f995a5 -
Branch / Tag:
refs/tags/0.0.6 - Owner: https://github.com/HonakerM
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a4d5d0ba2b5caf00d19864fd0a739236a4f995a5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file icrl_generator-0.0.6-py3-none-any.whl.
File metadata
- Download URL: icrl_generator-0.0.6-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a83e52dbd3457b6586ca8a1ba8964f9e68272a30c1c76959bfcb4d2d4e89445
|
|
| MD5 |
628b09555c89018b666cbf10560a4cef
|
|
| BLAKE2b-256 |
790054903844cc7c9aadfd0cb5b1d0de57d6dac6ebcf6f481a016e1068d34a60
|
Provenance
The following attestation bundles were made for icrl_generator-0.0.6-py3-none-any.whl:
Publisher:
publish.yml on HonakerM/icrl-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
icrl_generator-0.0.6-py3-none-any.whl -
Subject digest:
3a83e52dbd3457b6586ca8a1ba8964f9e68272a30c1c76959bfcb4d2d4e89445 - Sigstore transparency entry: 756587172
- Sigstore integration time:
-
Permalink:
HonakerM/icrl-generator@a4d5d0ba2b5caf00d19864fd0a739236a4f995a5 -
Branch / Tag:
refs/tags/0.0.6 - Owner: https://github.com/HonakerM
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a4d5d0ba2b5caf00d19864fd0a739236a4f995a5 -
Trigger Event:
push
-
Statement type: