Frostline: 지역별 서리 날짜에 맞춰 이번 주 심을 작물 안내
요약
Frostline은 사용자의 위치와 지역별 서리 날짜 데이터를 기반으로 이번 주에 심을 작물을 정확하게 안내하는 웹 도구입니다. 이 도구는 NOAA의 실제 예측치와 결정론적 플래너를 사용하여, 인터넷 연결 없이도 오프라인에서 작동하며 사용자 프라이버시를 보호합니다.
핵심 포인트
- 지역별 서리 날짜 기반으로 파종 계획 제공
- 오프라인 실행 가능하여 데이터 전송 없음
- TabPFN과 Gemma를 결합한 하이브리드 구조
- 사용자 위치와 데이터를 로컬에서 처리
대부분의 원예 조언은 고정된 달력에 기반합니다. 하지만 포틀랜드에서 당근을 파종하기에 적절한 주가 미니애폴리스에서는 적절하지 않으며, 달력은 이를 알지 못합니다. 당신의 서리 날짜는 알고 있습니다.
Frostline은 사용자의 위치를 요청하고, 해당 지역의 지난 봄과 첫 가을 서리 날짜를 바탕으로 이번 주에 무엇을 파종해야 하는지 정확하게 알려줍니다. 화면이 가장 짧습니다. 계획을 읽고, 노트북을 닫고, 나가서 심기만 하면 됩니다.
기능 설명
미국 도시를 입력하거나 '내 위치 사용'을 누르세요. Frostline은 해당 지역의 두 서리 날짜를 보여준 다음, 29가지 일반적인 채소와 허브에서 추출된 이번 주 파종 목록을 제시합니다. 각 작물에는
- 무료로 실행됩니다. 요청당 비용이 발생하지 않으므로, 무료 정원 도구는 영원히 무료입니다.
- 위치는 그대로 유지됩니다. 서리 그리드는 미리 계산되므로, 좌표가 로컬에서 일치되며 모델 공급업체에 전송되지 않습니다.
- 모델을 교체할 수 있습니다. 자체 스테이션에서 서리 모델을 재훈련하거나, 환경 변수 하나로 모든 오픈 모델의 조언을 받을 수 있습니다.
- 오프라인으로 실행할 수 있습니다. 오픈 웨이트(open weights)라는 것은 전체 시스템이 인터넷 연결 없이 노트북에서도 실행될 수 있다는 의미이며, 이는 외부에서 사용하는 도구의 목적입니다.
작동 방식
TabPFN은 PyTorch가 필요하므로 요청 기반으로 실행되지 않습니다. 저는 이를 한 번, 오프라인 상태에서 0.5도 단위의 미국 그리드(4,069개 지점)로 계산하여 작은 정적 파일 형태로 배포합니다. 요청 시에는 작은 조회(lookup) 기능이 사용자의 위치를 그리드와 보간하고, 결정론적 플래너가 서리 날짜와 오늘 날짜를 기반으로 이번 주 파종 목록을 만들며, Gemma가 이를 작성합니다. 모델이 핵심 경로에 존재하지 않기 때문에 계획은 즉각적이며 사이트가 비어버릴 수 없습니다.
실제 정보와 시뮬레이션된 정보
꾸미지 않고 말씀드리겠습니다:
- 서리 날짜는 NOAA 1991-2020 정상 데이터를 사용한 실제 TabPFN 예측치입니다. 위의 오차는 별도로 보관된 스테이션에서 측정되었습니다.
- 파종 계획은 사용자 서리 날짜와 오늘 날짜의 실제 결정론적 함수입니다.
- 조언 문구는 키가 설정되면 Gemma가 작성하며, 그렇지 않으면 내장 플래너가 작성합니다. 앱이 어느 것이 작성했는지 표시합니다.
- 서리가 없는 깊은 남부 지역 근처에서는 모델의 외삽(extrapolates) 성능이 떨어지므로, 해당 지역에는 날짜를 지정하기보다는 라벨링됩니다. Reports page에서 모든 내용을 확인할 수 있습니다.
두 가지 파트너 카테고리
- TabPFN의 최적 활용: 서리일 예측은 깔끔한 소규모 테이블 회귀(small-tabular regression)이며, 이는 TabPFN이 가장 잘하는 분야입니다. 또한 명백한 기준선(baseline)을 능가합니다. 정확도는 앱에 게시되어 있으며
bake/train_tabpfn.py에서 재현할 수 있습니다. - Gemma의 최적 활용: Gemma는 엄격한 사실 기반 프롬프트에 근거하여 모든 계획을 작성하므로, 날짜나 작물을 절대 지어내지 않으며, 결정론적 폴백(deterministic fallback)이 있어 제품이 모델의 변덕에 좌우되지 않습니다.
공격받도록 설계됨 (Built to be attacked)
하나의 명령어(./verify.sh)가 전체를 통제합니다: 엄격한 타입(strict types), 경고 제로 린트(zero-warning lint), 테스트, 프로덕션 빌드, 그리고 깔끔한 의존성 감사(dependency audit)까지 포함합니다. 사이트는 엄격한 논스(nonce) Content-Security-Policy, 보안 헤더, 검증된 입력값, 라우트 오류 경계(route error boundary)를 배포합니다. 위협 모델은 리포지토리(repo)에 있습니다.
사용해 보기 (Try it)
https://frostline-lime.vercel.app을 열고, 거주 도시를 입력한 후 이번 주에 심을 수 있는 작물이 무엇인지 확인해 보세요. 그런 다음 밖으로 나가보세요.
AI 지원(Claude)을 사용하여 Frostline이 구축되었습니다. 아이디어, 디자인, 모델 및 라이선스 결정은 저의 것이며, 여기에 제시된 모든 숫자는 코드와 실제 사이트를 기준으로 측정되었으므로 직접 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기