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:
Pfor prompt, inherits fromstring. Length, Slicing and concatenation are modified and support new attributes like.role.p = P("You're a helpful assistant")
PCfor prompt chain, act likelist[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,strforP -
For single prompt, like
sp, the role isstr(e.g.system) orNone -
sp+upwill concatenate two prompt string and generate a newP, whose role will be updated if the latter one has one.- For example,
sp+up's role isuser;sp+P('Hi')'s role issystem
- For example,
-
.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).rolesis['system', 'user'].messages(...)pack prompts into OpenAI-Compatible messages JSON, where you can directly pass it toclient.chat.completions.create(messages=...).messageswill assume the first role isuser, then proceed in the order of user-assistant. When a prompt has a role, it will use that role. checkpc.infer_rolefor final roles in messages.
Few promises in prompt-string
Pinherits fromstring. Therefore, aside from the mentioned features, its other behaviors are just like those of astringin Python.prompt-stringwon't add OpenAI and other AI SDKs as dependencies; it is simply a toolkit for prompts.prompt-stringwill be super light and fast, with no heavy processes running behind the scenes.
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| prompt_string-0.0.1.tar.gz | 6.0 kB | Without provenance | Details for prompt_string-0.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| prompt_string-0.0.1-py3-none-any.whl | Python 3 | none | any | Details for prompt_string-0.0.1-py3-none-any.whl |
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
|
Security for prompt-string 0.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.