OpenAI 프롬프트 객체 11월 30일 종료: pmpt_ ID 유지와 버전 관리

목차
  1. OpenAI는 무엇을 언제 종료하나?
  2. 코드를 바꾸지 않고 pmpt_ 호출을 유지하려면?
  3. 프롬프트는 코드와 라이브러리 중 어디에 둘까?
  4. 프롬프트를 ID로 호출하면 비용이 얼마나 드나?
  5. 프로덕션 트래픽 일부로 새 버전을 시험하려면?
  6. 배포 전에 버전을 어떻게 테스트하나?
  7. 11월 30일 전에 무엇을 해야 하나?
  8. 자주 묻는 질문
  9. 2026년 11월 30일에 OpenAI에 저장된 프롬프트는 어떻게 되나?
  10. 종료 후에도 pmpt_ ID로 계속 호출할 수 있나?
  11. OpenAI Evals는 무엇으로 대체할 수 있나?
  12. 함께 읽기

OpenAI는 2026년 11월 30일에 재사용 가능한 프롬프트 객체와 v1/prompts API를 종료합니다. Evals 대시보드와 API도 같은 날 종료됩니다. OpenAI는 이 객체들이 “종료 예정”이라고만 밝혔습니다. 종료 후 prompt={"id": "pmpt_..."}를 사용하는 Responses API 호출이 무엇을 반환할지는 설명하지 않았으므로, 그 전에 프롬프트 본문을 다른 곳으로 옮겨야 합니다. 저희는 Synthorai 프롬프트 라이브러리에 기존 pmpt_ ID로 프롬프트를 다시 만들었습니다. 그런 다음 OpenAI SDK 호출의 base URL과 키만 바꿔 Synthorai 게이트웨이로 보냈습니다. 이 게이트웨이는 애플리케이션과 모델 제공업체 사이에 놓이는 API 프록시입니다. 버전 "2"를 지정한 요청은 라이브러리 버전 2로, 버전을 지정하지 않은 요청은 프로덕션 버전으로 처리됐습니다.

TL;DR

  • OpenAI 프롬프트 객체와 v1/prompts API는 2026년 11월 30일 종료됩니다. OpenAI Evals는 10월 31일부터 읽기 전용으로 전환됩니다.
  • prompt={"id": "pmpt_...", "version": "2"}를 지정한 Responses 호출은 같은 ID를 가진 Synthorai 라이브러리 프롬프트의 버전 2로 처리됐습니다. base URL만 변경했습니다.
  • 트래픽이 지속적으로 들어오는 상태에서 라이브러리 프롬프트의 프로덕션 라벨을 옮기면 실제 호출에 반영되기까지 8-9초가 걸렸습니다.
  • 실행 전에 확정한 테스트는 응답의 16%에서 규칙을 어기는 수정 사항을 잡아냈습니다. 앞서 실행한 40개 행 테스트에서는 같은 수정 사항이 통과했습니다.

이 글은 프롬프트 라이브러리를 다루는 3부 가이드의 개요입니다. 아래 각 절에는 가이드 하나의 측정 결과를 요약하고, 코드와 콘솔 스크린샷을 볼 수 있는 링크를 넣었습니다. 모든 실행은 2026년 10월 19일과 20일에 진행했습니다. 코드는 github.com/synthorai-io/use-cases의 prompt-library/에 있습니다.

OpenAI는 무엇을 언제 종료하나?

OpenAI의 지원 중단 안내에는 같은 날 종료되는 두 항목이 나옵니다.

대상발표일변경 사항종료일
재사용 프롬프트: 프롬프트 객체와 v1/prompts API2026년 6월 3일플랫폼에서 프롬프트 생성 기능의 비중 축소2026년 11월 30일
Evals 플랫폼: 대시보드와 API2026년 6월 3일기존 eval은 2026년 10월 31일부터 읽기 전용2026년 11월 30일

