Responses API 기준
D-161 — 2026.08.26 종료
OpenAI Assistants API 종료,
자동으로 해결될 것 같나요?
결론부터 말씀드리면, 아닙니다. OpenAI는 Threads → Conversations 자동 전환 도구를 제공하지 않는다고 공식 문서에 명시했습니다. 마이그레이션 가이드가 있으니 금방 될 것이라는 생각이 가장 먼저 틀렸습니다.
Assistants API, 지금 당장 뭔가 달라지진 않습니다 — 하지만
2025년 8월 26일, OpenAI가 공식 포럼에서 Assistants API 베타 종료를 발표했습니다. 종료일은 정확히 1년 뒤인 2026년 8월 26일입니다. (출처: OpenAI 커뮤니티 공식 발표, 2025.08.26) 지금 이 글을 쓰는 2026년 3월 기준으로 약 5개월 남았습니다.
현재 Assistants API는 아직 호출 가능합니다. 실행 중인 서비스가 있어도 당장 오류가 나진 않아요. 그런데 이게 오히려 문제입니다. “아직 되니까 나중에 봐야지”라는 생각이 드는 구간이 딱 지금입니다.
OpenAI가 Assistants를 종료하기로 한 배경은 추론 모델(GPT-5 이상) 시대에 맞는 새로운 인터페이스가 필요했기 때문입니다. Assistants는 추론 모델이 나오기 전, “에이전트를 어떻게 만들어볼까”라는 초기 시도였습니다. Responses API는 그 경험을 흡수해서 다시 설계한 후속 구조입니다. (출처: OpenAI 커뮤니티, 2025.08.26)
마이그레이션 가이드가 있으면 쉽다고요? 여기서 막힙니다
💡 공식 발표문과 커뮤니티 개발자들의 실사용 흐름을 같이 놓고 보니, “기능 동등성 달성”이라는 말과 실제 이전 경험 사이에 이런 차이가 보였습니다.
OpenAI는 Responses API가 Assistants API와 기능 동등성에 도달했기 때문에 종료를 결정했다고 밝혔습니다. 그런데 막상 이전을 시작한 개발자들은 공식 포럼에서 이렇게 말했습니다. “이건 기능 동등성이 아닙니다. Assistants는 API로 동적 생성이 됐는데, Prompts(구 Assistant)는 대시보드에서만 만들 수 있어요.” (출처: OpenAI 커뮤니티 포럼, 2025.08.27~31 개발자 댓글 다수)
Thread → Conversation, 자동 도구가 없습니다
공식 마이그레이션 가이드에는 이 문장이 그대로 있습니다. “We will not provide an automated tool for migrating Threads to Conversations.” (출처: platform.openai.com/docs/assistants/migration) 번역하면, 기존 Thread 데이터를 Conversation으로 옮겨주는 도구는 제공하지 않는다는 뜻입니다. 직접 코드를 짜서 백필해야 합니다.
OpenAI가 제시한 백필 방법은, 기존 Thread의 메시지를 순서대로 꺼내서 Conversation Items 배열에 재조립하는 Python 코드입니다. 대화 수가 많은 서비스라면 이 작업 자체가 상당한 공수입니다. “가이드 따라가면 금방 되겠지”라는 생각이 여기서 처음으로 흔들립니다.
개념 이름이 달라져서 코드가 헷갈립니다
Assistants → Prompts, Threads → Conversations, Runs → Responses, Run steps → Items로 바뀌었습니다. (출처: platform.openai.com/docs/assistants/migration) 이름이 달라진 것뿐 아니라, 호출 방식의 구조도 바뀌어서 기존 코드의 상당 부분을 수정해야 합니다. 예를 들어 `openai.beta.threads.runs.create()`는 `openai.responses.create()`로 바뀌고, 폴링 루프 구조 자체도 달라집니다.
Responses API가 비용이 더 싸다는데, 실제로 계산해봤습니다
💡 “Responses API는 비용이 올라간다”는 인식과 달리, 공식 내부 테스트 수치를 보면 같은 작업 기준으로 오히려 비용이 낮아질 수 있습니다. 단, 조건이 있습니다.
OpenAI 공식 문서에는 이 수치가 명시되어 있습니다. “Responses API는 캐시 활용률이 Chat Completions 대비 40%에서 최대 80% 개선됐다.” (출처: platform.openai.com/docs/guides/migrate-to-responses) 이게 실제로 어떤 의미냐면, 반복적인 시스템 프롬프트나 긴 컨텍스트를 재사용하는 구조라면 캐시 히트율이 높아져서 입력 토큰 비용이 그만큼 줄어든다는 뜻입니다.
또한 같은 프롬프트·같은 설정 기준으로 GPT-5를 Responses API로 호출할 때 SWE-bench 벤치마크에서 Chat Completions 대비 3% 성능이 개선됐다는 내부 평가 수치도 공개됐습니다. (출처: platform.openai.com/docs/guides/migrate-to-responses) 3%라는 수치가 작아 보일 수 있지만, 코딩 자동화처럼 성공/실패가 명확하게 갈리는 작업에서는 체감 차이가 납니다.
| 항목 | Chat Completions | Responses API |
|---|---|---|
| 캐시 활용률 | 기준값 | +40~80% 개선 |
| 멀티턴 대화 관리 | 수동 배열 관리 | previous_response_id 체인 |
| 내장 도구 (웹검색 등) | ❌ 직접 구현 필요 | ✅ 기본 내장 |
| GPT-5와 성능 | 기준값 | SWE-bench +3% |
| Prompts(설정) 동적 생성 | API 가능 | ⚠️ 대시보드만 가능 |
* 출처: OpenAI 공식 문서 (platform.openai.com/docs/guides/migrate-to-responses, 2026.03.19 접근 확인)
동적으로 Assistant를 만들던 코드가 통째로 바뀌는 이유
💡 OpenAI 포럼에서 개발자들이 공통으로 지적한 부분을 공식 문서와 대조해보니, “기능 동등성” 선언과 실제 사용 패턴 사이에 이 차이가 있었습니다.
Assistants API에서는 `openai.beta.assistants.create()`로 런타임 중에 Assistant 객체를 얼마든지 만들 수 있었습니다. 사용자별로 개인화된 Assistant를 동적으로 생성하는 아키텍처가 가능했죠. 그런데 Responses API의 Prompts는 OpenAI 대시보드에서 수동으로만 만들 수 있습니다. (출처: platform.openai.com/docs/assistants/migration — “prompts can only be created in the dashboard”)
이 차이가 실제로 어떤 영향을 주냐면, 기존에 코드로 Assistant를 만들고 사용자별로 설정을 달리 했던 서비스는 아키텍처 자체를 바꿔야 합니다. Prompts를 사전에 몇 개 만들어두고 코드에서 그 ID를 참조하는 방식으로 설계를 전환해야 해요. OpenAI 측도 이를 “관심사의 분리(Separation of Concerns)”라고 설명했지만, 기존 코드를 들고 있는 개발자 입장에서는 단순 업데이트가 아닌 리팩터링에 가깝습니다.
반면 이 구조 변경이 장점으로 작용하는 부분도 있습니다. Prompts는 버전 관리가 됩니다. 대시보드에서 스냅샷을 찍고, 변경사항 비교(diff), 롤백이 가능합니다. 코드가 아닌 Prompt 설정 단계에서 A/B 테스트도 할 수 있습니다. 이 점은 Assistants API에서 불가능했던 부분입니다.
ZDR 환경이라면 이 옵션을 먼저 봐야 합니다
Responses API는 기본적으로 `store: true`로 대화 상태를 서버에 유지합니다. 30일 기본 보존 정책이 적용됩니다. 그런데 의료·금융·법무처럼 ZDR(Zero Data Retention) 요건이 있는 조직은 이 방식으로 Responses API를 쓸 수 없습니다.
이 경우를 위해 OpenAI가 제공하는 옵션이 encrypted reasoning입니다. `store: false`로 상태 저장을 끄고, `include` 필드에 `[“reasoning.encrypted_content”]`를 추가하면, 추론 토큰이 암호화된 형태로 반환됩니다. 이 암호화된 값을 다음 요청에 다시 넘기면 디스크에 쓰이지 않고 메모리에서만 복호화·사용·폐기됩니다. (출처: platform.openai.com/docs/guides/migrate-to-responses — ZDR 섹션)
중요한 점은, ZDR 계약 조직의 경우 OpenAI가 자동으로 `store: false`를 강제 적용합니다. 따라서 ZDR 환경에서 Responses API를 쓰면서 `store: true`를 기대했다면 예상과 다른 동작이 나올 수 있습니다. 이 부분은 미리 확인해두지 않으면 운영 환경에서 문제가 됩니다.
실전 마이그레이션 체크리스트 — 순서대로 따라가면 됩니다
OpenAI 공식 마이그레이션 가이드를 기반으로, 실제로 건드려야 하는 포인트를 순서대로 정리했습니다. (출처: platform.openai.com/docs/assistants/migration)
Assistant → Prompt로 전환
대시보드에서 기존 Assistant 객체를 찾아 ‘Create Prompt’ 클릭. 여러 Assistant가 있다면 하나씩 수동으로 해야 합니다. API로 자동화 불가.
신규 대화 → Conversations로 전환
새로 시작하는 대화는 Conversations API로 전환. 기존 Thread는 그대로 두고, 신규부터 Conversations로 받는 방식이 현실적입니다.
기존 Thread 백필 (필요 시)
기존 Thread를 유지해야 한다면, 메시지를 순서대로 꺼내 Conversation Items로 재조립하는 코드를 직접 작성해야 합니다. OpenAI 자동 도구 없음.
Runs 폴링 루프 제거
Responses API는 단일 호출로 완료됩니다. `while run.status in (“queued”, “in_progress”)` 같은 폴링 루프가 필요 없어집니다. 코드가 훨씬 단순해집니다.
Function 정의 형식 수정
Chat Completions에서는 외부 태그 방식(type: “function”, function: {…}), Responses에서는 내부 태그 방식(type: “function”, name: …). 또한 Responses에서는 strict가 기본값 true로 바뀝니다.
Structured Outputs 형식 수정
`response_format`이 `text.format`으로 바뀝니다. 구조화 출력을 쓰는 코드는 이 부분을 반드시 수정해야 합니다. 빠뜨리면 런타임에서 조용히 오동작할 수 있습니다.
⚠️ 종료 시점 이전에 확인 필요: 2026년 8월 26일 이후에는 `openai.beta.threads`, `openai.beta.assistants` 엔드포인트 호출이 실패합니다. 단계적으로 이전하더라도 이 날짜 전에 운영 트래픽을 완전히 전환해야 합니다.
자주 나오는 질문 5가지
마치며 — 결국 이게 핵심입니다
Assistants API 종료는 5개월 앞으로 다가왔습니다. “가이드가 있으니 나중에 봐도 되겠지”라는 생각이 가장 먼저 틀렸습니다. Thread 자동 전환 도구가 없고, Prompts는 대시보드에서만 만들 수 있으며, Function 정의와 Structured Outputs 형식까지 바뀝니다. 이걸 코드로 하나씩 처리하는 데 예상보다 시간이 걸립니다.
반면 Responses API 자체는 잘 만들어진 API입니다. 폴링 루프가 사라지고 코드가 단순해지며, 캐시 비용이 줄어들고 내장 도구를 별도 구현 없이 쓸 수 있습니다. 마이그레이션 작업이 번거로운 것과, 이전 후 결과가 좋은 것은 별개의 이야기입니다. 지금 당장 새로 시작하는 프로젝트라면, 처음부터 Responses API로 만드는 게 맞습니다.
이 부분이 좀 아쉬웠습니다. OpenAI가 “기능 동등성 달성”이라고 선언했지만, 동적 Prompt 생성 불가 문제는 여전히 커뮤니티에서 논란입니다. “확인 필요” 사항으로 남겨두고, 공식 문서 업데이트를 주시하는 게 맞습니다.
📚 본 포스팅 참고 자료
- ① OpenAI 공식 마이그레이션 가이드 — platform.openai.com/docs/assistants/migration
- ② OpenAI Responses vs Chat Completions 공식 문서 — platform.openai.com/docs/guides/migrate-to-responses
- ③ OpenAI 커뮤니티 공식 발표 (2025.08.26) — community.openai.com
본 포스팅 작성 이후 서비스 정책·UI·기능이 변경될 수 있습니다. OpenAI Assistants API 종료일(2026.08.26) 및 마이그레이션 일정은 OpenAI 공식 발표에 따라 달라질 수 있으니, 공식 문서를 반드시 직접 확인하세요. 본문 내 수치는 OpenAI 공식 문서 기준이며, 최신 정보와 다를 수 있습니다.


댓글 남기기