haive.core.contracts.prompt_config¶
Prompt configuration system with contracts and composition.
This module provides focused prompt management extracted from AugLLMConfig, reducing complexity while adding explicit contracts and composition patterns.
Classes¶
Focused prompt configuration with contracts. |
|
Contract defining prompt's requirements and behavior. |
|
Definition of a prompt variable with validation. |
Module Contents¶
- class haive.core.contracts.prompt_config.PromptConfig(/, **data)[source]¶
Bases:
pydantic.BaseModelFocused prompt configuration with contracts.
This replaces scattered prompt management in AugLLMConfig (~150 lines) with a focused, contract-based approach.
- Parameters:
data (Any)
- prompt_template¶
Main prompt template.
- system_message¶
System message for the prompt.
- contracts¶
Prompt contracts by name.
- partial_variables¶
Partial variables to inject.
- format_instructions¶
Format instructions to include.
- composition_mode¶
How to compose multiple prompts.
- fallback_prompts¶
Fallback prompts if main fails.
- include_examples¶
Whether to include examples.
- max_prompt_length¶
Maximum prompt length in characters.
Examples
- Basic prompt configuration:
>>> config = PromptConfig( ... prompt_template=ChatPromptTemplate.from_template("Hello {name}"), ... system_message="You are a helpful assistant" ... )
- With contracts:
>>> config = PromptConfig( ... prompt_template=analysis_prompt, ... contracts={ ... "analysis": PromptContract( ... name="analysis", ... description="Analyze data", ... variables=[ ... PromptVariable(name="data", type="object") ... ] ... ) ... } ... )
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_example(input_vars, expected_output)[source]¶
Add an example to the configuration.
- Parameters:
- Returns:
Self for chaining.
- Return type:
- apply_partial_variables()[source]¶
Apply partial variables to the prompt template.
- Returns:
Self for chaining.
- Return type:
- compose_with(other, mode=None)[source]¶
Compose with another prompt configuration.
- Parameters:
other (PromptConfig) – Other prompt configuration.
mode (Optional[Literal['before', 'after', 'replace']]) – Composition mode.
- Returns:
New composed configuration.
- Return type:
- get_required_variables()[source]¶
Get all required variables from contracts.
- Returns:
Set of required variable names.
- Return type:
Set[str]
- class haive.core.contracts.prompt_config.PromptContract(/, **data)[source]¶
Bases:
pydantic.BaseModelContract defining prompt’s requirements and behavior.
- Parameters:
data (Any)
- name¶
Prompt identifier.
- description¶
What the prompt does.
- variables¶
Required variables.
- output_format¶
Expected output format.
- max_tokens¶
Maximum expected tokens.
- temperature_range¶
Recommended temperature range.
- examples¶
Example inputs and outputs.
- constraints¶
Behavioral constraints.
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_config.PromptVariable(/, **data)[source]¶
Bases:
pydantic.BaseModelDefinition of a prompt variable with validation.
- Parameters:
data (Any)
- name¶
Variable name.
- type¶
Expected type of the variable.
- required¶
Whether variable is required.
- default¶
Default value if not provided.
- description¶
Human-readable description.
- validation_regex¶
Optional regex for validation.
- allowed_values¶
Optional list of allowed values.
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.