Table of Contents

Class SummaryConversationPolicy

Namespace
Mythosia.AI.Models
Assembly
Mythosia.AI.Abstractions.dll

Policy that automatically summarizes old conversation messages when the conversation exceeds a configured threshold (token count, message count, or both). The summary is stored as a string and injected into the system message on each request.

public class SummaryConversationPolicy
Inheritance
SummaryConversationPolicy
Inherited Members

Properties

CurrentSummary

The accumulated summary of previous conversations. Automatically updated after each summarization cycle.

public string? CurrentSummary { get; set; }

Property Value

string

KeepRecentCount

Number of recent messages to keep after summarization. Takes priority over KeepRecentTokens when set.

public uint? KeepRecentCount { get; set; }

Property Value

uint?

KeepRecentTokens

Number of recent tokens to keep after summarization. Used when KeepRecentCount is null.

public uint? KeepRecentTokens { get; set; }

Property Value

uint?

TriggerCount

When the message count exceeds this value, summarization is triggered. Null means count-based trigger is disabled.

public uint? TriggerCount { get; set; }

Property Value

uint?

TriggerTokens

When total estimated tokens exceed this value, summarization is triggered. Null means token-based trigger is disabled.

public uint? TriggerTokens { get; set; }

Property Value

uint?

Methods

ByBoth(uint, uint, uint?, uint?)

Creates a combined policy (OR condition). Triggers when either token limit or message count is exceeded.

public static SummaryConversationPolicy ByBoth(uint triggerTokens, uint triggerCount, uint? keepRecentTokens = null, uint? keepRecentCount = null)

Parameters

triggerTokens uint
triggerCount uint
keepRecentTokens uint?
keepRecentCount uint?

Returns

SummaryConversationPolicy

ByMessage(uint, uint?)

Creates a message-count-based summarization policy. Triggers when message count exceeds triggerCount, keeps the most recent keepRecentCount messages.

public static SummaryConversationPolicy ByMessage(uint triggerCount, uint? keepRecentCount = null)

Parameters

triggerCount uint
keepRecentCount uint?

Returns

SummaryConversationPolicy

ByToken(uint, uint)

Creates a token-based summarization policy. Triggers when total estimated tokens exceed triggerTokens, keeps recent messages fitting within keepRecentTokens.

public static SummaryConversationPolicy ByToken(uint triggerTokens, uint keepRecentTokens = 1000)

Parameters

triggerTokens uint
keepRecentTokens uint

Returns

SummaryConversationPolicy

GetMessagesToSummarize(IList<Message>)

Determines which messages should be summarized and which should be kept. Returns the list of messages to summarize and the index from which to keep.

public (IList<Message> toSummarize, int keepFromIndex) GetMessagesToSummarize(IList<Message> messages)

Parameters

messages IList<Message>

Returns

(IList<Message> toSummarize, int keepFromIndex)

LoadSummary(string)

Loads a previously saved summary for session restoration.

public void LoadSummary(string summary)

Parameters

summary string

ShouldSummarize(IList<Message>, int)

Determines whether the current conversation should be summarized. Returns true if any configured trigger threshold is exceeded (OR condition).

public bool ShouldSummarize(IList<Message> messages, int lastKnownInputTokens = 0)

Parameters

messages IList<Message>

Current conversation messages.

lastKnownInputTokens int

Actual input token count from the last API response. When positive, used instead of local estimation for accurate trigger decisions.

Returns

bool