Skip to main content

Diffusion Prompt Embedder

PyPI version Python Version License: MIT Code Coverage

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

MIT

Author

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)

Source distribution for diffusion-prompt-embedder 0.4.2
File Size Uploaded
diffusion_prompt_embedder-0.4.2.tar.gz 69.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for diffusion-prompt-embedder 0.4.2
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page