본문 바로가기
C.W.K.
Stream
Lesson 06 of 07 · published

Stateful Sessions — previous_response_id 트리

~22 min · sessions, previous_response_id, stateful

Level 0Tokenizer
0 XP0/54 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

previous_response_id 는 server 에 저장된 앞선 응답과 새 입력을 연결해. turn 마다 전체 메시지 배열을 다시 보내는 대신 직전 응답 ID 와 새 user input 만 보내면 돼. 요청이 단순해지고 반복해서 보내는 token 도 줄어.

연결은 chain 을 넘어 tree 가 될 수 있어

두 response 에 같은 previous_response_id 를 주면 같은 parent 에서 두 child 가 갈라져. 각 분기는 독립적으로 살아 있고 병렬로 실행할 수 있어서 A/B prompt 시험에 잘 맞아.

server 보관 기간은 약 30 일이야

OpenAI 에서 response 객체를 다시 가져올 수 있는 기간은 약 30 일이야. 더 오래 보관해야 할 대화는 자체 저장소에 복사해. append-only JSONL 처럼 변경 이력을 남기는 형식이 잘 맞고, 장기 기록을 server 보관에만 의존하면 안 돼.

직접 분기해봐

세 turn 대화를 만든 뒤 두 번째 turn 에서 두 갈래로 나눠. 한 child 에는 정중한 요약을, 다른 child 에는 빈정거리는 요약을 요청하고 같은 parent 에서 다른 결과가 나오는지 확인해.

Code

previous_response_id 로 3-turn chain·python
# Turn 1
r1 = client.responses.create(model="gpt-5.4", input="My name is Alice.")

# Turn 2 — no need to resend Turn 1's content
r2 = client.responses.create(
    model="gpt-5.4",
    input="What is my name?",
    previous_response_id=r1.id,
)
print(r2.output_text)  # → "Your name is Alice."
Branching: 한 response 를 두 child 로 fork·python
# Automatic compaction when context gets large
response = client.responses.create(
    model="gpt-5.4",
    input="Continue our discussion.",
    previous_response_id="resp_abc123",
    context_management={
        "strategy": "auto",
        "max_tokens": 100000,  # compact when approaching this
    },
)

External links

Exercise

세 turn 대화를 실행하고 두 번째 turn 뒤에서 분기해. 한 child 에는 정중한 요약을, 다른 child 에는 빈정거리는 요약을 요청한 뒤 둘이 같은 previous_response_id 를 공유하면서도 다른 출력을 내는지 확인해.

Progress

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

댓글 0

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

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