C.W.K.
Stream
Lesson 02 of 05 · published

대화 Summary 메모리

~22 min · memory, summarization

Level 0Scout
0 XP0/41 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

summary 가 raw transcript 이기는 이유

50-turn 대화는 어떤 모델 context 에도 안 들어가. 순진한 고침 — 마지막 N turn 으로 truncate — 가 그 전에 일어난 모든 거 drop. Summary 메모리는 raw 로그보다 훨씬 천천히 자라는 모델-쓴 running 다이제스트 유지.

summary update 루프

  1. 매 N turn 마다 (또는 running context 가 토큰 budget 초과) LLM 호출 + 이전 summary + 새 turn 들 전달.
  2. preserve 할 summary 생성 요청: 누가 말함, 핵심 결정, 미해결 질문, 미해결 disagreement.
  3. 옛 summary 교체; fluency 위해 가장 최근 K turn 은 verbatim 유지.

임베딩된 transcript 에서 디테일 복구

Summary 는 design 상 디테일 잃어. 유저가 '지난 화요일 RRF 에 대해 정확히 뭘 말했어?' 물으면 raw turn 필요. 모든 turn 을 episodic store 에 임베딩 — summary 가 너무 거칠면 episodic 로그에서 retrieve.

Code

Running summary updater·python
SUMMARY_PROMPT = '''You maintain a running summary of a conversation between Dad and Pippa.

Previous summary:
{summary}

New turns:
{turns}

Produce an updated summary that preserves: who said what, key decisions, outstanding questions, and unresolved disagreements. Keep it under 400 words.
'''

def update_summary(prev_summary: str, new_turns: list[dict]) -> str:
    turn_text = '\n'.join(f"{t['role']}: {t['content']}" for t in new_turns)
    return llm.complete(SUMMARY_PROMPT.format(summary=prev_summary, turns=turn_text))

# 매 10 turn 마다 호출, 또는 토큰 카운트가 threshold 넘을 때.
결합된 메모리 prompt·python
def build_prompt(question: str, summary: str, recent_turns: list[dict]):
    episodic = episodic_collection.query(query_embeddings=[embed(question)], n_results=4)
    return [
        {'role': 'system', 'content': f'Conversation summary so far:\n{summary}'},
        {'role': 'system', 'content': 'Relevant past turns:\n' + '\n'.join(episodic['documents'][0])},
        *recent_turns,
        {'role': 'user', 'content': question},
    ]

External links

Exercise

30-turn 대화 transcript. running-summary updater 구현. summary + 마지막 5 turn + retrieved episodic turn 4개 포함하는 prompt 빌드. N 이전 context 참조하는 5 질문에 naive last-N truncation vs 답 품질 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.