Core API Reference

promptkit.core.prompt

Prompt

class Prompt(BaseModel):
    name: str
    description: str
    template: str
    input_schema: Dict[str, str]

Methods

render(inputs: Dict[str, Any], validate: bool = True) -> str

Render the template with inputs.

prompt = Prompt(
    name="greet",
    description="Greeting",
    template="Hello {{ name }}!",
    input_schema={"name": "str"}
)
result = prompt.render({"name": "Alice"})
# "Hello Alice!"

validate_inputs(inputs: Dict[str, Any]) -> Dict[str, Any]

Validate inputs against schema.

validated = prompt.validate_inputs({"name": "Alice"})

get_required_inputs() -> list[str]

Get required input field names.

get_optional_inputs() -> list[str]

Get optional input field names.

promptkit.core.loader

load_prompt(file_path: str | Path) -> Prompt

Load a prompt from YAML file.

from promptkit import load_prompt

prompt = load_prompt("greeting.yaml")
prompt = load_prompt("greeting")  # .yaml extension optional

save_prompt(prompt: Prompt, file_path: str | Path) -> None

Save a prompt to YAML file.

from promptkit.core.loader import save_prompt

save_prompt(prompt, "output.yaml")

promptkit.core.runner

run_prompt(prompt, inputs, engine, validate_inputs=True) -> str

Execute a prompt with an engine.

from promptkit import run_prompt

response = run_prompt(prompt, {"name": "Alice"}, engine)

run_prompt_async(prompt, inputs, engine, validate_inputs=True) -> str

Async version of run_prompt.

response = await run_prompt_async(prompt, inputs, engine)

promptkit.core.schema

validate_inputs(inputs, schema_dict) -> Dict[str, Any]

Validate inputs against a schema dictionary.

create_schema_model(schema_dict) -> Type[BaseModel]

Create a Pydantic model from schema.

promptkit.core.compiler

PromptCompiler

Handles Jinja2 template compilation.

from promptkit.core.compiler import PromptCompiler

compiler = PromptCompiler()
template = compiler.compile_template("Hello {{ name }}!")
result = compiler.render_template(template, {"name": "Alice"})