12 小时构建 AI 气候决策引擎
大多数碳足迹应用都失败了。
它们只给你一个数字,给你一些笼统的建议。仅仅提高意识并不能改变行为。知道你的碳足迹是 8 吨二氧化碳,并不能告诉你下一步该怎么做。
我开发了 Climbit 来解决这个问题。它不是一个计算器,而是一个决策引擎。它只回答一个问题:我现在能采取的最佳行动是什么?
核心逻辑
大多数工具侧重于测量,而 Climbit 侧重于决策。该系统会分析你的:
- 通勤
- 家庭能源
- 饮食
- 旅行
它根据减碳量、成本、精力投入和相关性对行动进行排序。
工程拆分
我做了一个关键的选择:将数学计算与 AI 分离开来。
大语言模型不擅长数学,它们会产生数字幻觉。在 Climbit 中,AI 从不负责计算排放量。
工作流程如下:
- 你通过文本、语音或收据图片提供数据。
- Gemini 将数据提取为结构化的 JSON。
- 由 TypeScript 引擎执行实际的数学计算。
- AI 解释结果并为你提供个性化方案。
这保证了数据的准确性,并提供了个性化的体验。
技术栈
- Next.js 15 and React 19
- TypeScript and Tailwind CSS
- Supabase and Clerk
- Google Gemini 1.5 Flash
- Vitest and Playwright
解决实际问题
构建这个应用需要解决一些棘手的技术问题:
- 水合作用 (Hydration):Recharts 在服务端渲染时会导致错误。我通过将图表渲染延迟到客户端挂载 (mount) 时才进行,从而解决了这个问题。
- 安全性:我实现了一个令牌桶速率限制器 (token bucket rate limiter)。这可以防止昂贵的 AI 端点被滥用。
- 无障碍性 (Accessibility):我使用了语义化 HTML 和 ARIA 标签。无障碍性是一项基本要求,而不是事后才考虑的事情。
启示
AI 可以加速编码,但它无法取代架构设计。
我大部分时间都花在了:
- 修复水合作用问题。
- 验证边缘情况。
- 加强安全性。
- 提高可靠性。
Demo 与产品之间的区别就在于这些细节。人们需要的不是更多的气候数据,而是更好的气候决策。
Optional learning community: https://t.me/GyaanSetuAi