BAML, LLM의 응답을 구조화된 데이터로 전달받기 위한 개발 언어 (BoundaryML)

소개

BAML은 구조화된 데이터를 LLM에서 가져오는 프로세스를 간소화하고 개선하기 위해 개발되었습니다. LLM을 호출하여 어떠한 응답을 받는 경우, LLM은 데이터의 형식(예. Class나 List, Enum 등)을 무시하고 자연어로 응답을 합니다. BAML은 이러한 LLM의 응답을 구조화되고 타입 안전성(type-safe)을 갖추도록 하는 도구와 기능을 제공합니다.

이를 위해 BAML은 코드베이스 내에서 입력 및 출력에 대한 타입을 BAML 파일로 정의하고, 이를 사용하여 프롬프트 템플릿을 정의합니다. BAML은 protobuf와 OpenAPI 등의 타입 안전성 패턴에서 영감을 받아 개발되었으며, BAML 컴파일러를 통해 Python 또는 TypeScript 라이브러리로 BAML 코드를 변환할 수 있습니다. 또한, VSCode 확장 프로그램을 통해 BAML 파일에 대한 문법 강조, 실시간 프롬프트 미리보기, 테스트 UI를 제공하여 개발자가 LLM과의 상호작용을 더욱 효율적이고 간편하게 만들어 줍니다.

주요 기능

  • 타입 안전성 보장(Type-safe guarantee): LLM이 데이터 모델을 반환하거나 예외를 발생시킵니다. Flexible Parsing을 사용합니다.

  • 빠른 반복 개발(Fast iteration loops): VSCode에서 여러 프롬프트/LLM 공급자를 비교할 수 있습니다. (더 읽어보기)

  • 분할 JSON 스트리밍(Streaming partial jsons): 불완전한 JSON을 채워주는 BAML은 현재 Python에서 사용 가능하며, Typescript도 준비 중입니다. (더 읽어보기)

  • 프로덕션 지원이 가능한 LLM 견고성: 재시작 정책, 폴백 전략, 라운드-로빈 선택 등을 지원합니다. (더 읽어보기)

  • 다양한 LLM 공급자 지원: OpenAI, Azure, Anthropic을 기본적으로 지원하며, Mistral 등은 현재 베타로 사용 가능합니다.

  • 프롬프트 내 주석 사용(Comments in prompts): 미래의 당신이 감사할 주석을 프롬프트에 추가할 수 있습니다. :wink: (더 읽어보기)

사용 사례 및 프롬프트 예시

Use Cases Prompt Examples
:white_check_mark: Function calling (code)
Using tools
:white_check_mark: Chain of thought (code)
Using techniques like reasoning
:white_check_mark: Classification (code)
Getting intent from a customer message
:white_check_mark: Multi-shot (code)
Adding examples to the prompt
:white_check_mark: Extraction (code)
Extracting a Resume data model from unstructed text
:white_check_mark: Symbol tuning (code)
Using symbolic names for data-types
:white_check_mark: Agents
Orchestrating multiple prompts to achieve a goal
:white_check_mark: Chat roles (code)
Use system / assistant / whatever you want. We standardize it for all models
:construction: Images
Coming soon

사용 방법

BAML을 사용하여 개발 프로젝트에 타입 안전한 LLM 호출을 구현하는 방법은 다음과 같습니다:

  1. BAML 컴파일러 다운로드: macOS, Linux, Windows에서 사용 가능한 BAML 컴파일러를 설치합니다.

  2. VSCode 확장 프로그램 설치: BAML 파일에 대한 문법 강조 및 실시간 프롬프트 미리보기 등을 제공합니다.

3-1. 기존 프로젝트에 BAML 추가: baml init 명령어를 사용하여 BAML을 기존 프로젝트에 추가합니다.

3-2. 또는, 스타터 프로젝트 사용: NextJS 14 또는FastAPI와 같은 스타터 프로젝트를 사용하여 시작할 수 있습니다.

더 읽어보기

BAML GitHub 저장소

BAML 문서

주요 문서들

Boundary Studio

https://app.boundaryml.com/




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있으니 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 힘이 됩니다~ :star_struck: