Skip to main content

Prompt Builder

Library for building prompts and agents with LLMs.

Installation

From PyPI:

pip install promptbuilder

From source:

git clone https://github.com/kapulkin/promptbuilder.git
cd promptbuilder
pip install -e .

Features

  • Prompt templates with variables and content tags
  • Structured output with TypeScript-like schema definition
  • LLM client with native structured output support and caching option
  • Integration with multiple LLM providers through aisuite
  • Agents with routing based on tools
  • Tools as agent for flexibility and scalability

Quick Start

Basic Prompt Usage

from promptbuilder.llm_client import LLMClient
from promptbuilder.prompt_builder import PromptBuilder

# Build prompt template
prompt_template = PromptBuilder() \
    .text("What is the capital of ").variable("country").text("?") \
    .build()

# Use with LLM
llm_client = LLMClient(model="your-model", api_key="your-api-key")
response = llm_client.from_text(
    prompt_template.render(country="France")
)
print(response)

Using Agents

from typing import List
from pydantic import BaseModel, Field
from promptbuilder.agent.agent import AgentRouter
from promptbuilder.agent.context import Context, InMemoryDialogHistory
from promptbuilder.agent.message import Message
from promptbuilder.llm_client import LLMClient

# Define tool arguments
class AddTodoArgs(BaseModel):
    item: TodoItem = Field(..., description="Todo item to add")

# Create custom context
class TodoItem(BaseModel):
    description: str = Field(..., description="Description of the todo item")

class TodoListContext(Context[InMemoryDialogHistory]):
    todos: List[TodoItem] = []

# Create agent with tools
class TodoListAgent(AgentRouter[InMemoryDialogHistory, TodoListContext]):
    def __init__(self, llm_client: LLMClient, context: TodoListContext):
        super().__init__(llm_client=llm_client, context=context)
    
llm_client = LLMClient(model="your-model", api_key="your-api-key")
agent = TodoListAgent(llm_client=llm_client, context=TodoListContext())

@agent.tool(description="Add a new todo item to the list", args_model=AddTodoArgs)
async def add_todo(message: Message, args: AddTodoArgs, context: TodoListContext) -> str:
    context.todos.append(args.item)
    return f"Added todo item: {args.item.description}"

# Use the agent
async def main():
    response = await agent(Message(role="user", content="Add a todo: Buy groceries"))
    print(response)

See the examples directory for more detailed examples, including a complete todo list manager.

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a pull request.

Metadata

Release files for promptbuilder 0.5.5

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

Source distribution (sdist)

Source distribution for promptbuilder 0.5.5
File Size Uploaded
promptbuilder-0.5.5.tar.gz 54.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for promptbuilder 0.5.5
File Interpreter ABI Platform
promptbuilder-0.5.5-py3-none-any.whl Python 3 none any Details

Total release size: 110.0 kB

Release files / promptbuilder-0.5.5.tar.gz

Download URL promptbuilder-0.5.5.tar.gz
Size 54.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cbb773e181adb43d958034dfea0c9f7786527cd7c6c317b89ae28ba8f2bbb277
BLAKE2b-256 checksum
How to use checksums
20a1d152a2a00097ecb389df0e324ad74bad224f46b9304b686b0edb135971a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / promptbuilder-0.5.5-py3-none-any.whl

Download URL promptbuilder-0.5.5-py3-none-any.whl
Size 55.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
705a88d24428f13cc25c0797ab26a6b16bef1817fbdab10c6f255ba3363efa03
BLAKE2b-256 checksum
How to use checksums
c2860caca929a6f13e829f4f14dd71e044e8390642c50fb0fd510154083a98d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.5.5 This release

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.46

2 release files

0.4.44

2 release files

0.4.42

2 release files

0.4.41

2 release files

0.4.40

2 release files

0.4.39

2 release files

0.4.38

2 release files

0.4.35

2 release files

0.4.34

2 release files

0.4.33

2 release files

0.4.32

2 release files

0.4.31

2 release files

0.4.25

2 release files

0.4.24

2 release files

0.4.23

2 release files

0.4.22

2 release files

0.4.21

2 release files

0.4.17

2 release files

0.4.16

2 release files

0.4.15

2 release files

0.4.14

2 release files

0.4.13

2 release files

0.4.12

2 release files

0.4.11

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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