haive.core.contracts.prompt_library¶

Prompt template library for reusable prompts.

This module provides a library of reusable prompt templates with versioning and composition support, extracted from scattered prompt management.

Classes¶

PromptCategory

Category of prompt templates.

PromptLibrary

Library of reusable prompt templates.

PromptTemplate

Versioned prompt template.

Module Contents¶

class haive.core.contracts.prompt_library.PromptCategory(/, **data)[source]¶

Bases: pydantic.BaseModel

Category of prompt templates.

Parameters:

data (Any)

name¶

Category name.

description¶

Category description.

templates¶

Templates in this category.

subcategories¶

Nested categories.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

class haive.core.contracts.prompt_library.PromptLibrary(/, **data)[source]¶

Bases: pydantic.BaseModel

Library of reusable prompt templates.

Provides: - Template storage with versioning - Category-based organization - Template composition - Usage tracking - Template evolution

Parameters:

data (Any)

templates¶

Templates by name and version.

categories¶

Template categories.

tag_index¶

Templates indexed by tag.

latest_versions¶

Latest version of each template.

composition_rules¶

Rules for template composition.

Examples

Add a template:
>>> library = PromptLibrary()
>>> library.add_template(
...     name="analysis",
...     template=analysis_prompt,
...     contract=analysis_contract
... )
Get latest version:
>>> prompt = library.get_latest("analysis")

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

add_template(name, template, contract, version='1.0.0', tags=None, category=None)[source]¶

Add a template to the library.

Parameters:
  • name (str) – Template name.

  • template (langchain_core.prompts.BasePromptTemplate) – Prompt template.

  • contract (haive.core.contracts.prompt_config.PromptContract) – Template contract.

  • version (str) – Template version.

  • tags (Optional[Set[str]]) – Template tags.

  • category (Optional[str]) – Template category.

Returns:

Self for chaining.

Return type:

PromptLibrary

compose_templates(template_names, composed_name, mode='sequential')[source]¶

Compose multiple templates into one.

Parameters:
  • template_names (List[str]) – Templates to compose.

  • composed_name (str) – Name for composed template.

  • mode (str) – Composition mode.

Returns:

Composed template.

Return type:

langchain_core.prompts.BasePromptTemplate

find_by_category(category)[source]¶

Find templates by category.

Parameters:

category (str) – Category name.

Returns:

List of template keys.

Return type:

List[str]

find_by_tag(tag)[source]¶

Find templates by tag.

Parameters:

tag (str) – Tag to search for.

Returns:

List of template keys.

Return type:

List[str]

fork_template(name, new_name, new_version='1.0.0', modifications=None)[source]¶

Fork a template to create a new version.

Parameters:
  • name (str) – Original template name.

  • new_name (str) – New template name.

  • new_version (str) – New version.

  • modifications (Optional[Dict[str, Any]]) – Modifications to apply.

Returns:

Self for chaining.

Return type:

PromptLibrary

get_evolution_history(name)[source]¶

Get evolution history of a template.

Parameters:

name (str) – Template name.

Returns:

List of versions in order.

Return type:

List[str]

get_latest(name)[source]¶

Get latest version of a template.

Parameters:

name (str) – Template name.

Returns:

Latest template or None.

Return type:

Optional[langchain_core.prompts.BasePromptTemplate]

get_template(name, version=None)[source]¶

Get a template by name and version.

Parameters:
  • name (str) – Template name.

  • version (Optional[str]) – Template version (latest if not specified).

Returns:

Template or None.

Return type:

Optional[langchain_core.prompts.BasePromptTemplate]

get_usage_stats()[source]¶

Get usage statistics.

Returns:

Usage count by template.

Return type:

Dict[str, int]

to_dict()[source]¶

Convert to dictionary for serialization.

Returns:

Library as dictionary.

Return type:

Dict[str, Any]

class haive.core.contracts.prompt_library.PromptTemplate(/, **data)[source]¶

Bases: pydantic.BaseModel

Versioned prompt template.

Parameters:

data (Any)

name¶

Template identifier.

version¶

Template version.

template¶

The actual prompt template.

contract¶

Template contract.

tags¶

Categorization tags.

created_at¶

Creation timestamp.

updated_at¶

Last update timestamp.

usage_count¶

Number of times used.

parent_version¶

Parent version if forked.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

class Config[source]¶

Pydantic configuration.