Skip to content

tenets.core.summarizer Package

Content summarization system for Tenets.

This package provides intelligent text and code summarization capabilities using multiple strategies from simple extraction to advanced ML approaches. The summarization system helps compress large codebases to fit within token limits while preserving the most important information.

Main components: - Summarizer: Main orchestrator for summarization operations - Strategies: Different summarization approaches (extractive, compressive, etc.) - LLMSummarizer: Integration with Large Language Models (costs $)

Example usage

from tenets.core.summarizer import Summarizer, create_summarizer

Create summarizer

summarizer = create_summarizer(mode="extractive")

Summarize text

result = summarizer.summarize( ... long_text, ... target_ratio=0.3 # Compress to 30% of original ... )

print(f"Reduced by {result.reduction_percent:.1f}%")

Attributes

ML_AVAILABLEmodule-attribute

Python
ML_AVAILABLE = True

Classes

LLMConfigdataclass

Python
LLMConfig(provider: LLMProvider = LLMProvider.OPENAI, model: str = 'gpt-4o-mini', api_key: Optional[str] = None, base_url: Optional[str] = None, temperature: float = 0.3, max_tokens: int = 500, system_prompt: str = 'You are an expert at summarizing code and technical documentation. \nYour summaries are concise, accurate, and preserve critical technical details.', user_prompt: str = 'Summarize the following text to approximately {target_percent}% of its original length. \nFocus on the most important information and maintain technical accuracy.\n\nText to summarize:\n{text}\n\nSummary:', retry_attempts: int = 3, retry_delay: float = 1.0, timeout: float = 30.0)

Configuration for LLM summarization.

ATTRIBUTEDESCRIPTION
provider

LLM provider to use

TYPE:LLMProvider

model

Model name/ID

TYPE:str

api_key

API key (if not in environment)

TYPE:Optional[str]

base_url

Base URL for API (for custom endpoints)

TYPE:Optional[str]

temperature

Sampling temperature (0-1)

TYPE:float

max_tokens

Maximum tokens in response

TYPE:int

system_prompt

System prompt template

TYPE:str

user_prompt

User prompt template

TYPE:str

retry_attempts

Number of retry attempts

TYPE:int

retry_delay

Delay between retries in seconds

TYPE:float

timeout

Request timeout in seconds

TYPE:float

Attributes

providerclass-attributeinstance-attribute
Python
provider: LLMProvider = OPENAI
modelclass-attributeinstance-attribute
Python
model: str = 'gpt-4o-mini'
api_keyclass-attributeinstance-attribute
Python
api_key: Optional[str] = None
base_urlclass-attributeinstance-attribute
Python
base_url: Optional[str] = None
temperatureclass-attributeinstance-attribute
Python
temperature: float = 0.3
max_tokensclass-attributeinstance-attribute
Python
max_tokens: int = 500
system_promptclass-attributeinstance-attribute
Python
system_prompt: str = 'You are an expert at summarizing code and technical documentation. \nYour summaries are concise, accurate, and preserve critical technical details.'
user_promptclass-attributeinstance-attribute
Python
user_prompt: str = 'Summarize the following text to approximately {target_percent}% of its original length. \nFocus on the most important information and maintain technical accuracy.\n\nText to summarize:\n{text}\n\nSummary:'
retry_attemptsclass-attributeinstance-attribute
Python
retry_attempts: int = 3
retry_delayclass-attributeinstance-attribute
Python
retry_delay: float = 1.0
timeoutclass-attributeinstance-attribute
Python
timeout: float = 30.0

Functions

get_api_key
Python
get_api_key() -> Optional[str]

Get API key from config or environment.

RETURNSDESCRIPTION
Optional[str]

API key or None

LLMProvider

Bases: Enum

Supported LLM providers.

Attributes

OPENAIclass-attributeinstance-attribute
Python
OPENAI = 'openai'
ANTHROPICclass-attributeinstance-attribute
Python
ANTHROPIC = 'anthropic'
OPENROUTERclass-attributeinstance-attribute
Python
OPENROUTER = 'openrouter'
LOCALclass-attributeinstance-attribute
Python
LOCAL = 'local'

LLMSummarizer

Python
LLMSummarizer(config: Optional[LLMConfig] = None)

Base class for LLM-based summarization.

Provides common functionality for different LLM providers. Handles API calls, retries, and error handling.

Initialize LLM summarizer.

PARAMETERDESCRIPTION
config

LLM configuration

TYPE:Optional[LLMConfig]DEFAULT:None

Attributes

configinstance-attribute
Python
config = config or LLMConfig()
loggerinstance-attribute
Python
logger = get_logger(__name__)
clientinstance-attribute
Python
client = None

Functions

summarize
Python
summarize(text: str, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None, custom_prompt: Optional[str] = None) -> str

Summarize text using LLM.

PARAMETERDESCRIPTION
text

Text to summarize

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length

TYPE:Optional[int]DEFAULT:None

custom_prompt

Custom prompt override

TYPE:Optional[str]DEFAULT:None

RETURNSDESCRIPTION
str

Summarized text

RAISESDESCRIPTION
RuntimeError

If API call fails after retries

estimate_cost
Python
estimate_cost(text: str) -> Dict[str, float]

Estimate cost of summarization.

PARAMETERDESCRIPTION
text

Text to summarize

TYPE:str

RETURNSDESCRIPTION
Dict[str, float]

Dictionary with cost estimates

LLMSummaryStrategy

Python
LLMSummaryStrategy(provider: Union[str, LLMProvider] = LLMProvider.OPENAI, model: str = 'gpt-4o-mini', api_key: Optional[str] = None)

LLM-based summarization strategy for use with Summarizer.

Wraps LLMSummarizer to match the SummarizationStrategy interface.

WARNING: This strategy incurs API costs. Always estimate costs before use.

Initialize LLM strategy.

PARAMETERDESCRIPTION
provider

LLM provider name or enum

TYPE:Union[str, LLMProvider]DEFAULT:OPENAI

model

Model to use

TYPE:strDEFAULT:'gpt-4o-mini'

api_key

API key (if not in environment)

TYPE:Optional[str]DEFAULT:None

Attributes

nameclass-attributeinstance-attribute
Python
name = 'llm'
descriptionclass-attributeinstance-attribute
Python
description = 'High-quality summarization using Large Language Models (costs $)'
requires_mlclass-attributeinstance-attribute
Python
requires_ml = False
loggerinstance-attribute
Python
logger = get_logger(__name__)
summarizerinstance-attribute
Python
summarizer = LLMSummarizer(config)

Functions

summarize
Python
summarize(text: str, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None) -> str

Summarize text using LLM.

PARAMETERDESCRIPTION
text

Input text

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length

TYPE:Optional[int]DEFAULT:None

RETURNSDESCRIPTION
str

LLM-generated summary

estimate_cost
Python
estimate_cost(text: str) -> Dict[str, float]

Estimate cost for summarizing text.

PARAMETERDESCRIPTION
text

Text to summarize

TYPE:str

RETURNSDESCRIPTION
Dict[str, float]

Cost estimate dictionary

CompressiveStrategy

Python
CompressiveStrategy(use_nlp: bool = True)

Bases: SummarizationStrategy

Compressive summarization using NLP tokenization.

Removes redundant words and phrases while maintaining meaning. Uses NLP tokenizer for better word processing.

Initialize compressive strategy.

PARAMETERDESCRIPTION
use_nlp

Whether to use NLP components

TYPE:boolDEFAULT:True

Attributes

nameclass-attributeinstance-attribute
Python
name = 'compressive'
descriptionclass-attributeinstance-attribute
Python
description = 'Remove redundancy using NLP tokenization'
requires_mlclass-attributeinstance-attribute
Python
requires_ml = False
loggerinstance-attribute
Python
logger = get_logger(__name__)
use_nlpinstance-attribute
Python
use_nlp = use_nlp and NLP_AVAILABLE
tokenizerinstance-attribute
Python
tokenizer = TextTokenizer(use_stopwords=True)
stopword_managerinstance-attribute
Python
stopword_manager = StopwordManager()
stopwordsinstance-attribute
Python
stopwords = get_set('prompt')

Functions

summarize
Python
summarize(text: str, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None) -> str

Compress text by removing redundancy.

PARAMETERDESCRIPTION
text

Input text

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length

TYPE:Optional[int]DEFAULT:None

RETURNSDESCRIPTION
str

Compressed text

ExtractiveStrategy

Python
ExtractiveStrategy(use_nlp: bool = True)

Bases: SummarizationStrategy

Extractive summarization using NLP components.

Selects the most important sentences based on keyword density, position, and optionally semantic similarity. Uses centralized NLP components for improved sentence scoring.

Initialize extractive strategy.

PARAMETERDESCRIPTION
use_nlp

Whether to use NLP components for enhanced extraction

TYPE:boolDEFAULT:True

Attributes

nameclass-attributeinstance-attribute
Python
name = 'extractive'
descriptionclass-attributeinstance-attribute
Python
description = 'Extract important sentences using NLP analysis'
requires_mlclass-attributeinstance-attribute
Python
requires_ml = False
loggerinstance-attribute
Python
logger = get_logger(__name__)
use_nlpinstance-attribute
Python
use_nlp = use_nlp and NLP_AVAILABLE
keyword_extractorinstance-attribute
Python
keyword_extractor = KeywordExtractor(use_stopwords=True, stopword_set='prompt')
tokenizerinstance-attribute
Python
tokenizer = TextTokenizer(use_stopwords=True)

Functions

summarize
Python
summarize(text: str, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None) -> str

Extract important sentences to create summary.

PARAMETERDESCRIPTION
text

Input text

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length

TYPE:Optional[int]DEFAULT:None

RETURNSDESCRIPTION
str

Extractive summary

SummarizationStrategy

Bases: ABC

Abstract base class for summarization strategies.

Attributes

nameclass-attributeinstance-attribute
Python
name: str = 'base'
descriptionclass-attributeinstance-attribute
Python
description: str = 'Base summarization strategy'
requires_mlclass-attributeinstance-attribute
Python
requires_ml: bool = False

Functions

summarizeabstractmethod
Python
summarize(text: str, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None) -> str

Summarize text.

PARAMETERDESCRIPTION
text

Input text

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length

TYPE:Optional[int]DEFAULT:None

RETURNSDESCRIPTION
str

Summarized text

TextRankStrategy

Python
TextRankStrategy(use_nlp: bool = True)

Bases: SummarizationStrategy

TextRank summarization with NLP preprocessing.

Graph-based ranking algorithm that uses NLP components for better text preprocessing and similarity computation.

Initialize TextRank strategy.

PARAMETERDESCRIPTION
use_nlp

Whether to use NLP components

TYPE:boolDEFAULT:True

Attributes

nameclass-attributeinstance-attribute
Python
name = 'textrank'
descriptionclass-attributeinstance-attribute
Python
description = 'Graph-based summarization with NLP preprocessing'
requires_mlclass-attributeinstance-attribute
Python
requires_ml = True
loggerinstance-attribute
Python
logger = get_logger(__name__)
use_nlpinstance-attribute
Python
use_nlp = use_nlp and NLP_AVAILABLE and SKLEARN_AVAILABLE
tfidf_calcinstance-attribute
Python
tfidf_calc = TFIDFCalculator(use_stopwords=True)

Functions

summarize
Python
summarize(text: str, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None) -> str

Summarize using TextRank algorithm.

PARAMETERDESCRIPTION
text

Input text

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length

TYPE:Optional[int]DEFAULT:None

RETURNSDESCRIPTION
str

TextRank summary

TransformerStrategy

Python
TransformerStrategy(model_name: str = 'facebook/bart-large-cnn')

Bases: SummarizationStrategy

Transformer-based neural summarization.

Uses pre-trained transformer models for high-quality abstractive summarization.

Initialize transformer strategy.

PARAMETERDESCRIPTION
model_name

HuggingFace model name

TYPE:strDEFAULT:'facebook/bart-large-cnn'

Attributes

nameclass-attributeinstance-attribute
Python
name = 'transformer'
descriptionclass-attributeinstance-attribute
Python
description = 'Neural summarization using transformers'
requires_mlclass-attributeinstance-attribute
Python
requires_ml = True
loggerinstance-attribute
Python
logger = get_logger(__name__)
model_nameinstance-attribute
Python
model_name = model_name
summarizerinstance-attribute
Python
summarizer = None

Functions

summarize
Python
summarize(text: str, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None) -> str

Summarize using transformer model.

PARAMETERDESCRIPTION
text

Input text

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length

TYPE:Optional[int]DEFAULT:None

RETURNSDESCRIPTION
str

Neural summary

BatchSummarizationResultdataclass

Python
BatchSummarizationResult(results: List[SummarizationResult], total_original_length: int, total_summary_length: int, overall_compression_ratio: float, total_time_elapsed: float, files_processed: int, files_failed: int)

Result from batch summarization.

Attributes

resultsinstance-attribute
Python
results: List[SummarizationResult]
total_original_lengthinstance-attribute
Python
total_original_length: int
total_summary_lengthinstance-attribute
Python
total_summary_length: int
overall_compression_ratioinstance-attribute
Python
overall_compression_ratio: float
total_time_elapsedinstance-attribute
Python
total_time_elapsed: float
files_processedinstance-attribute
Python
files_processed: int
files_failedinstance-attribute
Python
files_failed: int

Functions

to_dict
Python
to_dict() -> Dict[str, Any]

Convert to dictionary.

SummarizationMode

Bases: Enum

Available summarization modes.

Attributes

EXTRACTIVEclass-attributeinstance-attribute
Python
EXTRACTIVE = 'extractive'
COMPRESSIVEclass-attributeinstance-attribute
Python
COMPRESSIVE = 'compressive'
TEXTRANKclass-attributeinstance-attribute
Python
TEXTRANK = 'textrank'
TRANSFORMERclass-attributeinstance-attribute
Python
TRANSFORMER = 'transformer'
LLMclass-attributeinstance-attribute
Python
LLM = 'llm'
AUTOclass-attributeinstance-attribute
Python
AUTO = 'auto'

SummarizationResultdataclass

Python
SummarizationResult(original_text: str, summary: str, original_length: int, summary_length: int, compression_ratio: float, strategy_used: str, time_elapsed: float, metadata: Dict[str, Any] = None)

Result from summarization operation.

ATTRIBUTEDESCRIPTION
original_text

Original text

TYPE:str

summary

Summarized text

TYPE:str

original_length

Original text length

TYPE:int

summary_length

Summary length

TYPE:int

compression_ratio

Actual compression ratio achieved

TYPE:float

strategy_used

Which strategy was used

TYPE:str

time_elapsed

Time taken to summarize

TYPE:float

metadata

Additional metadata

TYPE:Dict[str, Any]

Attributes

original_textinstance-attribute
Python
original_text: str
summaryinstance-attribute
Python
summary: str
original_lengthinstance-attribute
Python
original_length: int
summary_lengthinstance-attribute
Python
summary_length: int
compression_ratioinstance-attribute
Python
compression_ratio: float
strategy_usedinstance-attribute
Python
strategy_used: str
time_elapsedinstance-attribute
Python
time_elapsed: float
metadataclass-attributeinstance-attribute
Python
metadata: Dict[str, Any] = None
reduction_percentproperty
Python
reduction_percent: float

Get reduction percentage.

Functions

to_dict
Python
to_dict() -> Dict[str, Any]

Convert to dictionary.

Summarizer

Python
Summarizer(config: Optional[TenetsConfig] = None, default_mode: Optional[str] = None, enable_cache: bool = True)

Main summarization orchestrator.

Coordinates different summarization strategies and provides a unified interface for content compression. Supports single and batch processing, strategy selection, and caching.

ATTRIBUTEDESCRIPTION
config

TenetsConfig instance

logger

Logger instance

strategies

Available summarization strategies

TYPE:Dict[SummarizationMode, SummarizationStrategy]

cache

Summary cache for repeated content

TYPE:Dict[str, SummarizationResult]

stats

Summarization statistics

Initialize summarizer.

PARAMETERDESCRIPTION
config

Tenets configuration

TYPE:Optional[TenetsConfig]DEFAULT:None

default_mode

Default summarization mode

TYPE:Optional[str]DEFAULT:None

enable_cache

Whether to enable caching

TYPE:boolDEFAULT:True

Attributes

configinstance-attribute
Python
config = config or TenetsConfig()
loggerinstance-attribute
Python
logger = get_logger(__name__)
default_modeinstance-attribute
Python
default_mode = SummarizationMode(default_mode)
strategiesinstance-attribute
Python
strategies: Dict[SummarizationMode, SummarizationStrategy] = {EXTRACTIVE: ExtractiveStrategy(), COMPRESSIVE: CompressiveStrategy(), TEXTRANK: TextRankStrategy()}
enable_cacheinstance-attribute
Python
enable_cache = enable_cache
cacheinstance-attribute
Python
cache: Dict[str, SummarizationResult] = {}
statsinstance-attribute
Python
stats = {'total_summarized': 0, 'total_time': 0.0, 'cache_hits': 0, 'cache_misses': 0, 'strategies_used': {}}

Functions

summarize
Python
summarize(text: str, mode: Optional[Union[str, SummarizationMode]] = None, target_ratio: float = 0.3, max_length: Optional[int] = None, min_length: Optional[int] = None, force_strategy: Optional[SummarizationStrategy] = None) -> SummarizationResult

Summarize text content.

PARAMETERDESCRIPTION
text

Text to summarize

TYPE:str

mode

Summarization mode (uses default if None)

TYPE:Optional[Union[str, SummarizationMode]]DEFAULT:None

target_ratio

Target compression ratio (0.3 = 30% of original)

TYPE:floatDEFAULT:0.3

max_length

Maximum summary length in characters

TYPE:Optional[int]DEFAULT:None

min_length

Minimum summary length in characters

TYPE:Optional[int]DEFAULT:None

force_strategy

Force specific strategy instance

TYPE:Optional[SummarizationStrategy]DEFAULT:None

RETURNSDESCRIPTION
SummarizationResult

SummarizationResult with summary and metadata

Example

summarizer = Summarizer() result = summarizer.summarize( ... long_text, ... mode="extractive", ... target_ratio=0.25 ... ) print(f"Reduced by {result.reduction_percent:.1f}%")

summarize_file
Python
summarize_file(file: FileAnalysis, mode: Optional[Union[str, SummarizationMode]] = None, target_ratio: float = 0.3, preserve_structure: bool = True, prompt_keywords: Optional[List[str]] = None) -> SummarizationResult

Summarize a code file intelligently.

Handles code files specially by preserving important elements like class/function signatures while summarizing implementations. Enhanced with context-aware documentation summarization that preserves relevant sections based on prompt keywords.

PARAMETERDESCRIPTION
file

FileAnalysis object

TYPE:FileAnalysis

mode

Summarization mode

TYPE:Optional[Union[str, SummarizationMode]]DEFAULT:None

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

preserve_structure

Whether to preserve code structure

TYPE:boolDEFAULT:True

prompt_keywords

Keywords from user prompt for context-aware summarization

TYPE:Optional[List[str]]DEFAULT:None

RETURNSDESCRIPTION
SummarizationResult

SummarizationResult

batch_summarize
Python
batch_summarize(texts: List[Union[str, FileAnalysis]], mode: Optional[Union[str, SummarizationMode]] = None, target_ratio: float = 0.3, parallel: bool = True, prompt_keywords: Optional[List[str]] = None) -> BatchSummarizationResult

Summarize multiple texts in batch.

PARAMETERDESCRIPTION
texts

List of texts or FileAnalysis objects

TYPE:List[Union[str, FileAnalysis]]

mode

Summarization mode

TYPE:Optional[Union[str, SummarizationMode]]DEFAULT:None

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

parallel

Whether to process in parallel

TYPE:boolDEFAULT:True

prompt_keywords

Keywords from user prompt for context-aware documentation summarization

TYPE:Optional[List[str]]DEFAULT:None

RETURNSDESCRIPTION
BatchSummarizationResult

BatchSummarizationResult

clear_cache
Python
clear_cache()

Clear the summary cache.

get_stats
Python
get_stats() -> Dict[str, Any]

Get summarization statistics.

RETURNSDESCRIPTION
Dict[str, Any]

Dictionary of statistics

Functions

create_llm_summarizer

Python
create_llm_summarizer(provider: str = 'openai', model: Optional[str] = None, api_key: Optional[str] = None) -> LLMSummaryStrategy

Create an LLM summarizer with defaults.

PARAMETERDESCRIPTION
provider

Provider name (openai, anthropic, openrouter)

TYPE:strDEFAULT:'openai'

model

Model name (uses provider default if None)

TYPE:Optional[str]DEFAULT:None

api_key

API key (uses environment if None)

TYPE:Optional[str]DEFAULT:None

RETURNSDESCRIPTION
LLMSummaryStrategy

Configured LLMSummaryStrategy

summarizer = create_llm_summarizer("openai", "gpt-4o-mini") >>> summary = summarizer.summarize(long_text, target_ratio=0.2)

create_summarizer

Python
create_summarizer(config: Optional[TenetsConfig] = None, mode: str = 'auto', enable_cache: bool = True) -> Summarizer

Create a configured summarizer.

Convenience function to quickly create a summarizer with sensible defaults.

PARAMETERDESCRIPTION
config

Optional configuration

TYPE:Optional[TenetsConfig]DEFAULT:None

mode

Default summarization mode

TYPE:strDEFAULT:'auto'

enable_cache

Whether to enable caching

TYPE:boolDEFAULT:True

RETURNSDESCRIPTION
Summarizer

Configured Summarizer instance

Example

summarizer = create_summarizer(mode="extractive") result = summarizer.summarize(text, target_ratio=0.25)

estimate_compression

Python
estimate_compression(text: str, target_ratio: float = 0.3, mode: str = 'extractive') -> dict

Estimate compression results without actually summarizing.

Useful for planning and understanding how much compression is possible for given text.

PARAMETERDESCRIPTION
text

Text to analyze

TYPE:str

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

mode

Summarization mode

TYPE:strDEFAULT:'extractive'

RETURNSDESCRIPTION
dict

Dictionary with estimates

Example

estimate = estimate_compression(long_text, 0.25) print(f"Expected output: ~{estimate['expected_length']} chars")

summarize_files

Python
summarize_files(files: list, target_ratio: float = 0.3, mode: str = 'auto', config: Optional[TenetsConfig] = None) -> BatchSummarizationResult

Summarize multiple files in batch.

Convenience function for batch processing.

PARAMETERDESCRIPTION
files

List of FileAnalysis objects or text strings

TYPE:list

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

mode

Summarization mode

TYPE:strDEFAULT:'auto'

config

Optional configuration

TYPE:Optional[TenetsConfig]DEFAULT:None

RETURNSDESCRIPTION
BatchSummarizationResult

BatchSummarizationResult

Example

from tenets.core.summarizer import summarize_files results = summarize_files(file_list, target_ratio=0.25) print(f"Compressed {results.files_processed} files")

quick_summary

Python
quick_summary(text: str, max_length: int = 500) -> str

Quick summary with simple length constraint.

Convenience function for quick summarization without needing to manage summarizer instances.

PARAMETERDESCRIPTION
text

Text to summarize

TYPE:str

max_length

Maximum length in characters

TYPE:intDEFAULT:500

RETURNSDESCRIPTION
str

Summarized text

Example

from tenets.core.summarizer import quick_summary summary = quick_summary(long_text, max_length=200)

summarize_code

Python
summarize_code(code: str, language: str = 'python', preserve_structure: bool = True, target_ratio: float = 0.3) -> str

Summarize code while preserving structure.

Specialized function for code summarization that maintains imports, signatures, and key structural elements.

PARAMETERDESCRIPTION
code

Source code

TYPE:str

language

Programming language

TYPE:strDEFAULT:'python'

preserve_structure

Keep imports and signatures

TYPE:boolDEFAULT:True

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

RETURNSDESCRIPTION
str

Summarized code

Example

from tenets.core.summarizer import summarize_code summary = summarize_code( ... long_module, ... language="python", ... target_ratio=0.25 ... )

estimate_llm_cost

Python
estimate_llm_cost(text: str, provider: str = 'openai', model: str = 'gpt-3.5-turbo', target_ratio: float = 0.3) -> dict

Estimate cost of LLM summarization.

Calculate expected API costs before summarizing.

PARAMETERDESCRIPTION
text

Text to summarize

TYPE:str

provider

LLM provider

TYPE:strDEFAULT:'openai'

model

Model name

TYPE:strDEFAULT:'gpt-3.5-turbo'

target_ratio

Target compression ratio

TYPE:floatDEFAULT:0.3

RETURNSDESCRIPTION
dict

Cost estimate dictionary

Example

from tenets.core.summarizer import estimate_llm_cost cost = estimate_llm_cost(text, "openai", "gpt-4") print(f"Estimated cost: ${cost['total_cost']:.4f}")

select_best_strategy

Python
select_best_strategy(text: str, target_ratio: float, constraints: Optional[dict] = None) -> str

Select best summarization strategy for given text.

Analyzes text characteristics and constraints to recommend the optimal summarization approach.

PARAMETERDESCRIPTION
text

Text to analyze

TYPE:str

target_ratio

Target compression ratio

TYPE:float

constraints

Optional constraints (time, quality, cost)

TYPE:Optional[dict]DEFAULT:None

RETURNSDESCRIPTION
str

Recommended strategy name

Example

from tenets.core.summarizer import select_best_strategy strategy = select_best_strategy( ... text, ... 0.25, ... {'max_time': 1.0, 'quality': 'high'} ... ) print(f"Recommended: {strategy}")

Modules