좁은 경계 하나에 여러 구현을 연결해
전체 기술 묶음을 다시 쓰지 않고 여러 제공업체를 다루려면 스트리밍 호출 표면만 담는 어댑터 인터페이스를 만들고 제공업체별로 구현해. 분기, 저장, 화면은 어댑터를 부를 뿐 SDK를 직접 부르지 않아.
어댑터가 맡을 것
- 시스템 프롬프트, 메시지, 도구, tool_choice, 샘플러, max_tokens, 선택적 추론 예산을 받는 스트리밍 호출.
- 토큰 조각, 도구 호출 조각, 종료 이유, 사용량 자료를 내보내는 사건.
- 429, 5xx, 콘텐츠 정책 거절을 공통 오류로 바꾸는 일.
어댑터가 맡지 않을 것
- 분기, 대화 기록, RAG 같은 애플리케이션 로직.
- 저장.
- 사용자 화면.
어댑터는 좁게 유지해. 모든 것을 추상화하고 싶은 유혹을 참아. cwkPippa도 backend/adapters/base.py에서 이 방식을 써.