프롬프트 객체는 OpenAI 대시보드에 저장한 뒤 pmpt_ ID로 호출하는 프롬프트입니다. 버전과 변수를 지정할 수도 있습니다. OpenAI의 마이그레이션 가이드는 프롬프트 본문을 객체에서 애플리케이션 코드로 옮겨 Responses API의 input으로 전달하라고 권장합니다. 버전 관리는 git, 코드 리뷰, 테스트로 처리하는 방식입니다. 종료 후 pmpt_ ID를 지정한 요청이 무엇을 반환하는지는 설명하지 않습니다.

코드를 바꾸지 않고 pmpt_ 호출을 유지하려면?

프롬프트 라이브러리에 같은 ID로 프롬프트를 다시 만들고, 이를 처리하는 게이트웨이로 클라이언트를 연결하면 됩니다. Synthorai 게이트웨이는 /v1/responses 요청의 prompt 필드를 읽습니다. ID가 라이브러리 프롬프트와 일치하면 해당 프롬프트로 요청을 처리하고, 숫자로 된 version이 있으면 그 라이브러리 버전을 선택합니다. 아래는 데모에서 실행한 호출입니다. base URL과 키를 제외하면 OpenAI용으로 작성한 애플리케이션이 보내는 요청과 같습니다.

import os
from openai import OpenAI

# The only change: the base URL and the key.
client = OpenAI(base_url="https://synthorai.io/v1", api_key=os.environ["SYNTHORAI_API_KEY"])

raw = client.responses.with_raw_response.create(
    model="gpt-6-luna",
    prompt={"id": "pmpt_68f2a1c09d4e4b7a8c3f5e21d0b97a64", "version": "2"},
    input="Where is order A-50977? It has been a week.",
)
print(raw.headers["x-synthorai-prompt-version"])   # 2
print(raw.parse().output_text)
호출처리 버전입력 토큰출력 토큰비용
prompt={"id": ..., "version": "2"}라이브러리 버전 292177$0.0000977
prompt={"id": ...}프로덕션 라벨이 가리키는 라이브러리 버전 196207$0.0001131

두 응답 모두 라이브러리 버전에 저장된 모델인 GPT-6 Luna가 생성했습니다. 데모의 pmpt_ ID는 임의로 만든 값입니다. 실제 마이그레이션에서는 본인의 ID를 사용하면 됩니다. 10월 20일에는 마이그레이션한 애플리케이션이 보낼 요청을 세 가지 더 확인했습니다.

요청결과
prompt 안에 "variables": {"product": "garden tools"} 지정해당 버전의 {{product}}에 값이 들어갔고, 응답은 “저희는 온라인으로 정원 도구를 판매합니다.”라는 내용으로 시작
요청에 model: "gpt-4o" 지정해당 버전에 저장된 모델인 GPT-6 Luna로 대체
라이브러리에 없는 버전인 "version": "7" 지정404 prompt_not_found, “버전 7이 없음”

마지막 행은 놓치기 쉬운 부분입니다. OpenAI 버전 번호는 같은 번호의 라이브러리 버전에 대응합니다. 따라서 "version": "7"로 고정한 호출에는 라이브러리 v7이 필요합니다. 코드에서 고정한 버전들을 순서대로 다시 만들어 번호를 맞추거나, 호출이 새로 만든 버전을 가리키도록 수정해야 합니다.

OpenAI 문서에는 프롬프트 객체를 다시 읽어 오는 API가 나와 있지 않고, 내보내기 기능도 찾지 못했습니다. 대시보드에 접근할 수 있을 때 각 프롬프트의 본문과 설정을 복사해 두세요. 콘솔에서는 복사한 본문으로 Responses 요청 본문을 만든 뒤 새 프롬프트의 가져오기 기능에 붙여 넣으면 됩니다. 메시지, 모델, 파라미터, 도구, 출력 스키마를 읽어 첫 버전으로 만듭니다. 편집기에서 직접 버전을 작성해도 됩니다.

프롬프트는 코드와 라이브러리 중 어디에 둘까?

OpenAI는 코드에 두는 방식을 권장합니다. 배포 없이 프롬프트를 바꾸고 싶다면 라이브러리를 선택할 수 있습니다. 대신 요청 경로에 서비스 하나가 추가됩니다.

