TL;DR
- BOOTH는 애플리케이션과 대형 언어 모델(LLM) 호출 사이에 놓이는 경량 체크포인트 계층으로, 모델 출력을 그대로 전달하는 대신 구조화된 판단을 반환함.
booth.check()는 답변의 모호성·불확실성을 확인하며,result.ok가 참일 때 답변을 사용하고 그렇지 않으면 상태를 확인하는 방식임.check_with_evidence()는 애플리케이션의 검색 증강 생성(RAG) 파이프라인이 검색한 근거와 답변을 비교하며, 실제 정책에 없는 답변을 차단한 사례가 제시됨.- BOOTH는 불확실성을 명시하고, 모호성·검증·확신도를 서로 다른 순서의 검사로 처리하며, 실패 원인에 따라 재시도 방식을 달리하는 설계임.
- v0.5.2는 의존성이 없고 특정 제공자에 종속되지 않으며, 동기·비동기 API, 구조화된 결과, 근거 기반 확인 기능을 제공함.
BOOTH 소개
- BOOTH는 AI를 위한 경량 체크포인트 계층임.
- LLM 호출을 사용하는 애플리케이션과 모델 사이에 위치해, 유창한 텍스트만 돌려주는 대신 구조화되고 근거를 제시할 수 있는 판단을 반환함.
pip install boothpy로 설치하며,booth.check()에 LLM 호출 함수와 질문을 전달해 확인할 수 있음.- 결과의
ok가 참이면 답변을 사용하고, 그렇지 않으면AMBIGUOUS또는UNCERTAIN같은 상태를 확인하는 방식임.
BOOTH가 필요한 이유
- 공항에서 탑승권을 든 채 길을 잃은 사람을 도운 직원은 그 사람의 출발지, 항공기 구조, 전체 여정은 몰라도 공항과 확인해야 할 사항은 알고 있었음.
- BOOTH의 접근 방식도 이와 같음. 업계는 모델이 틀렸을 때 문맥·연산량·모델 크기를 늘리거나 도구를 덧붙이는 데 주로 의존하지만, 문제는 언제나 지식 부족에서 비롯되는 것이 아님.
- 부족한 것이 입력 정보가 아니라, 출력이 실제 기준을 충족하는지 확인하는 역할일 때도 있음.
- BOOTH는 모델보다 더 많은 것을 알려고 하지 않고, 확인할 사항을 아는 데 집중함.
- 이 주제를 더 길게 다룬 글의 제목은 “Knowing less, but knowing what matters”이며, Substack에 게시됨.
가상이 아닌 실제 사례
- 동일한 모델에 동일한 질문을 BOOTH 없이, 그리고 BOOTH와 함께 제시한 실제 비교 결과임.
- BOOTH 없이 생성된 답변은 “90 days”였으며, 실제 정책에 존재하지 않는 숫자를 만들어 낸 답변임.
booth.check_with_evidence()를 사용한 답변은 “45 days”였으며, 실제 정책 문서와 정확히 일치함.- 모델이 스스로 밝히는 확신도만으로 첫 번째 답변의 오류를 잡을 수 없으며, 실제 자료와 대조해야 확인할 수 있음.
- 근거 기반 확인에서는 LLM 답변, 검색된 문서, 호출자가 제공하는 비교 함수를 전달함. 결과 상태가
BLOCKED이면 답변이 실제 검색된 근거와 일치하지 않는다는 세부 정보를 반환함. - 생성된 구체적인 숫자는 실행마다 달라질 수 있으며, 이는 보정되지 않은 샘플링의 결과임. 반복해서 나타나는 패턴이 신뢰할 수 있는 부분임.
설계 철학
- 체크포인트는 또 다른 전체 LLM 프레임워크가 아니라 재사용 가능한 판단 계층으로 작게 유지함.
- 받아들일 수 없는 출력을 조용히 통과시키지 않고 구조화된 상태로 불확실성을 명시함.
- 모호성, 검증, 확신도를 서로 분리된 순서의 검사로 취급함. 검증을 통과하고 확신도가 높은 답변도 여전히 모호할 수 있음.
- 무작정 다시 샘플링하지 않고 재검토함. 시도가 실패한 이유에 따라 재시도 때 모델에 보여주는 내용을 결정함.
- 결과를 재해석하지 않고 드러냄.
result.parsed는 모델의 원시 응답을 보여줌. - 유효하지 않은 데이터를 조용히 변환하지 않고 거부함. 범위를 벗어난 확신도나 인식할 수 없는 불리언 유사 값은 추측 대상이 아니라 시도 거부 사유임.
- 근거 검색은 BOOTH 바깥에 둠. RAG, 검색, 데이터베이스, 도구 인프라는 애플리케이션이 소유함.
- 검증기, 확신도 값, 검색된 근거와의 일치를 진실의 증명으로 간주하지 않음.
- 애플리케이션이 모델 호출 함수를 제공하므로 특정 제공자에 종속되지 않음.
- 빈 입력, 의존성 오류, 실제 불일치는 서로 다른 실패임. BOOTH의 소스 코드를 확인하지 않아도 구분할 수 있도록 설계함.
현재 BOOTH가 제공하는 기능
- v0.5.2는 의존성이 없고 특정 제공자에 종속되지 않으며, 기존의 모든 LLM 클라이언트와 함께 사용할 수 있음.
- 모호성 감지, 실제 재검토를 포함한 확신도 확인 재시도, 호출자가 선택적으로 제공하는 검증기를 제공함.
check_with_evidence()로 자체 RAG 파이프라인에서 이미 검색한 근거에 답변을 대조할 수 있음.- 동기 및 비동기 API인
check()와acheck()를 제공하며, 두 API 모두 호출 가능한 객체를 일관되게 지원함. result.method,result.parsed,result.to_dict(),result.unwrap()을 포함한 구조화된 결과를 제공함. 각 호출 지점에서Optional[str]을 처리하는 대신 일반str을 반환하거나BoothRejected를 발생시킬 수 있음.check_with_evidence()결과에는result.reason,result.detail,result.checker_failed가 포함됨. 따라서UNCERTAIN또는BLOCKED상태가 다섯 가지 원인 중 무엇에서 비롯됐는지 상태만 보고 추측하지 않아도 됨.- 설치 명령은
pip install boothpy이며, 대안으로pip install git+https://github.com/Vedantgitbot/booth.git를 사용할 수 있음.
자세히 알아보기
TUTORIAL.md: 모든 함수와 필드, 전체 작동 방식.USECASES.md: BOOTH가 적합한 경우와 적합하지 않은 경우.CHANGELOG.md: 각 릴리스에서 변경된 내용과 그 이유.
기여
- BOOTH가 작은 규모를 유지하는 것은 설계 제약이며, 야심이 부족해서가 아님.
- 현재 가장 가치 있는 기여는 버그 보고와 재현이 확인된 예외 사례임.
CONTRIBUTING.md에는 유용한 버그 보고 방법, 좋은 재현 사례의 조건, 기능 변경 요청에서 ‘작은 규모 유지’ 원칙이 의미하는 바가 설명돼 있음.
라이선스
- 이 저장소는 Vedant Brahmbhatt가 관리하는 공식 BOOTH 저장소임.
- BOOTH는 MIT 라이선스로 배포되며, 전체 내용은
LICENSE에 있음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요