Skip to main content

Expand a prompt matrix strings into a list of prompts.

Project description

Prompt Matrix

Python PyPI License: MIT

A Python package to expand prompt matrix strings. For example, the string "The <dog|cat> in the hat" expands to the list ["The dog in the hat", "The cat in the hat"].

The motivating case for this package is to compare the effects of different prompts in text and image generation systems such as Stable Diffusion and GPT-3.

Features

A prompt string may contain multiple alternations. For example, "The <dog|cat> in the <cardigan|hat>" produces a list of the four strings "The dog in the cardigan", "The dog in the hat", "The cat in the cardigan", and "The cat in the hat".

A prompt string may contain nested alternations. For example, "The <<small|large> dog|cat>" produces the strings "The small dog", "The large do", and "The cat".

Brackets [] enclose optional elements. For example, "The [small] cat" is equivalent to "The <small,> cat", and both produce the strings "The small cat" and "The cat".

The special characters <>{}| can be replaced by different strings, or disabled by specifying None or the empty string.

Note: The disjunction is bounded by the enclosing brackets, if any. "The dog|cat in the cardigan|hat" generates the three strings "The dog", "cat in the gardigan", and "hat". This is in contrast to some other systems, that scope a disjunction to the text delimited by surrounding whitespace.

Install

$ pip install prompt-matrix

Usage

Prompt Matrix provides two functions for expanding a prompt matrix: expand and iterexpand. Both take a string that specifies a prompt matrix.

expand returns an array of strings with all possible combinations of the prompt matrix elements.

import prompt_matrix

prompt = "<hi|hello> <there|you>"
expansion = prompt_matrix.expand(prompt)
print(expansion) # ["hi there", "hi you", "hello there", "hello you"]

iterexpand returns a generator that yields the expansions one by one.

import prompt_matrix

prompt = "<hi|hello> <there|you>"
for expansion in prompt_matrix.iterexpand(prompt):
  print(expansion) # "hi there", "hi you", "hello there", "hello you"

Examples

Example 1: Basic usage

import prompt_matrix

prompt_matrix.expand("The <dog|cat> in the hat")
# ->
# ["The dog in the hat",
#  "The cat in the hat"]

Example 2: Using multiple alternations

prompt_matrix.expand("The <dog|cat> in the <cardigan|hat>")
# ->
# ["The dog in the cardigan",
#  "The dog in the hat",
#  "The cat in the cardigan",
#  "The cat in the hat"]

Example 3: Using nested brackets

prompt_matrix.expand("The <<small|large> <brown|black> dog|<red|blue> fish>")
# ->
# ["The small brown dog",
#  "The small black dog",
#  "The large brown dog",
#  "The large black dog",
#  "The red fish",
#  "The blue fish"]

Example 4: Using custom brackets and separator

prompt_matrix.expand("The {dog,cat} in the {cardigan,hat}",
                     brackets=['{', '}'], alt=',')
# ->
# ["The dog in the cardigan",
#  "The dog in the hat",
#  "The cat in the cardigan",
#  "The cat in the hat"]

License

MIT

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

prompt_matrix-0.1.4.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

prompt_matrix-0.1.4-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file prompt_matrix-0.1.4.tar.gz.

File metadata

  • Download URL: prompt_matrix-0.1.4.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.11.2 Linux/5.15.0-1034-azure

File hashes

Hashes for prompt_matrix-0.1.4.tar.gz
Algorithm Hash digest
SHA256 07350cb54aaca60e2fb8106e463053cd97c606064cb31e0a865a4a8b7e8d22e9
MD5 ebe7a18205f675007e48e0282001bd23
BLAKE2b-256 40c3c2131ef06b660b61d053ffedf53ec71c87afbe34e3580a031fc1a07f8280

See more details on using hashes here.

File details

Details for the file prompt_matrix-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: prompt_matrix-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.1 CPython/3.11.2 Linux/5.15.0-1034-azure

File hashes

Hashes for prompt_matrix-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 53fc5822897f820c9d6776f3f4994364d00daffd4b2cfc9dfab6df8306b2e16d
MD5 308db3e3ad967ec4357a1ca684908c5d
BLAKE2b-256 6fc06d8b5b1ca423d4e92a3f9075902f719c41d72a7f188a52cb3d828fd8611b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page