DSPy.rb, BAML 스키마 형식 도입으로 LLM 프롬프트 토큰 효율성 대폭 향상

Rich Signatures, Lean Schemas

작성자
Ruby AI News
발행일
2025년 10월 07일

핵심 요약

  • 1 DSPy.rb가 BAML 스키마 형식을 도입하여 LLM 프롬프트에 포함되는 스키마의 토큰 소비량을 획기적으로 줄였습니다.
  • 2 BAML은 기존 JSON Schema 대비 최대 85.5%의 토큰 절감 효과를 제공하며, 이는 복잡한 시그니처와 고용량 애플리케이션에서 비용 효율성을 크게 높입니다.
  • 3 DSPy.configure 설정 변경만으로 BAML 스키마를 자동으로 적용할 수 있으며, 모든 Enhanced Prompting 모드 제공자와 호환됩니다.

도입

DSPy.rb는 ActiveRecord를 사용하여 데이터베이스를 모델링하는 방식과 유사하게, 프롬프트가 세상을 인식하는 방식을 객체로 모델링하는 시그니처 작성 방식을 제안합니다. 이 방식은 간단한 입출력 정의부터 시작하여 필요에 따라 복잡성을 추가하며, 프레임워크가 세부 사항을 처리합니다. 본 글은 이러한 DSPy.rb의 시그니처 모델링이 실제 애플리케이션에서 직면하는 스키마의 복잡성과 그에 따른 토큰 비용 문제를 다루고, 이를 해결하기 위한 새로운 BAML 스키마 형식의 도입을 소개합니다.

DSPy.rb의 “Enhanced Prompting” 모드에서는 시그니처 스키마가 프롬프트에 직접 포함되어 LLM으로 전송됩니다. 이는 TaskDecomposition과 같은 복잡한 시그니처의 경우 JSON Schema 형식으로 변환될 때 1,378자(약 345 토큰)에 달하는 방대한 양을 차지하게 됩니다. 이러한 JSON Schema의 장황함은 매 API 호출마다 수백 개의 토큰을 스키마 설명에만 사용하게 하여, 실제 애플리케이션의 운영 비용을 증가시키고 처리 속도를 저하시키는 “스키마 문제”를 야기합니다.

BAML 스키마: 효율적인 해결책

DSPy.rb v0.28.2부터 sorbet-baml gem을 통해 BAML 스키마 형식을 지원하여 이 문제를 해결합니다. BAML은 동일한 구조 정보, 타입 안전성, 유효성 검사를 제공하면서도 훨씬 간결한 표현이 가능합니다. 예를 들어, TaskDecomposition 시그니처의 경우 BAML 형식은 200자(약 50 토큰)에 불과하여 JSON Schema 대비 85.5%의 토큰을 절감합니다.

검증된 성능

통합 테스트 결과는 BAML의 효율성을 명확히 보여줍니다:

  • TaskDecomposition (6개 필드): JSON Schema 345 토큰 → BAML Schema 50 토큰 (85.5% 절감)

  • ResearchExecution (6개 필드): JSON Schema 287 토큰 → BAML Schema 49 토큰 (83.0% 절감)

  • 전체 테스트 종합: JSON Schema 632 토큰 → BAML Schema 99 토큰 (84.4% 절감)

이러한 절감 효과는 출력 품질 저하 없이 100% 동일한 결과를 보장합니다.

사용 방법 및 적용 범위

BAML 스키마를 사용하기 위해서는 DSPy.configure 블록 내에서 c.lm 설정에 schema_format: :baml 옵션만 추가하면 됩니다. 이 변경 사항은 OpenAI, Anthropic, Gemini, Ollama 등 Enhanced Prompting 모드를 지원하는 모든 LLM 제공자와 호환됩니다.

BAML은 특히 다음 경우에 큰 효과를 발휘합니다:

  • 복잡한 시그니처: 5개 이상의 필드나 중첩된 타입을 포함하는 경우

  • 고용량 애플리케이션: 토큰 절감 효과가 누적되어 비용 절감에 기여

  • 비용에 민감한 프로젝트: 모든 토큰이 중요한 경우

간단한 1-3개 필드 시그니처에서는 그 차이가 미미할 수 있습니다. sorbet-baml gem은 DSPy.rb에 자동으로 포함되며, Sorbet 타입 시그니처로부터 BAML 생성이 자동화되어 추가 설정이 필요 없습니다.

결론

DSPy.rb의 BAML 스키마 형식 도입은 LLM 기반 애플리케이션 개발에 있어 중요한 진전을 의미합니다. 기존 JSON Schema의 장황함으로 인해 발생하던 불필요한 토큰 소비와 비용 증가 문제를 효과적으로 해결하며, 개발자들은 복잡한 시그니처를 정의할 때에도 효율성을 희생하지 않고 구조화된 출력을 활용할 수 있게 되었습니다. 이는 특히 대규모 또는 비용에 민감한 AI 프로젝트에서 운영 효율성과 경제성을 동시에 확보하는 데 크게 기여할 것입니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!