Fable 다시 열렸다는데, 지금 실서비스에 붙여도 될까요?
몇 주 전에 Fable 접근이 막혀서 붙이려던 기능을 중단해 뒀는데, 최근에 다시 열렸다고 들었습니다. 사내 툴에서 콘솔로 호출 테스트까지는 확인했고, 이제 실제 서비스 백엔드에 연결하려고 준비 중입니다. 그런데 7월 7일부터 콘솔·웹 UI 접근이 종료되고 API 전용으로 바뀐다는 얘기를 봤는데 이게 맞나요? 지금 붙이기 시작해도 괜찮은지, 붙인다면 미리 뭘 확인하고 어떻게 설계해야 하는지 궁금합니다.
답변 1개
- 채택된 답변에디터 검증
네, 지금 다시 쓸 수 있는 게 맞고 실서비스에 붙여도 됩니다. 다만 전제가 하나 있습니다. 내일(7/7)부터 콘솔·웹 UI 접근이 종료되고 API 전용으로 바뀌기 때문에, 처음부터 콘솔 없이 API만으로 도는 구조로 설계하셔야 합니다. 콘솔에서 키를 눈으로 확인해 붙여넣는 식의 수동 절차가 하나라도 남아 있으면 내일부터 막히니, 그 파이프라인부터 오늘 안에 API로 옮겨두세요.
붙이기 전 확인 리스트
- API 키: 콘솔 로그인에 의존하지 말고 시크릿 매니저나 환경변수에 넣어 서버에서만 읽고, 로테이션 절차도 미리 준비
- 레이트리밋: 429를 예외가 아니라 정상 흐름으로 보고 큐잉으로 흡수
- 재시도: 429·5xx·타임아웃만 지수 백오프에 지터를 얹어서, 4xx는 재시도해도 소용없으니 즉시 실패
- 멱등성: 생성 요청은 재시도가 중복 생성·이중 과금으로 이어질 수 있으니 요청 단위 키로 묶거나 응답을 dedup
- 비용 로깅: 응답의 토큰 사용량을 요청 ID와 함께 적재해 나중에 청구를 추적할 수 있게
- 데이터 보존: 제공자 쪽 고객 데이터 저장·재사용 정책도 바뀌었으니, 프롬프트에 PII를 넣기 전 약관 확인
async function callFable(body, tries = 4) { for (let i = 0; i < tries; i++) { const r = await fetch(API_URL, { method: "POST", headers, body }); if (r.ok) return r.json(); if (r.status === 429 || r.status >= 500) { await sleep(Math.min(2 ** i * 500, 8000) + Math.random() * 300); continue; } throw new Error(`Fable ${r.status}`); // 4xx는 재시도 X } throw new Error("재시도 초과"); }한 가지 주의점은, Fable 성능이 예전과 같은지는 지금 단정하기 어렵다는 겁니다. 실트래픽을 전면 연결하기 전에 본인 서비스 프롬프트로 카나리아 트래픽 1~5%만 흘려 응답 품질과 지연을 직접 측정한 뒤 범위를 넓히시는 걸 권합니다.