AI 기능 때문에 지갑이 털리는 것을 막은 방법
사이드 프로젝트에 AI 챗봇을 추가했습니다. 간단할 줄 알았습니다.
틀렸습니다.
2주 후, 단 일주일 만에 OpenAI 청구 금액이 87달러에 달했습니다. 사용자는 고작 50명뿐이었죠. 취미로 하는 프로젝트에서 돈을 잃고 있었습니다.
비용을 해결하기 위해 여러 방법을 시도했습니다. 몇몇은 실패했습니다.
- 속도 제한(Rate limiting): 요청 횟수를 제한했습니다. 사용자들은 싫어했고 떠나갔습니다.
- 컨텍스트 축소(Truncating context): 토큰을 아끼기 위해 데이터를 잘라냈습니다. 답변이 부정확해졌습니다.
- 단순 캐싱(Simple caching): 정확히 일치하는 질문을 캐싱했습니다. 사용자들이 똑같은 질문을 두 번 하는 경우는 거의 없었기에 실패했습니다.
문제는 중복 작업이라는 것을 깨달았습니다. LLM이 똑같은 아이디어를 계속해서 다시 처리하고 있었습니다.
저는 세 가지 단계로 이를 해결했습니다:
시맨틱 캐싱(Semantic Caching) 정확한 단어 일치를 찾는 것을 그만두었습니다. 대신 임베딩(embeddings)을 사용하여 유사한 질문을 찾기 시작했습니다. 새로운 질문이 기존 질문과 92% 유사하면 캐싱된 답변을 제공합니다. 이 적중률은 40%에 달했고 비용을 절반으로 줄였습니다.
스마트 모델 라우팅(Smart Model Routing) 모든 작업에 GPT-4를 사용하는 것을 중단했습니다. 라우터를 구축했습니다. 질문이 짧고 간단하면 저렴한 제공업체를 사용하고, 질문이 복잡하면 프리미엄 모델로 보냅니다. 대부분의 질문에는 고성능 모델이 필요하지 않습니다.
프롬프트 트리밍(Prompt Trimming) 모델에 보내는 컨텍스트 양을 줄였습니다. 가장 관련성이 높은 데이터 청크(chunks)만 선택하여 컨텍스트 크기를 60% 줄였습니다.
결과:
- 주간 비용이 40달러에서 7달러로 감소했습니다.
- 캐시 덕분에 응답 속도가 빨라졌습니다.
- 사용자 만족도는 높게 유지되었습니다.
배운 점:
- 첫날부터 시맨틱 캐시를 구축하세요.
- 클라우드 계정에 즉시 비용 알림을 설정하세요.
- 단순한 FAQ 작업에 비싼 모델을 사용하지 마세요.
AI를 추가하는 것은 단순히 프롬프트에 관한 것이 아닙니다. 경제성에 관한 문제입니다. 모든 API 호출에는 실제 비용이 듭니다. 효율성을 고려하여 설계하지 않으면 프로젝트는 실패할 것입니다.
여러분은 AI 비용을 어떻게 관리하시나요?
출처: https://dev.to/__c1b9e06dc90a7e0a676b/how-i-stopped-my-ai-feature-from-draining-my-wallet-20il