Reference · Snippet · python
Summarize chat history
Last updated
def compress_history(messages: list[dict], keep_last: int = 4) -> list[dict]:
if len(messages) <= keep_last + 1:
return messages
system = messages[0] if messages[0]["role"] == "system" else None
old = messages[1:-keep_last]
recent = messages[-keep_last:]
summary_prompt = {
"role": "user",
"content": "Summarize prior turns in ≤6 bullets. Keep names and decisions.",
}
summary = llm([summary_prompt] + old) # swap for your client
compressed = []
if system:
compressed.append(system)
compressed.append({"role": "assistant", "content": summary})
compressed.extend(recent)
return compressed