Spring AI Token Usage: Measure Cost Before You Pick a Model — LLM Cost Control 1/4

개요

Spring AI는 LLM 비용을 절감하기 위해 토큰 사용량 측정, 모델 선택 최적화, 클라이언트 기본값 설정을 조절하는 방법을 제시합니다.

주요 내용

* Driver #0: Spring AI Observability Measurement (측정):
* LLM 비용 절감은 가시성 확보에서 시작하며, Spring AI는 Micrometer 기반의 Observability를 통해 모델별, 토큰 유형별(입력, 출력, 캐시) 사용량 데이터를 자동으로 수집합니다.
* 기본 제공 태그(모델명, 토큰 유형)만으로는 특정 기능이나 클라이언트의 사용량을 구분하기 어려우므로, 사용자 정의 저카디널리티(low-cardinality) 태그를 추가하여 사용량을 추적해야 합니다.
* 토큰 사용량 증가에 대한 경고 설정 및 제공업체 측 지출 통제 기능(예: 예산, 할당량) 설정을 통해 비용 급증을 방지할 수 있습니다.
* Observability는 최적화 이전에 설정해야 하며, 모든 변경 사항에 대한 측정 가능한 비교를 가능하게 합니다.

* Driver #1: Model Choice (모델 선택):
* 가장 적합한 기능의 가장 작은 모델을 선택하여 불필요한 비용 지출을 방지해야 합니다. 예를 들어, 텍스트 분류와 같이 간단한 작업에 고성능 플래그십 모델을 사용하는 것은 비용 낭비입니다.
* Spring AI 2.0에서 모델은 설정(configuration)으로 취급되어 아키텍처에 영향을 주지 않으므로, 모델 교체가 용이합니다.
* 각기 다른 비용 등급의 모델을 사용하기 위해 @Qualifier를 사용하여 여러 ChatClient 빈을 정의하는 패턴을 사용할 수 있습니다.
* ChatClient.Builder를 사용하여 Observability가 포함된 클라이언트를 생성해야 하며, 여러 공급업체를 혼합 사용할 경우 각 공급업체별로 ChatModel에서 ChatClient를 별도로 생성해야 합니다.

* Driver #2: One Shared Client (하나의 공유 클라이언트):
* 단일 공유 ChatClient에 시스템 프롬프트, 도구, 메모리 등 모든 기본값을 설정하면, 간단한 요청도 불필요한 토큰 사용을 유발할 수 있습니다.
* Spring AI는 클라이언트별 비용 제어를 지원하며, 각 작업에 필요한 기본값만 포함된 ChatClient를 생성할 수 있습니다.
* ChatClient.Builder.defaultSystem(), .defaultOptions(), .defaultAdvisors(), .defaultTools() 메서드를 사용하여 작업별로 특화된 클라이언트를 구성합니다.
* Spring AI 2.0에서는 .defaultOptions().options()ChatOptions.Builder를 사용하여 필요한 옵션만 명시적으로 설정하고 모델의 기본값과 병합할 수 있습니다.

시사점

Spring AI의 Observability 기능과 클라이언트/모델 선택 및 구성 전략을 통해 LLM 사용 비용을 효과적으로 관리하고 최적화할 수 있습니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions