dottxt-ai/outlines

Structured Outputs

해결하는 문제

LLM 출력은 예측하기 어렵고 구조가 없어서 개발자가 취약한 정규식이나 생성 후 파싱을 사용해 데이터를 사용 가능한 형식으로 강제 변환해야 하는 경우가 많습니다. Outlines는 생성 과정 자체에서 구조화된 출력을 보장함으로써 지정된 스키마와 데이터가 일치하도록 하여 사후 처리 필요성을 없앱니다.

작동 방식

Outlines는 Python 타입 시스템을 이용해 원하는 출력 타입을 정의할 수 있습니다. 예를 들어 고정 선택지를 위한 Literal, 숫자를 위한 int, 복잡한 중첩 객체를 위한 Pydantic 모델 등을 사용할 수 있습니다. OpenAI, vLLM, Ollama, Hugging Face transformers 등 다양한 모델 제공자와 통합되어 LLM의 토큰 생성을 이러한 타입을 엄격히 따르도록 제한합니다.

대상 사용자

LLM으로부터 신뢰할 수 있는 기계 판독 가능한 데이터를 필요로 하는 프로덕션 AI 애플리케이션을 구축하는 개발자를 위해 설계되었습니다. 예를 들어 고객 지원 자동 분류, 전자상거래 카테고리 분류, 함수 호출 자동화 등에 적합합니다.

주요 특징

  • 모델 비종속: vLLM, Ollama, OpenAI 등 로컬 및 API 기반 다양한 모델에서 작동합니다.
  • 유효성 보장: 생성 단계에서 구조를 강제하여 파싱 오류와 손상된 JSON을 방지합니다.
  • Pydantic 통합: Pydantic 모델을 통한 복잡한 데이터 구조 지원 및 손쉬운 검증을 제공합니다.
  • 유연한 제약: 정수와 리터럴 같은 단순 타입부터 복잡한 함수 시그니처까지 지원하여 자동 파라미터 추출을 가능하게 합니다.