Code-first, type-safe prompt management
Project description
pixie-prompts
Code-first, type-checked prompt management. Manage prompt locally in your codebase, with Jinja rendering, variable type-hint and validations.
Setup
In your project folder, install pixie-prompts[server] Python package:
pip install pixie-prompts[server]
Note: you can install pixie-prompts without the server extras for your production build.
Start the local dev server and open the web UI by running:
pp
Note: The web-browser would automatically open http://localhost:8000. You can also access the web UI at gopixie.ai.
To test prompts, create .env file with LLM API key(s):
# .env
OPENAI_API_KEY=...
GEMINI_API_KEY=...
Register Prompt
In your code, create a new prompt using create_prompt:
# prompts.py
from pixie.prompts import create_prompt
simple_prompt = create_prompt('simple_prompt')
Your prompt would automatically appear in the web UI after your code is saved.
Manage Prompt
You can create new version(s) of a prompt in the web UI.
Once saved from web UI, it will be assigned a new version id, and the content would be saved in your codebase at /.pixie/prompts/<prompt_name>/<version_id>.jinja.
Note: it's recommended to only edit your prompts via the web UI to get type-hint and validation.
Define Variables
For prompt that has variable(s) in it, define a class extending pixie.prompts.Variables (which extends pydantic.BaseModel. Then use the class type when registering your prompt.
# prompts.py
from pixie.prompts import Variables, create_prompt
class Person(Variables):
name: str
age: int
# Create a prompt with variables
typed_prompt = create_prompt('typed_prompt', Person)
Other than using dict, you can define your variable class in anyway that's permissible in Pydantic. I.e. you can define your field as basic types such as str, int, bool, you can have a list of permissible items, you can use Union type, and you can have nested Variable field.
The web UI will parse your variable definitions and use it to decide input fields, type-hints and validations.
Use Prompt
Compile your prompt into string with the compile function on the prompt object. Pass in the Variables object (if defined) for your prompt as argument.
# demo.py
from pixie.prompts import Variables, create_prompt
simple_prompt = create_prompt('simple_prompt')
class Person(Variables):
name: str
age: int
# Create a prompt with variables
typed_prompt = create_prompt('typed_prompt', Person)
simple_prompt_str = simple_prompt.compile()
typed_prompt_str = typed_prompt.compile(Person(name="Jane", age=30))
Check out more examples.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pixie_prompts-0.1.8.dev6.tar.gz.
File metadata
- Download URL: pixie_prompts-0.1.8.dev6.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
436779b50a84c34cc9b9cbbe46e7a5da840a71a4a87921121c264a855dec20ca
|
|
| MD5 |
350c7eca9a5500cf37a4183f0f8cd066
|
|
| BLAKE2b-256 |
956676b0a09f4f95ead49c1345cf6a9f7e2767ebe1f3245f9b72a5ce3247db5b
|
File details
Details for the file pixie_prompts-0.1.8.dev6-py3-none-any.whl.
File metadata
- Download URL: pixie_prompts-0.1.8.dev6-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cba4fbe9e41d110d5d0f6e0797ed40585dc27a4a0dbf7f59ab90a84ff08c65c
|
|
| MD5 |
863f98540825f2dd2ff2d5f3e7c0bdbe
|
|
| BLAKE2b-256 |
5423723f8ffa02ba9f1ff49cd8cc4c8158c2e421ef78240baa955924c7380e08
|