Class SummaryConversationPolicy
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
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
Returns
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
Returns
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
Returns
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
Returns
LoadSummary(string)
Loads a previously saved summary for session restoration.
public void LoadSummary(string summary)
Parameters
summarystring
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
messagesIList<Message>Current conversation messages.
lastKnownInputTokensintActual input token count from the last API response. When positive, used instead of local estimation for accurate trigger decisions.