Diffusion Prompt Embedder
A Python library specialized for parsing and processing weighted prompt text, supporting embedding generation and tokenization to enhance text processing for AI models like Stable Diffusion. It's compatible with SD Web UI's weighted prompts but doesn't include scheduling.
Features
- 💬 Prompt Parsing: Parse text prompts with weight markers (e.g.,
a (cat:1.5) in the garden) - 🔢 Weight Management: Support for positive weight
(text)and negative weight[text]syntax - 📚 CLIP Integration: Seamless integration with CLIP text models for embedding generation
- 🔄 Batch Processing: Efficiently process batches of multiple prompts
- 🪄 Long Text Support: Handle prompts that exceed standard CLIP context length
Installation
Install the base library using pip:
pip install diffusion-prompt-embedder
Usage Examples
Parse Weighted Prompts
from diffusion_prompt_embedder import parse_prompt_attention
# Basic parsing
result = parse_prompt_attention("a (cat:1.5) in the garden")
print(result) # [['a ', 1.0], ['cat', 1.5], [' in the garden', 1.0]]
# Using brackets to lower weight
result = parse_prompt_attention("a [cat] in the garden")
print(result) # [['a ', 1.0], ['cat', 0.9090909090909091], [' in the garden', 1.0]]
# Complex prompt example
result = parse_prompt_attention("a (((house:1.3)) [on] a (hill:0.5), sun, (((sky))).")
print(result)
Generate CLIP Embeddings
import torch
from transformers import CLIPTokenizer, CLIPTextModel
from prompt_parser import get_embeddings_sd15
# Initialize CLIP model
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14")
text_encoder = CLIPTextModel.from_pretrained(
"openai/clip-vit-large-patch14",
torch_dtype=torch.float16
).to("cuda")
# Generate embeddings
prompt_embeds, neg_prompt_embeds = get_embeddings_sd15(
tokenizer=tokenizer,
text_encoder=text_encoder,
prompt="a (white:1.2) cat",
neg_prompt="blur, bad quality",
clip_skip=1 # Optional: skip layers in CLIP model
)
# Batch processing multiple prompts
from prompt_parser import get_embeddings_sd_15_batch
batch_embeds = get_embeddings_sd_15_batch(
tokenizer=tokenizer,
text_encoder=text_encoder,
prompts=["a (white:1.2) cat", "a (blue:1.4) dog", "a red bird"]
)
Prompt Syntax
Basic Weight Syntax
(text)- Increases the prompt weight by 1.1x(text:1.5)- Sets the prompt weight to 1.5[text]- Decreases the prompt weight to 1/1.1 of original\( \[ \) \]- Use backslash to escape bracket characters
BREAK Syntax
Use the BREAK keyword to create breakpoints in prompts:
result = parse_prompt_attention("text1 BREAK text2")
# Result: [["text1", 1.0], ["BREAK", -1], ["text2", 1.0]]
Development
Clone the repository and install development dependencies:
git clone https://github.com/jannchie/diffusion-prompt-parser.git
cd diffusion-prompt-parser
pip install -e ".[dev]"
Run tests:
pytest
License
Author
- Jianqi Pan (@jannchie)
Metadata
Release files for diffusion-prompt-embedder 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| diffusion_prompt_embedder-0.4.2.tar.gz | 69.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| diffusion_prompt_embedder-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 83.7 kB
Release files / diffusion_prompt_embedder-0.4.2.tar.gz
| Download URL | diffusion_prompt_embedder-0.4.2.tar.gz |
|---|---|
| Size | 69.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27ad3b41303b983897c42d0899a8d3846c29d2cf7189645ed696616c5e77e6ba
|
|
BLAKE2b-256 checksum How to use checksums |
b27a09a34eb6227de7e0fb22dfb505e83380b05d25ee05cd865058372d5db03d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / diffusion_prompt_embedder-0.4.2-py3-none-any.whl
| Download URL | diffusion_prompt_embedder-0.4.2-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9205f051d6f8ef3f84c5094143617904d6a1af7e0b27471f94adf3f9e167ff0a
|
|
BLAKE2b-256 checksum How to use checksums |
d79149c1c6ffc143e334239717dee65f2aa42a7402c3fa0cd1c11215b82cb06f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|