본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 21. 14:58

EcoSphere AI: 탄소 발자국 어시스턴트를 구축하며 '로직'과 'AI'를 분리한 이유

요약

EcoSphere AI는 탄소 발자국 계산 시 LLM의 환각 문제를 방지하기 위해 결정론적 계산 엔진과 Google Gemini AI를 분리하는 아키텍처를 채택했습니다. 계산은 TypeScript 함수로, 설명과 대화는 AI가 담당하여 데이터의 신뢰성과 일관성을 확보했습니다.

핵심 포인트

  • LLM의 수학적 오류를 방지하기 위해 결정론적 탄소 엔진과 AI를 분리
  • TypeScript 기반의 순수 함수를 사용하여 계산의 일관성 및 테스트 가능성 확보
  • Google Gemini를 자연어 설명 및 문맥적 대화 도구로만 활용
  • Firebase와 Google Cloud Run을 활용한 데이터 저장 및 배포 아키텍처 구축

대부분의 탄소 관련 앱이 빠지는 함정

"탄소 발자국 앱을 만든다"라고 말할 때, 가장 뻔한 방식은 다음과 같습니다: 몇 가지 입력을 수집하고, LLM (Large Language Model)에게 "이것이 얼마나 많은 CO2를 배출하나요?"라고 물은 뒤, 모델이 답변하는 내용을 그대로 보여주는 것입니다.

그것은 함정입니다. LLM은 신뢰할 수 있는 계산기가 아닙니다. 동일한 모델에게 동일한 배출 관련 질문을 두 번 던지면 서로 다른 두 개의 숫자를 얻게 될 것입니다. "탄소 발자국 추적" 도구에서 이는 결격 사유입니다. 추적의 전제 조건은 일관되고 감사 가능한(auditable) 숫자이기 때문입니다.

아키텍처 결정

EcoSphere AI는 문제를 두 가지로 나눕니다:

1. 결정론적(deterministic) 탄소 엔진 — 문서화된 배출 계수(식단 유형, 교통 수단, 에너지 사용, 쇼핑 습관)를 사용하는 순수 TypeScript 함수입니다. 매번 동일한 입력에 대해 동일한 출력을 보장합니다. 완전히 유닛 테스트(unit tested)를 거쳤습니다. 이것이 실제 탄소 발자국, 당신의 Carbon DNA 아키타입(archetype), 리스크 점수(Risk Score), 그리고 순위가 매겨진 권장 사항을 계산하는 역할을 합니다.

2. Google Gemini AI — LLM이 실제로 잘하는 일, 즉 자연어 설명, 문맥적 대화, 그리고 패턴 서술에만 사용됩니다. AI 코치는 엔진이 실제로 계산한 수치를 컨텍스트(context)로 전달받아 이를 설명할 뿐, 스스로 수학적 계산을 만들어내지 않습니다.

이 분리는 그 어떤 단일 기능보다 중요했습니다. 이것은 AI 기반처럼 '보이는' 프로젝트와 진정으로 지능적인 프로젝트 사이의 차이입니다.

내가 구축한 것

  • Carbon DNA: 당신의 습관에 대한 규칙 기반 로직(rule-based logic)에서 도출된 성격 유형 프로필 ("Urban Explorer", "Frequent Flyer" 등)
  • Carbon Twin: 임의적인 수치가 아닌, 동일한 배출 계수로부터 계산된 절감액을 포함한 당신의 최적화된 버전
  • AI Sustainability Coach: 무엇이든 물어보세요, 당신의 실제 데이터에 근거한 답변을 제공합니다
  • What-If Simulator: 슬라이더를 드래그하여 2050년 예상 탄소 발자국이 실시간으로 업데이트되는 것을 확인하세요
  • Carbon Risk Score: 환경 영향에 대한 신용 점수와 같은 0-100 사이의 점수
  • 게이미피케이션 (Gamification): 당신의 영향력이 가장 큰 카테고리를 타겟팅하기 위해 자동으로 생성되는 주간 미션

사용된 클라우드 서비스

Gemini API는 대화형 코치와 매주 생성되는 AI 요약 기능을 구동하며, 항상 실제 문맥(context)을 제공받아 추측하지 않습니다.

Firebase Firestore는 월간 프로필 스냅샷을 저장하여, "이번 달 +17%, 음식 배달 증가로 인한 것으로 추정"과 같이 플래그를 표시하는 결정론적(deterministic) 습관 변화 탐지기를 가능하게 합니다. 이 역시 환각(hallucination)이 아닌 계산된 결과입니다.

배포 (Deployment): 초기에는 빠른 반복(iteration)을 위해 Vercel에 배포되었으며, 최종 프로덕션(production)을 위해 Docker화된 Google Cloud Run 아키텍처를 준비 중입니다.

테스트 전략 (Testing Strategy)

탄소 엔진이 순수 함수(pure functions)로 구성되어 있기 때문에, 20개 이상의 의미 있는 단위 테스트(unit tests)를 작성하는 것은 매우 간단했습니다. 순서 확인(비건 발자국 < 육류 중심 발자국), 경계값 확인(위험 점수를 0-100 사이로 제한), 불변성 확인(Carbon Twin은 항상 현재보다 낮은 수치를 투영함) 등이 포함됩니다. 이는 단순히 "렌더링이 되는가"를 넘어 실제로 로직을 검증하는 테스트입니다.

안티그래비티 빌드 프로세스 (The Antigravity Build Process)

여섯 개의 구조화된 마스터 프롬프트: 스캐폴드(scaffold) + 보안 → 결정론적 엔진 → Firebase/AI 레이어 → 핵심 UI → 코치/게이미피케이션 UI → 테스트/Docker/README. 각 프롬프트는 이전 프롬프트를 기반으로 구축되었으며, 전 과정이 의도(intent) 중심으로 진행되었습니다.

라이브 데모 및 코드

🔗 라이브: https://ecosphere-ai-tan.vercel.app/
💻 GitHub: https://github.com/ajx1tech/ecosphere-ai

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0