Jak zbudowałem strony porównawcze AI przy ograniczonym budżecie
Musiałem zbudować strony porównawcze dla mojego katalogu narzędzi AI.
Matematyka była przerażająca. Przy 200 modelach stawiłem czoła niemal 20 000 możliwych par. Użycie Claude Haiku do generowania treści dla każdej pary kosztowałoby zbyt wiele, gdybym uruchamiał to codziennie.
Oto jak rozwiązałem ten problem, stosując logikę i limity.
The Strategy
Skupiłem się na zapytaniach o wysokiej intencji. Użytkownicy chcą wiedzieć: „Llama 3 vs Mistral”. Chcą podjąć decyzję, a nie czytać długi esej.
Użyłem tych zasad, aby kontrolować koszty:
• Grupuj modele według ich tagu pipeline. • Wybieraj tylko 4 najlepsze modele pod względem liczby pobrań w każdej grupie. • Ustal sztywny limit całkowitej liczby par.
To zmniejszyło liczbę moich par z 20 000 do około 50. Dzięki temu koszty pozostają niskie, a jednocześnie pokrywam najpopularniejsze modele.
The Technical Setup
Zbudowałem proces ETL, który uruchamia się każdej nocy. Jest on idempotentny. Oznacza to, że jeśli dana para istnieje już w mojej bazie danych, skrypt ją pomija.
Większości nocy skrypt działa w 3 sekundy i kosztuje 0 USD, ponieważ pomija wszystko.
Stosuję kilka sztuczek, aby zachować wydajność:
• Prompt Caching: Używam współdzielonego klienta Claude Haiku. Ponieważ prompt systemowy pozostaje taki sam, buforowanie sprawia, że kolejne wywołania są niemal darmowe. • Lean Prompts: Skracam podsumowania modeli do 400 znaków. Dzięki temu dane wejściowe są małe i szybkie. • Static Generation: Używam Astro, aby przekształcić dane w statyczne pliki JSON. Dzięki temu użytkownik nie doświadcza opóźnień związanych z wolnymi zapytaniami do bazy danych czy funkcjami edge.
What Happens when IT fails?
AI bywa nieprzewidywalne. Czasami Claude zwraca błędny JSON.
Napisałem system awaryjny (fallback). Jeśli AI zawiedzie, strona nie ulegnie awarii. Zamiast tego wyświetla standardowy szablon, który informuje użytkownika o konieczności sprawdzenia poszczególnych stron modeli. Śledzę te błędy w mojej bazie danych, aby móc spróbować ponownie
