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에 있음.