코드에 저장한 프롬프트라이브러리에 저장하고 ID로 호출하는 프롬프트
변경 사항 반영코드 수정, 리뷰, 배포라벨 이동. 측정에서는 8-9초 후 호출에 반영
롤백코드 되돌리기와 배포라벨을 이전 버전으로 이동
새 버전에 트래픽 10% 전달자체 플래그 또는 라우터라벨의 점진 배포 설정
리뷰git diff와 pull request콘솔의 버전 diff. 변경 사항은 저장소에 남지 않음
배포 전 테스트자체 테스트 러너프롬프트에 연결된 테스트 세트와 eval 실행
의존성모델 제공업체 외에는 없음프롬프트를 불러오려면 게이트웨이에 접근할 수 있어야 함

마지막 행이 라이브러리 사용에 따르는 비용입니다. Synthorai 게이트웨이는 라이브러리를 읽을 수 없으면 마지막으로 읽은 프롬프트 사본으로 최대 24시간 동안 요청을 처리합니다. 최근 사본이 없는 프롬프트에 대해서만 503을 반환합니다. 두 방식을 함께 쓰려는 팀은 라이브러리 프롬프트의 모든 버전을 JSON으로 내보내 저장소에 보관할 수 있습니다.

프롬프트를 ID로 호출하면 비용이 얼마나 드나?

ID 호출에 추가 비용은 없습니다. 20쌍을 비교했을 때 prompt_id 호출이 보낸 프롬프트 토큰 수의 중앙값은 114.5로, 같은 요청을 코드에 직접 작성했을 때와 같았습니다. 게이트웨이는 해당 버전의 메시지, 모델, 파라미터를 채워 일반적인 요청 형태로 모델 제공업체에 보냅니다. 필수 변수가 없거나 알 수 없는 ID를 지정하는 등 처리할 수 없는 호출은 모델 실행 전에 400 또는 404로 실패하며, 요금이 부과되지 않습니다. 라벨은 production, staging처럼 한 번에 버전 하나를 가리키는 이름입니다. 0.5초마다 호출이 들어오는 상태에서 production 라벨을 옮기면 반영 시간의 중앙값은 8.0-8.5초였습니다. 트래픽이 15초 동안 없었던 경우에는 그다음 첫 호출에 반영됐습니다. 코드, 오류 사례 다섯 가지, 시간 측정 방법은 프롬프트 버전 관리에 정리했습니다.

프로덕션 트래픽 일부로 새 버전을 시험하려면?

production 라벨에 두 번째 버전과 트래픽 비율을 지정하면 됩니다. 게이트웨이는 세션 ID를 기준으로 호출을 나눕니다. 세션 ID는 대화 하나의 호출을 묶는 X-Session-Id 헤더이므로 대화 도중에 버전이 바뀌지 않습니다. 10% 점진 배포에서는 200개 세션 중 16개(8.0%)가 후보 버전으로 전달됐습니다. 10%와 50% 실행을 합친 400개 세션 모두 같은 버전을 유지했습니다. _user 라벨, 요청의 user 필드 또는 safety_identifier로 식별한 최종 사용자도 같은 버전을 유지했습니다. 후보 버전은 프롬프트를 그대로 두고 모델만 GPT-6 Luna에서 DeepSeek V4.1 Flash로 바꾼 것이었습니다. 응답 시간 중앙값은 4.9초에서 3.1초로 빨라졌지만, 10% 배포에서 발생한 71회 호출의 호출당 비용은 프로덕션의 1.92배였습니다. 버전별 합계로 이 차이를 확인한 과정은 프롬프트 변경 A/B 테스트에서 다룹니다.

배포 전에 버전을 어떻게 테스트하나?

