ChatGPT가 기억하는 방식이 바뀌었습니다. 사용자 경험은 달라지지만, API는 여전히 무상태입니다. 개발자 관점에서 정리합니다.
✅ 핵심 요약
→ 2026년 5월~6월, OpenAI가 ChatGPT Plus·Pro 사용자에게 강화된 메모리 시스템을 순차 출시했습니다 → 핵심 엔진은 Dreaming — 백그라운드에서 과거 대화를 합성해 컨텍스트를 자동 갱신합니다 → Memory Sources 기능 추가 — 응답 아래 아이콘을 탭하면 어떤 기억이 응답에 반영됐는지 확인·수정 가능 → 과거 대화, 저장된 메모리, 업로드 파일, Gmail 컨텍스트까지 통합 참조 → API에는 메모리 없음 — 여전히 API 호출은 완전 무상태, 개발자가 직접 관리해야 함 → 메모리 기반 개인화 앱을 만들려면 Responses API의 store: true 또는 외부 벡터 DB 활용 필요 → 모델 전환 핵심: Chat Completions API → Responses API로 이전 권장 → ChatGPT 메모리는 웹·앱 인터페이스 전용 — API 호출에는 메모리 접근 없음
ChatGPT 메모리가 어떻게 바뀌었나
이전 메모리 (2024~2025)
"이것 기억해줘"라고 직접 말해야 저장됐습니다. 수동 메모장 방식이었습니다.
사용자: "나 프론트엔드 개발자야. 기억해줘"
→ ChatGPT: 저장됨 ✅
다음 대화:
사용자: "React 컴포넌트 만들어줘"
→ 프론트엔드 개발자라는 것을 기억하고 적용
2026년 신규 메모리 (Dreaming)
Dreaming은 메모리를 메모장이 아닌 백그라운드 합성 프로세스로 바꿉니다. 여러 대화에서 반복되는 주제 — 업무, 여행, 취미, 커뮤니케이션 스타일 — 를 ChatGPT가 스스로 파악해서 더 폭넓은 그림을 만듭니다.
[기존 방식]
사용자가 명시적으로 요청 → 저장
[Dreaming 방식]
대화 중 자연스럽게 나온 정보 → 백그라운드 합성 → 자동 저장
시간이 지나면 자동 업데이트 (여행 예정 → 여행 다녀옴)
Memory Sources — 투명성 추가
모든 ChatGPT 소비자 플랜에 Memory Sources가 추가됐습니다. 응답 아래 Sources 아이콘을 탭하면 어떤 저장된 메모리, 과거 대화, 커스텀 지시사항이 이번 응답에 사용됐는지 확인하고 수정할 수 있습니다.
메모리 소스 설명
| 저장된 메모리 | Dreaming이 자동 합성하거나 사용자가 직접 저장한 정보 |
| 과거 대화 | 관련 있는 이전 대화 스레드 |
| 커스텀 지시사항 | Settings > Personalization에서 설정한 지시 |
| 업로드 파일 | Plus·Pro에서 이전에 업로드한 파일 |
| Gmail (연동 시) | 연결된 Gmail 계정의 컨텍스트 |
개발자가 알아야 할 핵심 — API는 여전히 무상태
메모리는 ChatGPT 웹·앱 인터페이스 전용입니다. API 호출에는 메모리 접근이 없습니다. API를 사용하는 애플리케이션을 만든다면 시스템 프롬프트나 다른 방법으로 컨텍스트를 직접 관리해야 합니다.
# ❌ 이런 기대를 하면 안 됩니다
# "ChatGPT 앱에서 기억하는 것처럼 API도 기억하겠지"
client = OpenAI()
# 1번째 호출
client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "나 백엔드 개발자야"}]
)
# 2번째 호출 — 아무것도 기억하지 않음
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "내 직업이 뭔지 알아?"}]
)
# → "모릅니다. 알려주세요."
Responses API로의 전환 — 무엇이 달라지나
Responses API는 Chat Completions API보다 미래 지향적인 구조입니다. store: true로 상태를 유지할 수 있고, 에이전트 워크플로우에 최적화됐습니다.
Chat Completions → Responses API 전환
# Chat Completions API (구버전)
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{"role": "system", "content": "당신은 코드 리뷰어입니다."},
{"role": "user", "content": "이 코드 리뷰해줘:\n\ndef add(a, b): return a+b"}
]
)
print(response.choices[0].message.content)
# Responses API (신버전 — 권장)
response = client.responses.create(
model="gpt-5.4",
instructions="당신은 코드 리뷰어입니다.",
input="이 코드 리뷰해줘:\n\ndef add(a, b): return a+b",
store=True, # 상태 저장 활성화
)
print(response.output_text)
# 다음 턴에서 이전 응답 ID로 이어받기
follow_up = client.responses.create(
model="gpt-5.4",
previous_response_id=response.id, # 이전 응답 이어받기
input="타입 힌트도 추가해줘",
)
print(follow_up.output_text)
Responses API의 store: true + previous_response_id가 멀티턴 컨텍스트 유지의 공식 방법입니다.
앱에 메모리 기능 구현하기 — 3가지 방법
ChatGPT 앱처럼 사용자 기억을 유지하는 AI 앱을 만들 때 선택지입니다.
방법 1. 대화 히스토리 전체 전달 (단순, 단기)
conversation_history = []
def chat_with_memory(user_message: str) -> str:
conversation_history.append({
"role": "user",
"content": user_message
})
response = client.chat.completions.create(
model="gpt-5.4",
messages=conversation_history,
max_tokens=1024,
)
assistant_message = response.choices[0].message.content
conversation_history.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
# 사용
chat_with_memory("나 백엔드 개발자야")
chat_with_memory("주로 Python FastAPI 써")
print(chat_with_memory("내 직업이 뭔지 알아?"))
# → "네, 백엔드 개발자이고 Python FastAPI를 주로 사용하시는군요."
단점: 대화가 길어질수록 토큰 비용 증가. 세션 종료 시 기억 사라짐.
방법 2. 벡터 DB 기반 장기 메모리 (RAG 패턴)
from openai import OpenAI
import json
client = OpenAI()
# 메모리를 벡터로 저장 (실제 구현 시 ChromaDB, Pinecone 등 사용)
def save_memory(key: str, value: str):
embedding = client.embeddings.create(
model="text-embedding-3-small",
input=f"{key}: {value}"
).data[0].embedding
# vector_db.upsert(key, embedding, {"value": value})
print(f"메모리 저장: {key} = {value}")
def retrieve_relevant_memory(query: str, top_k: int = 3) -> str:
query_embedding = client.embeddings.create(
model="text-embedding-3-small",
input=query
).data[0].embedding
# results = vector_db.query(query_embedding, top_k=top_k)
# 실제로는 벡터 DB에서 관련 메모리 검색
return "사용자는 백엔드 개발자이며 Python FastAPI를 주로 사용함"
def chat_with_long_term_memory(user_message: str) -> str:
# 관련 메모리 검색
memories = retrieve_relevant_memory(user_message)
response = client.chat.completions.create(
model="gpt-5.4",
messages=[
{
"role": "system",
"content": f"사용자에 대해 알고 있는 것:\n{memories}\n\n이를 바탕으로 답변하세요."
},
{"role": "user", "content": user_message}
],
)
return response.choices[0].message.content
# 사용
save_memory("직업", "백엔드 개발자")
save_memory("주요 기술", "Python FastAPI")
print(chat_with_long_term_memory("API 설계 조언 해줘"))
방법 3. Responses API store: true (공식 권장)
# 세션 시작
first_response = client.responses.create(
model="gpt-5.4",
instructions="사용자의 기술 스택에 맞게 답변하세요.",
input="나 Python FastAPI 백엔드 개발자야. 기억해줘.",
store=True,
)
session_id = first_response.id
# 이후 대화 — 이전 컨텍스트 자동 유지
follow_up = client.responses.create(
model="gpt-5.4",
previous_response_id=session_id,
input="비동기 처리 패턴 추천해줘",
)
print(follow_up.output_text)
# → Python FastAPI 맥락에서 async/await 패턴을 추천
메모리 관련 API 변경 사항 정리
항목 변경 내용
| ChatGPT 앱 메모리 | Dreaming V3 자동 합성 + Memory Sources 추가 |
| API 메모리 | 변화 없음 — 여전히 무상태 |
| 권장 멀티턴 방법 | Responses API previous_response_id |
| 장기 메모리 앱 | 외부 벡터 DB + RAG 패턴 직접 구현 |
| Assistants API | 2026년 sunset 예정 → Responses API + Conversations API로 마이그레이션 |
Assistants API → Responses API 마이그레이션 체크리스트
OpenAI는 2026년에 Assistants API를 종료하고 Responses API와 Conversations API로 전환합니다.
✅ Assistants API 사용 여부 코드베이스 확인
grep -r "beta.assistants\|beta.threads" --include="*.py" .
✅ Thread 기반 대화 → Responses API previous_response_id 패턴으로 전환
✅ File Search (Assistants) → 외부 벡터 DB 또는 Responses API file 입력으로 전환
✅ Function Calling → Responses API tools 파라미터로 전환
✅ 마이그레이션 후 동등성 테스트 실행
관련 글
'GPT' 카테고리의 다른 글
| Codex 주간 사용자 500만 돌파 — OpenAI AWS Bedrock 연동 실전 가이드 (0) | 2026.06.05 |
|---|---|
| ChatGPT Dreaming 메모리 업데이트 — 이제 AI가 나를 기억한다 (0) | 2026.06.05 |
| ChatGPT Workspace Agents 써봤다 — GPTs와 뭐가 다른가요? (0) | 2026.06.05 |
| OpenAI Assistants API 8월 26일 종료 — 지금 당장 Responses API로 마이그레이션해야 하는 이유 (0) | 2026.06.04 |
| OpenAI Codex 완전가이드 5편 — 가격 구조, CI/CD 자동화, Claude Code vs Codex 최종 비교 (0) | 2026.06.01 |