Skip to main content

prompt-string

Treat prompt as a data type in Python

Prompt is essentially a string, but it should behave somewhat differently from a standard string:

📏 Length & Slicing: A prompt string should consider the length in terms of tokens, not characters, and slicing should be done accordingly.

👨 Role & Concatenation: Prompt strings should have designated roles (e.g., system, user, assistant) and should be concatenated in a specific manner.

Features

prompt-string provides two types:

  • P for prompt, inherits from string. Length, Slicing and concatenation are modified and support new attributes like .role.
    • p = P("You're a helpful assistant")
  • PC for prompt chain, act like list[P]. Link a series of prompt and support .messages(...)
    • pc = p1 / p2 / p3

Install

pip install prompt-string

Quick Start

Length & Slicing

from prompt_string import P

prompt = P("you're a helpful assistant.")

print("Total token size:", len(prompt))
print("Decoded result of the second token:", prompt[2])
print("The decoded result of first three tokens:", prompt[:3])

P supports some str native methods to still return a P object:

  • .format
  • .replace
prompt = P("you're a helpful assistant. {temp}")

print(len(prompt.format(temp="End of instructions")))
print(len(prompt.replace("{temp}", "")))

🧐 Raise an issue if you think other methods should be supported

Role

from prompt_string import P

sp = P("you're a helpful assistant.", role="system")
up = P("How are you?", role="user")

print(sp.role, up.role, (sp+up).role)
print(sp + up)

print(sp.message())
  • role can be None, str for P

  • For single prompt, like sp, the role is str(e.g. system) or None

  • sp+up will concatenate two prompt string and generate a new P, whose role will be updated if the latter one has one.

    • For example, sp+up's role is user; sp+P('Hi')'s role is system
  • .message(...) return a JSON object of this prompt.

Concatenation

pc = sp / up
print(pc.roles)
print(pc.messages())

For concatenated prompts, like sp / up, the type will be converted to PC (prompt chain), PC has below things:

  • .roles, a list of roles. For example, (sp|up).roles is ['system', 'user']
  • .messages(...) pack prompts into OpenAI-Compatible messages JSON, where you can directly pass it to client.chat.completions.create(messages=...).
    • messages will assume the first role is user, then proceed in the order of user-assistant. When a prompt has a role, it will use that role. check pc.infer_role for final roles in messages.

Few promises in prompt-string

  • P inherits from string. Therefore, aside from the mentioned features, its other behaviors are just like those of a string in Python.
  • prompt-string won't add OpenAI and other AI SDKs as dependencies; it is simply a toolkit for prompts.
  • prompt-string will be super light and fast, with no heavy processes running behind the scenes.

Release files for prompt-string 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prompt-string 0.0.1
File Size Uploaded
prompt_string-0.0.1.tar.gz 6.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for prompt-string 0.0.1
File Interpreter ABI Platform
prompt_string-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 12.2 kB

Release files / prompt_string-0.0.1.tar.gz

Download URL prompt_string-0.0.1.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c1c8c89006ff72bea5280d1bd2b62027a572d56a71df29a90a9dfa8590845e9c
BLAKE2b-256 checksum
How to use checksums
b0a284ab2e11b587ff78dbf5ea8a71b4f60d38d69877a1339455e491ecc6a98b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.9

Release files / prompt_string-0.0.1-py3-none-any.whl

Download URL prompt_string-0.0.1-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6485f802ba7d3817a640f21e27f0f1766566fa304d4875ad700e97bc9d57ded9
BLAKE2b-256 checksum
How to use checksums
d7ce4d67cde02928fafdc8a26fa9875c8b7fb64ebd3a7cae677f4e5d05dda136
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.0.1 This release

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