Gemini 무료 티어에서 개발자 도구 만들기 — 실제로 가능한 것
Source: Dev.to
개요
HiyokoLogcat은 Gemini 무료 티어만을 사용해 완전히 구축되었으며, 사용자가 직접 무료 API 키를 제공하도록 설계되었습니다. 이 글에서는 무료 티어로 가능한 것, 제한 사항, 그리고 이를 고려한 설계 방법을 설명합니다.
Gemini 2.5 Flash 프리뷰 제한
- 분당 15회 요청 (RPM)
- 하루 1,000,000 토큰
- 하루 250회 요청
간헐적으로 사용되는 개발자 도구(예: 클릭 → 진단 → 읽기 → 수정)라면 이 제한은 충분히 관대합니다. 일반적인 진단은 3,000–6,000 토큰을 소모하므로, 하루 토큰 한도에 도달하려면 166회 이상 진단을 수행해야 합니다.
설계 가이드라인
요청을 작게 유지
- 로그의 필요한 부분만 전송하세요(예: 500줄 대신 100줄).
- 절약된 토큰 하나하나가 추가 요청 여유를 제공합니다.
자동 트리거 방지
- 데이터를 API에 자동으로 전송하지 마세요.
- 명시적인 사용자 행동이 있을 때만 요청을 보냅니다. 모든 오류마다 자동 트리거하면 RPM 제한을 즉시 초과합니다.
결과 캐시
- 사용자가 진단 오버레이를 닫았다가 다시 열면 새 API 호출 대신 캐시된 결과를 제공합니다.
대량 작업 제한
- 무료 티어는 대규모 배치 작업(예: 한 번에 100개의 오류 라인 분석)을 큰 지연 없이 처리할 수 없습니다.
- UI를 설계할 때 대량 AI 사용을 억제하도록 유도합니다.
실시간 분석 금지
- 로그 라인을 하나씩 스트리밍하면 15 RPM 제한이 몇 초 안에 소진됩니다.
확장성
- 여러 사용자가 동시에 도구를 사용할 경우, 각 사용자가 자신의 API 키를 사용하므로 별도의 할당량이 적용됩니다. 따라서 고용량 프로덕션 사용도 가능하게 됩니다.
캐시 구현 (Rust)
use std::collections::HashMap;
pub struct DiagnosisCache {
cache: HashMap, // log hash → diagnosis
}
impl DiagnosisCache {
pub fn get(&self, log_hash: &str) -> Option {
self.cache.get(log_hash)
}
pub fn insert(&mut self, log_hash: String, diagnosis: String) {
// Keep cache bounded
if self.cache.len() > 50 {
self.cache.clear();
}
self.cache.insert(log_hash, diagnosis);
}
}
- 50개 항목 캐시: 캐시가 한도에 도달하면 오래된 항목을 모두 삭제합니다. 간단하면서도 효과적입니다.
사용자 경험 혜택
- 소유감: 사용자가 직접 무료 API 키를 얻도록 하면 “내가 직접 Gemini 키를 설정했다”는 소유감을 가집니다. AI가 숨겨진 기능처럼 보이지 않게 됩니다.
- 제한 인식: 자신의 키를 설정한 사용자는 속도 제한을 이해하고 가끔 발생하는 지연에 대해 더 관대합니다.
- 마찰을 필터로: ~2분 정도 걸리는 설정(Google AI Studio에서 키 받기)은 진정으로 관심 있는 사용자만 남게 하는 필터 역할을 합니다.
결론
간헐적인 AI 사용을 전제로 한 개발자 도구라면 Gemini 무료 티어는 충분히 만족합니다. 첫날부터 무료 티어를 목표로 설계하면 비용을 제로로 유지할 수 있을 뿐 아니라, API를 남발하지 않고 효율적인 AI 상호작용을 설계하도록 강제됩니다.
자료
- HiyokoLogcat – 무료 및 오픈 소스:
- 작성자: @hiyoyok