1"""Convenience function for context compression."""
2
3from __future__ import annotations
4
5from typing import Any
6
7from lexigram.ai.rag.context_compression.strategy_registry import (
8 CompressionStrategyRegistry,
9)
10from lexigram.ai.rag.context_compression.types import (
11 CompressionResult,
12 CompressionStrategy,
13)
14
15
16async def compress_context(
17 context: str | list[str],
18 strategy: CompressionStrategy = CompressionStrategy.EXTRACTIVE,
19 query: str | None = None,
20 **kwargs: Any,
21) -> CompressionResult:
22 """Convenience function for context compression.
23
24 Args:
25 context: Text or list of texts to compress.
26 strategy: Compression strategy to use.
27 query: Optional query for relevance-based compression.
28 **kwargs: Strategy-specific parameters.
29
30 Returns:
31 CompressionResult.
32
33 Example:
34 >>> result = await compress_context(
35 ... context=long_text,
36 ... strategy=CompressionStrategy.EXTRACTIVE,
37 ... query="What is AI?",
38 ... max_sentences=5
39 ... )
40 """
41 registry = CompressionStrategyRegistry.with_defaults()
42 return await registry.compress(strategy, context, query, kwargs)