Documentation Index
Fetch the complete documentation index at: https://mintlify.com/jxnl/kura/llms.txt
Use this file to discover all available pages before exploring further.
SummaryModel
Instructor-based summary model for conversation analysis using the CLIO framework.
Constructor
SummaryModel(
model: Union[str, "KnownModelName"] = "openai/gpt-4o-mini",
max_concurrent_requests: int = 50,
checkpoint_filename: str = "summaries",
console: Optional[Console] = None,
cache: Optional[CacheStrategy] = None,
)
model
Union[str, KnownModelName]
default:"openai/gpt-4o-mini"
Model identifier (e.g., “openai/gpt-4o-mini”, “anthropic/claude-3-5-sonnet”)
Maximum concurrent API requests
Filename for checkpointing this model’s output
console
Optional[Console]
default:"None"
Rich console for progress tracking
cache
Optional[CacheStrategy]
default:"None"
Caching strategy to use (optional)
Methods
summarise()
Summarise conversations with configurable parameters using the CLIO framework.
async def summarise(
conversations: list[Conversation],
prompt: str = DEFAULT_SUMMARY_PROMPT,
*,
response_schema: Type[T] = GeneratedSummary,
temperature: float = 0.2,
**kwargs,
) -> list[ConversationSummary]
conversations
list[Conversation]
required
List of conversations to summarize
prompt
str
default:"DEFAULT_SUMMARY_PROMPT"
Custom prompt for CLIO analysis
response_schema
Type[T]
default:"GeneratedSummary"
Pydantic model class for structured LLM output. Extend GeneratedSummary to add custom fields that will automatically be included in ConversationSummary.metadata
LLM temperature for generation
return
list[ConversationSummary]
List of ConversationSummary objects with core fields populated and any additional fields from extended schemas in metadata
Example:
from kura.summarisation import SummaryModel
from kura.types import Conversation
from kura.types.summarisation import GeneratedSummary
class CustomSummary(GeneratedSummary):
sentiment: str
technical_complexity: int
model = SummaryModel()
summaries = await model.summarise(
conversations,
response_schema=CustomSummary,
prompt="Rate sentiment and technical complexity 1-10"
)
# Access core fields
print(summaries[0].summary)
# Access custom fields in metadata
print(summaries[0].metadata["sentiment"])
summarise_conversations()
Generate summaries for a list of conversations using the CLIO framework. This is a pure function that takes conversations and a summary model, and returns conversation summaries with automatic extensibility.
async def summarise_conversations(
conversations: list[Conversation],
*,
model: BaseSummaryModel,
response_schema: Type[T] = GeneratedSummary,
prompt: str = DEFAULT_SUMMARY_PROMPT,
temperature: float = 0.2,
checkpoint_manager: Optional[BaseCheckpointManager] = None,
**kwargs,
) -> list[ConversationSummary]
conversations
list[Conversation]
required
List of conversations to summarize
Model to use for summarization (OpenAI, vLLM, local, etc.)
response_schema
Type[T]
default:"GeneratedSummary"
Pydantic model class for LLM output. Extend GeneratedSummary to add custom fields that will appear in metadata
prompt
str
default:"DEFAULT_SUMMARY_PROMPT"
Custom prompt to modify the CLIO analysis
LLM temperature for generation
checkpoint_manager
Optional[BaseCheckpointManager]
default:"None"
Optional checkpoint manager for caching
return
list[ConversationSummary]
List of ConversationSummary objects with core CLIO fields and any additional fields from extended schemas in metadata
Example - Basic Usage:
from kura.summarisation import SummaryModel, summarise_conversations
model = SummaryModel()
summaries = await summarise_conversations(
conversations=my_conversations,
model=model
)
Example - Custom Analysis:
from kura.summarisation import summarise_conversations
from kura.types.summarisation import GeneratedSummary
class DetailedSummary(GeneratedSummary):
sentiment: str
technical_depth: int
summaries = await summarise_conversations(
conversations=my_conversations,
model=model,
response_schema=DetailedSummary,
prompt="Analyze sentiment and rate technical depth 1-10"
)
# Custom fields available in metadata
print(summaries[0].metadata["sentiment"])