PruningStrategy

org.llm4s.agent.PruningStrategy
See thePruningStrategy companion trait

Attributes

Companion
trait
Graph
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type

Members list

Type members

Classlikes

case class AdaptiveWindowing(contextWindowSize: Int, inputCostPerToken: Option[Double], outputCostPerToken: Option[Double], preserveMinTurns: Int, costSensitivity: Double) extends PruningStrategy

Adaptive windowing strategy that automatically determines the best context window size based on the model's context size and pricing information.

Adaptive windowing strategy that automatically determines the best context window size based on the model's context size and pricing information.

This strategy optimizes for cost-quality balance:

  • Uses tier-appropriate percentage of model's context window (reserves space for outputs)
  • Adjusts ratio based on model size (larger models use larger windows)
  • Preserves minimum recent turns for conversation coherence
  • Can optionally use cost-sensitive tuning

Model tiers and window ratios:

  • Small (≤32K): 60% window to reduce costs
  • Medium (32K-100K): 70% balanced cost/quality
  • Large (100K-200K): 75% for more complex context
  • Extra large (>200K): 80% very generous window

Value parameters

contextWindowSize

The model's actual context window in tokens

costSensitivity

How aggressively to optimize for cost (0.0-1.0, default: 0.5) 0.0 = maximize quality, 1.0 = minimize cost

inputCostPerToken

Optional cost per input token (enables cost optimization)

outputCostPerToken

Optional cost per output token

preserveMinTurns

Minimum number of recent turns to always preserve (default: 3)

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case class Custom(fn: Seq[Message] => Seq[Message]) extends PruningStrategy

Custom pruning function. Receives all messages and returns the subset to keep. The function should be pure (no side effects) and deterministic.

Custom pruning function. Receives all messages and returns the subset to keep. The function should be pure (no side effects) and deterministic.

Value parameters

fn

Function that takes messages and returns pruned messages

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
case object MiddleOut extends PruningStrategy

Remove messages from the middle, keeping start and end. Useful for preserving both initial context and recent exchanges.

Remove messages from the middle, keeping start and end. Useful for preserving both initial context and recent exchanges.

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
MiddleOut.type
case object OldestFirst extends PruningStrategy

Remove oldest messages first (FIFO). Preserves system message (if configured) and most recent messages.

Remove oldest messages first (FIFO). Preserves system message (if configured) and most recent messages.

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case class RecentTurnsOnly(turns: Int) extends PruningStrategy

Keep only the most recent N complete turns (user+assistant pairs). Drops everything older than the specified number of turns.

Keep only the most recent N complete turns (user+assistant pairs). Drops everything older than the specified number of turns.

Value parameters

turns

Number of recent turns to keep

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Inherited and Abstract types

type MirroredElemLabels <: Tuple

The names of the product elements

The names of the product elements

Attributes

Inherited from:
Mirror
type MirroredLabel <: String

The name of the type

The name of the type

Attributes

Inherited from:
Mirror