저예산으로 AI 비교 페이지를 구축한 방법
제 AI 도구 디렉토리를 위한 비교 페이지를 구축해야 했습니다.
계산 결과가 무시무시했습니다. 200개의 모델이 있으면 가능한 쌍(pair)이 거의 20,000개에 달하기 때문입니다. 매일 모든 쌍에 대해 Claude Haiku를 사용하여 콘텐츠를 생성한다면 비용이 너무 많이 들 것입니다.
논리와 제한 사항을 사용하여 이를 해결한 방법을 소개합니다.
전략
저는 의도가 명확한(high-intent) 쿼리에 집중했습니다. 사용자들은 "Llama 3 vs Mistral"을 알고 싶어 합니다. 그들이 원하는 것은 긴 에세이가 아니라 결정을 내릴 수 있는 정보입니다.
비용을 제어하기 위해 다음과 같은 규칙을 사용했습니다:
• 파이프라인 태그별로 모델을 그룹화합니다. • 각 그룹에서 다운로드 수가 가장 많은 상위 4개 모델만 선택합니다. • 전체 쌍의 개수에 엄격한 제한을 둡니다.
이를 통해 쌍의 개수를 20,000개에서 약 50개로 줄였습니다. 덕분에 가장 인기 있는 모델들을 다루면서도 비용을 낮게 유지할 수 있었습니다.
기술적 설정
매일 밤 실행되는 ETL 프로세스를 구축했습니다. 이 프로세스는 멱등성(idempotent)을 가집니다. 즉, 데이터베이스에 이미 해당 쌍이 존재하면 스크립트가 이를 건너뛴다는 의미입니다.
대부분의 밤에 스크립트는 모든 것을 건너뛰기 때문에 3초 만에 실행되며 비용은 0달러입니다.
효율성을 유지하기 위해 몇 가지 트릭을 사용합니다:
• 프롬프트 캐싱(Prompt Caching): 공유 Claude Haiku 클라이언트를 사용합니다. 시스템 프롬프트가 동일하게 유지되므로, 캐싱을 통해 후속 호출 비용을 거의 제로에 가깝게 만듭니다. • 가벼운 프롬프트(Lean Prompts): 모델 요약을 400자로 제한합니다. 이를 통해 입력값을 작게 유지하고 속도를 높입니다. • 정적 생성(Static Generation): Astro를 사용하여 데이터를 정적 JSON 파일로 변환합니다. 사용자에게 느린 데이터베이스 호출이나 에지 함수(edge function) 지연 시간이 발생하지 않습니다.
오류가 발생하면 어떻게 될까요?
AI는 예측 불가능할 수 있습니다. 때때로 Claude가 잘못된 JSON을 반환하기도 합니다.
저는 폴백(fallback) 시스템을 작성했습니다. AI가 실패하더라도 페이지가 충돌하지 않습니다. 대신 표준 템플릿을 보여주며 사용자에게 개별 모델 페이지를 확인하도록 안내합니다. 이러한 실패 사례를 데이터베이스에 기록하여 나중에 다시 시도할 수 있도록 합니다.
다시 한다면 다르게 할 점
만약 오늘 다시 시작한다면, 두 가지를 바꾸겠습니다:
- 교차 파이프라인 비교: 유사한 두 텍스트 모델을 비교하는 것보다 텍스트 모델과 비전 모델을 비교하는 것이 더 가치가 있습니다.
- 검색 기반 선택: 다운로드 수 대신 실제 사용자 검색 로그를 사용하여 어떤 쌍을 구축할지 결정하겠습니다.
제약 조건 속에서 구축하는 것은 더 스마트하게 만들도록 강제합니다.
Optional learning community: https://t.me/GyaanSetuAi
