使用 Google Gemini 为地球日构建碳足迹追踪器
Source: Dev.to
请提供您希望翻译的具体文本内容,我将为您翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。谢谢!
介绍
这是针对 Weekend Challenge: Earth Day Edition 的提交。
本周每次打开新闻标签页,都会看到关于气温上升、冰川融化或创纪录的碳排放的报道。这个地球日,这些信息让我有了不同的感受。我是一名拥有工具的开发者——于是我构建了 EcoTrace,一个由 Google Gemini 驱动的个人碳足迹追踪器。
EcoTrace 是一个网页应用,你可以记录每日活动(通勤、饮食、航班、电力使用),Gemini 负责繁重的计算。它分析你的行为模式,估算以 kg CO₂e 为单位的碳排放,并提供个性化、对话式的分析,告诉你目前的状况以及可以改进的地方。没有电子表格,没有模糊的分数——只有一个像知识渊博的朋友一样与你讨论影响的友好 AI。
目标很简单:让环保意识变得个人化,而不是说教。
操作步骤
- 记录一天 – 例如,“开车 12 公里上班,午餐吃鸡肉,空调使用 4 小时”。
- Gemini 通过结构化提示处理这些输入,并返回细分结果:交通贡献 X 千克,食物 Y 千克,家庭能源 Z 千克。
- 聊天界面 – 提出后续问题,例如“如果我每周改乘公共交通两次会怎样?”Gemini 会即时计算假设的减排量。
- 每周汇总图表 – 显示你随时间的趋势。
- 实时演示:EcoTrace on GitHub Pages
- 源代码:(原文未提供链接)
核心 Gemini API 调用
import google.generativeai as genai
genai.configure(api_key=API_KEY)
model = genai.GenerativeModel('gemini-3.0-flash')
def estimate_footprint(activity_log: dict) -> str:
prompt = f"""
You are a climate-aware assistant. Based on the following daily activities,
calculate the estimated carbon footprint in kg CO2e and provide a brief,
friendly explanation for each category.
Activities:
- Transport: {activity_log['transport']}
- Diet: {activity_log['diet']}
- Home Energy: {activity_log['energy']}
Return a structured breakdown and one actionable tip to reduce emissions.
"""
response = model.generate_content(prompt)
return response.text
前端使用纯 HTML + 原生 JavaScript,保持可访问性和快速响应。
架构
- 前端: HTML, Tailwind CSS, Alpine.js 用于响应式
- 后端: FastAPI (Python)
- AI 层: Google Gemini 1.5 Flash
- 存储: 本地 JSON(适用于周末范围的简易方案)
- 部署: Google Cloud Run
How Gemini Powers the Experience
与其硬编码排放因子,我为 Gemini 提供了包含标准碳核算方法背景的结构化提示。Gemini 会对活动数据进行推理,使用近似的排放系数,并用通俗的语言解释其思路。随后的一轮对话循环让用户能够交互式地探索“如果…会怎样”的情景。
一个关键的设计决策是避免仅显示一个数字。Gemini 的响应始终会包含一个对比(例如,“这大致相当于给手机充电 800 次”),以使抽象概念变得具体可感。
挑战
- 冗长: Gemini 可能会生成过于冗长的回复。我花时间优化系统提示,以获得简洁、结构化的输出,前端能够可靠地解析这些内容。
- 碳核算的复杂性: 排放因子因国家、季节和来源而异。我选择使用全球平均值,并在 UI 中明确展示此限制。
Google Gemini 的最佳使用
Google Gemini 3.0 Flash 是 EcoTrace 的核心。它驱动:
- 碳排放估算逻辑
- 对话式后续系统
- 个性化每周摘要
如果没有 Gemini,应用只会是一个输出数字的简单表单。有了 Gemini,它就成为一个帮助用户理解并改进习惯的对话伙伴。