Sumarização como compressão
Substitua periodicamente as interações antigas por um resumo contínuo, trocando a recuperação exata por espaço na janela de contexto.
Sumarização como compressão é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
A compressão como memória
Quando uma conversa fica longa, substitua as interações antigas por um resumo curto. Você troca recall exato por espaço de contexto.
O resumo captura a essência (fatos, decisões e itens pendentes) — o texto literal desaparece.
Quando fazer a sumarização
Acione a sumarização quando:
- O total de tokens ultrapassar um limite (por exemplo, 8 mil)
- A contagem de interações ultrapassar N (por exemplo, 20)
- O usuário iniciar um novo tópico
Sumarize as interações mais antigas
Mantenha as interações recentes literalmente; faça summarise apenas do que ficou para trás:
def compact(messages, keep_recent=10):
system = messages[0]
old = messages[1:-keep_recent]
recent = messages[-keep_recent:]
if not old:
return messages
summary = summarise(old)
return [
system,
{'role': 'system', 'content': f'Earlier conversation summary:\n{summary}'},
*recent
]Instrução do resumo
Use uma chamada separada de modelo, de baixo custo, para criar o resumo:
def summarise(messages):
text = '\n'.join(f'{m["role"]}: {m["content"]}' for m in messages)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Summarise this conversation in 5 bullet points. Preserve facts, decisions, and pending TODOs.'},
{'role': 'user', 'content': text}
],
max_tokens=300,
)
return response.choices[0].message.contentResumos contínuos
Mantenha um único resumo crescente em vez de refazer a sumarização do zero a cada vez:
running_summary = ''
def extend_summary(new_messages):
global running_summary
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Extend the existing summary with the new turns. Keep it under 200 words.'},
{'role': 'user', 'content': f'Existing summary:\n{running_summary}\n\nNew turns:\n{format(new_messages)}'}
],
max_tokens=500,
)
running_summary = response.choices[0].message.contentResumos estruturados
Faça o resumo extrair campos específicos:
summary_schema = {
'topics_discussed': '...',
'user_facts': {'name': '...', 'preferences': '...'},
'open_questions': ['...'],
'decisions_made': ['...']
}
# Use json_object response_format to enforce.
import json
print(json.dumps(summary_schema, indent=2))
Resumos hierárquicos
Para históricos muito longos:
- Resumos a cada 100 interações (nível intermediário)
- Resumos a cada 1000 interações (nível alto)
- Resumo de todo o histórico (nível extremo)
Insira no contexto apenas o nível apropriado.
Perda de detalhes
Os resumos perdem citações específicas e a formulação exata. Se o usuário perguntar "o que exatamente eu disse antes sobre preços?", o modelo não poderá responder.
Para obter recall literal, você precisa de um contexto maior ou de um arquivo de busca vetorial.
Use também um arquivo vetorial
O melhor dos dois mundos:
- Sumarize as interações antigas na mensagem do sistema
- ALSO vetorize cada interação em um armazenamento vetorial
- Se o usuário pedir detalhes, recupere o texto literal do armazenamento vetorial
A qualidade do resumo é importante
Um resumo ruim é pior do que nenhum resumo. Use um modelo barato, mas capaz (gpt-4o-mini, haiku) — não o nível mais barato — nas chamadas de sumarização.
Atualizar o resumo é caro
Sumarizar 8000 tokens de conversa é uma chamada real de LLM — leva de 1 a 2 segundos e custa 0,5 centavo. Faça isso de forma assíncrona entre as interações, e não no caminho crítico.
Compromisso da sumarização
Qual é o principal compromisso ao usar a sumarização como memória?
Recapitulação
A sumarização é a maneira barata de ampliar a memória. Combine-a com recuperação vetorial para obter recall de citações exatas.
Perguntas Frequentes
A aula “Sumarização como compressão” é grátis?
Sim — o texto completo de “Sumarização como compressão” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Sumarização como compressão”?
Substitua periodicamente as interações antigas por um resumo contínuo, trocando a recuperação exata por espaço na janela de contexto. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Sumarização como compressão”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Memória de curto prazo na janela de contexto
- Por que contextos longos não escalam
- Sumarização como compressão
- Armazenamentos simples de memória (chave-valor)