How to Reduce LLM Costs in Spring AI 2.0: 10 Practical Controls

개요

Spring AI 2.0은 LLM 애플리케이션의 비용 효율성을 높이기 위한 10가지 실질적인 제어 방법을 제시하며, 기본 설정이 높은 월별 비용을 보장하지 않으므로 토큰 사용량을 측정하고 최적화하는 것이 중요함을 강조합니다.

주요 내용

* Spring AI 2.0의 변화: Spring Boot 4를 요구하며, tool-calling loop를 ChatModel에서 분리하고, tool search 및 structured outputs 기능을 확장하여 토큰 송수신 방식에 영향을 미칩니다.
* 토큰 비용 증가 요인: 시스템 프롬프트, 대화 기록, RAG 문서, 등록된 모든 도구의 JSON 스키마가 요청 시마다 전송되어 토큰 사용량이 급증하며, 출력 토큰은 입력 토큰보다 훨씬 비싸고 모델의 "사고 과정"도 출력으로 청구됩니다.
* 비용 절감을 위한 10가지 제어: 토큰이 불필요하게 반복되거나 증가하는 지점을 파악하고 Spring AI의 제어를 통해 이를 줄이는 방법론을 제시합니다.
* Part 1 — 토큰 사용량 측정: 프로바이더 대시보드만으로는 비용 발생처를 파악하기 어렵기에, Spring AI의 observability를 활용하여 각 모델별 작업과 불필요한 기본 설정 기능을 식별하여 비용을 측정합니다. 또한, 루틴한 작업을 더 작은 모델로 보내는 가장 저렴한 비용 절감 방안을 다룹니다.
* Part 2 — 프롬프트 캐싱 및 채팅 메모리: 응답 길이 제한, 대화 기록 재전송 양 제한, 프로바이더 캐싱이 제대로 작동하도록 프롬프트 구조화 방법을 설명합니다.
* Part 3 — RAG 및 도구 호출: 모델이 필요로 하지 않더라도 검색된 문서와 도구 정의가 모든 요청에 추가되는 문제를 해결하기 위해, 검색 양을 줄이고, 검색된 내용을 정리하며, 관련 있을 때만 도구 스키마를 전송하는 방법을 다룹니다.
* Part 4 — 재시도 및 임베딩: 실패한 응답 재시도로 인한 전체 컨텍스트 재전송 비용을 줄이고, 제공자 수준에서 잘못된 출력을 방지하며, 임베딩 모델 선택, 벡터 크기, 배치 처리, 변경된 부분만 재인덱싱하는 방안을 포함합니다.

시사점

각 제어 방법을 적용할 때 컨텍스트, 메모리, 응답 길이 등을 절충해야 하므로, 기능별 측정 지표를 통해 어떤 절충이 가치 있는지 판단하는 것이 중요하며, 이를 통해 LLM 애플리케이션의 운영 비용을 효과적으로 관리할 수 있습니다.

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

댓글

GitHub Discussions