고정된 테스트 세트로 새 버전과 현재 버전을 실행하고, 미리 작성한 검사 기준에 따라 모든 응답을 평가합니다. 패턴, JSON 스키마, 지연 시간과 비용 한도, 평가용 모델 등을 사용할 수 있습니다. 저희 v2는 시스템 본문을 줄이면서 “항상 주문 번호를 명시한다”는 규칙을 빠뜨렸습니다. 이전 실행에서 사용하지 않은 메시지 110개로 테스트하니 v2는 응답 18개(16%)에서 주문 번호를 누락했고 v1은 하나도 누락하지 않았습니다. 실행 전에 확정한 검정에서 Fisher의 정확 검정 결과는 p = 3.6 × 10⁻⁶였습니다. 이 검정은 이 정도 차이가 우연히 발생할 확률을 나타냅니다. 앞서 실행한 40개 행 테스트에서는 v2가 모든 행을 통과했습니다. 평가 모델인 Claude Sonnet 5.5가 테스트 비용의 대부분을 차지했으며, 행당 약 0.1센트가 들었습니다. 이 결과를 바탕으로 테스트 규모를 정하는 기준은 배포 전 프롬프트 테스트에 정리했습니다.

OpenAI Evals에서 이전하는 팀은 프롬프트 라이브러리 안의 이 기능으로 대체할 수 있습니다. 다만 한 가지 차이를 고려해야 합니다. API로 시작하는 테스트 실행은 호출자 쪽에서 수행합니다. 호출자가 두 버전을 호출하고 응답을 평가한 뒤 결과를 다시 기록합니다. 콘솔에서는 같은 테스트를 브라우저에서 실행합니다.

11월 30일 전에 무엇을 해야 하나?

마이그레이션은 다섯 단계로 정리할 수 있습니다.

  • 코드에서 호출하는 모든 pmpt_ ID를 목록으로 정리하세요. 고정한 버전도 함께 기록합니다.
  • 각 프롬프트의 본문과 설정을 복사하세요. OpenAI 대시보드에 접근할 수 있을 때 해 두어야 합니다.
  • 프롬프트별로 이전 위치를 결정하세요. OpenAI 권장대로 코드에 넣을지, 같은 ID로 라이브러리에 옮길지 정합니다.
  • 라이브러리 프롬프트를 기존 pmpt_ ID로 다시 만드세요. 고정한 모든 버전도 원래 번호로 만들고 클라이언트의 base URL을 게이트웨이로 지정합니다. 첫 호출에서 X-Synthorai-Prompt-Version 헤더를 확인하세요.
  • 사용 중인 eval은 10월 31일 전에 옮기세요. 이날부터 OpenAI Evals는 읽기 전용으로 전환됩니다.

자주 묻는 질문

2026년 11월 30일에 OpenAI에 저장된 프롬프트는 어떻게 되나?

OpenAI의 지원 중단 안내에 따르면 재사용 가능한 프롬프트 객체와 v1/prompts API는 2026년 11월 30일 종료 예정입니다. OpenAI 마이그레이션 가이드는 프롬프트 본문을 애플리케이션 코드로 옮기라고 권장합니다. 그 날짜 이후 pmpt_ ID를 지정한 요청이 무엇을 반환하는지는 설명하지 않습니다.

종료 후에도 pmpt_ ID로 계속 호출할 수 있나?

게이트웨이가 자체 프롬프트 라이브러리에서 해당 ID를 찾아 요청을 처리한다면 가능합니다. 저희 테스트에서는 prompt={"id": "pmpt_...", "version": "2"}를 지정한 OpenAI SDK 호출을 Synthorai 게이트웨이로 보냈고, 라이브러리 버전 2로 처리됐습니다. 바꾼 것은 base URL과 키뿐입니다. 고정한 버전은 라이브러리에도 같은 번호로 존재해야 합니다. 없으면 호출은 404를 반환합니다.

OpenAI Evals는 무엇으로 대체할 수 있나?

고정 입력으로 프롬프트 두 버전을 호출하고 응답을 평가할 수 있는 테스트 러너라면 대체할 수 있습니다. 프롬프트 라이브러리에서는 테스트 세트와 eval 실행을 프롬프트와 함께 관리합니다. 라벨 이동 대화상자에서는 배포 전에 해당 버전의 마지막 실행 결과를 보여 줍니다.

함께 읽기

← 블로그로 돌아가기