피드로 돌아가기
Dev.toAI/ML
원문 읽기
Gemini 기반 SSE 스트리밍과 비동기 추출 파이프라인을 통한 정밀 농업 어시스턴트 설계
FarmSense AI - An intelligent farming companion
AI 요약
Context
기존 AI 챗봇의 단순 텍스트 응답 구조는 실시간 환경 데이터 반영 부족과 긴 응답 시 발생하는 토큰 절단 문제로 인해 실용적 가이드 제공에 한계가 존재함. 또한 AI의 조언과 실제 실행(비용 기록 등) 사이의 단절로 인한 사용자 이탈 가능성이 확인됨.
Technical Solution
- Navigator Geolocation 및 Nominatim API 연동을 통한 위치 정보 자동 주입으로 프롬프트 엔지니어링 효율 최적화
- model.invoke 방식의 토큰 제한 문제를 해결하기 위해 SSE(Server-Sent Events) 기반의 model.stream 도입 및 토큰 단위 렌더링 구현
- 별도의 /extract-items 엔드포인트를 통한 Gemini-2.0-Flash 기반 비동기 JSON 추출로 채팅 세션 간섭 없는 Finance Loop 구조 설계
- Promise.allSettled 및 1시간 단위 메모리 캐싱을 적용하여 다수 세션의 날씨 기반 알림 생성 시 발생하는 타임아웃 병목 제거
- LangChain의 model.stream과 모듈별 독립적 Session Map 관리를 통한 멀티턴 대화 컨텍스트 유지 및 데이터 격리
실천 포인트
- LLM의 긴 응답으로 인한 Truncation 방지를 위해 SSE 스트리밍 인터페이스 검토 - AI 조언을 실행 가능한 액션으로 전환하기 위해 메인 채팅과 분리된 비동기 JSON 추출 파이프라인 설계 - 외부 API 의존도가 높은 알림 시스템 설계 시 Promise.allSettled와 타임아웃 설정을 통한 전체 시스템 가용성 확보