我用AI Agent做了个自动回邮件的助手:2天开发,每天帮我省2小时
|
🔥 2026 AI Agent 实战 我用AI Agent做了个自动回邮件的助手 2天开发,每天帮我省2小时 从0到1构建能读邮件、写回复、发通知的智能Agent附完整代码 + Prompt模板 + 部署脚本 |
|
Python + LangChain + GPT-4 实战 |
|
|
|
📧 你是不是也被邮件折磨? 每天早上打开邮箱,50+未读邮件等着处理 一半以上是重复性问题:”项目进度怎么样了?””这个需求什么时候能做完?” 写回复、找历史记录、确认细节,每天至少花2小时 这些时间本该用来做更有价值的事 |
上周我用 LangChain + GPT-4 做了一个邮件助手Agent,它能自动读取邮件、理解上下文、生成专业回复草稿。我现在每天只需要花10分钟审核一下,剩下的都交给它。这篇文章把完整实现过程分享给你。
|
📋 本文章节 |
|
|
|
01 · AI Agent到底是什么 |
|
|
|
02 · 需求分析:Agent要做什么 |
|
|
|
03 · 技术选型与架构设计 |
|
|
|
04 · Day 1:核心功能开发 |
|
|
|
05 · Day 2:进阶功能完善 |
|
|
|
06 · 效果实测与ROI分析 |
|
|
|
07 · 避坑指南 |
|
|
|
08 · 扩展思路与资料包 |
|
CHAPTER 01 AI Agent到底是什么 |
|
很多人把 AI Agent 和 Chatbot 搞混。简单说: |
|
|
🤖 Chatbot(聊天机器人) 一问一答,被动响应。你说一句,它回一句。没有记忆,不能操作外部系统。 |
🎯 AI Agent(智能体) 能自主规划、调用工具、持续学习。给它一个目标,它会自己拆解步骤、执行、反馈、调整。 |
一个完整的 AI Agent 包含四个核心组件:
|
🧠 大脑(LLM):GPT-4、Claude 等,负责理解、推理、生成 |
|
🛠️ 工具(Tools):邮件API、日历、数据库等,让Agent能操作外部系统 |
|
💾 记忆(Memory):短期记忆(对话上下文)+ 长期记忆(用户偏好、历史记录) |
|
📋 规划(Planning):把复杂任务拆解成可执行的子任务,循环执行直到完成 |
我的邮件助手就是一个典型Agent:它读取邮件(工具)→ 理解内容(LLM)→ 查询历史记录(记忆)→ 生成回复(LLM)→ 等待确认(规划)。
|
CHAPTER 02 需求分析:Agent要做什么 |
|
在动手之前,我先梳理了核心需求。不要贪多,先解决最痛的点。 核心工作流程: |
|
① 定时检查 → 每30分钟读取一次Gmail未读邮件 |
|
② 智能分类 → 判断邮件类型(紧急/普通/广告/无需回复) |
|
③ 生成回复 → 对需要回复的邮件,结合历史记录生成草稿 |
|
④ 人工确认 → 发送到我微信,我确认后才正式发送 |
|
⑤ 学习优化 → 记录我的修改,下次生成更接近我的风格 |
邮件分类规则:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CHAPTER 03 技术选型与架构设计 |
|
技术栈选择遵循一个原则:够用就好,快速验证。 核心组件: |
|
|
|
|
|
🐍 |
Python 3.10+ 生态完善,AI库支持最好 |
|
|
|
|
🔗 |
LangChain 0.2+ Agent框架,封装了LLM调用、工具集成、记忆管理 |
|
|
|
|
🧠 |
OpenAI GPT-4o 推理能力强,Function Calling稳定 |
|
|
|
|
📧 |
Gmail API 读取邮件、发送邮件、标记状态 |
|
|
|
|
💾 |
SQLite 轻量级本地数据库,存邮件记录和用户偏好 |
系统架构图:
|
┌─────────────┐ │ Gmail API │ ← 读取未读邮件 └──────┬──────┘ ↓ ┌─────────────┐ ┌─────────────┐ │ 邮件分类器 │ ←→ │ SQLite记忆 │ │ (LLM调用) │ │ (历史记录) │ └──────┬──────┘ └─────────────┘ ↓ ┌─────────────┐ │ 回复生成器 │ ← 生成回复草稿 │ (LLM+Prompt)│ └──────┬──────┘ ↓ ┌─────────────┐ ┌─────────────┐ │ 人工确认 │ ←→ │ 微信通知 │ │ (审核界面) │ │ (企业微信) │ └──────┬──────┘ └─────────────┘ ↓ ┌─────────────┐ │ Gmail API │ ← 发送邮件 └─────────────┘ |
|
CHAPTER 04 Day 1:核心功能开发 |
|
第一天聚焦三个核心功能:读取邮件、智能分类、生成回复。 Step 1:连接 Gmail |
|
email_agent.py |
|
from googleapiclient.discovery import build from google.oauth2.credentials import Credentials def get_gmail_service(): “””获取Gmail API服务””” creds = Credentials.from_authorized_user_file(‘token.json’) service = build(‘gmail’, ‘v1′, credentials=creds) return service def get_unread_emails(service, max_results=10): “””获取未读邮件””” results = service.users().messages().list( userId=’me’, q=’is:unread’, maxResults=max_results ).execute() return results.get(‘messages’, []) |
Step 2:邮件分类 Prompt
|
Prompt 模板 #1:邮件分类 你是一个邮件分类助手。请分析以下邮件,输出JSON格式: 邮件主题:{subject} 发件人:{sender} 内容:{body} 请分类: 1. category: urgent(紧急) / normal(普通) / spam(广告) / noreply(无需回复) 2. reason: 分类理由(一句话) 3. action: reply(需要回复) / read(仅阅读) / ignore(忽略) 只输出JSON,不要其他内容。 |
Step 3:生成回复 Prompt
|
Prompt 模板 #2:生成回复 你是我的邮件助手。请根据以下信息生成专业回复: 【邮件上下文】 主题:{subject} 对方邮件:{body} 【历史记录】 {history_context} 【我的风格】 – 简洁专业,不啰嗦 – 重要事项用 bullet points – 结尾礼貌但不过分热情 请生成回复草稿,保持中文。 |
Step 4:LangChain Agent 封装
|
agent.py – 核心Agent实现 |
|
from langchain.agents import Tool, AgentExecutor from langchain_openai import ChatOpenAI class EmailAgent: def __init__(self): self.llm = ChatOpenAI(model=”gpt-4o”, temperature=0.3) self.tools = [ Tool(name=”read_email”, func=self.read_email), Tool(name=”classify_email”, func=self.classify), Tool(name=”generate_reply”, func=self.generate_reply), ] def process(self, email_id): # 1. 读取邮件 email = self.read_email(email_id) # 2. 分类 category = self.classify(email) # 3. 生成回复(如果需要) if category[‘action’] == ‘reply’: draft = self.generate_reply(email) return {‘category’: category, ‘draft’: draft} return {‘category’: category} |
第一天结束,核心链路已经跑通。测试了10封邮件,分类准确率 90%,回复质量可用。
|
CHAPTER 05 Day 2:进阶功能完善 |
|
第二天做三件事:记忆系统、定时任务、通知机制。 1. 记忆系统:让Agent记得上下文 |
|
用 SQLite 存三类记忆: – 邮件记录:主题、内容、分类、回复 – 对话历史:与每个联系人的往来记录 – 用户偏好:我的回复风格、常用话术 |
2. 定时任务:自动运行
|
scheduler.py |
|
from apscheduler.schedulers.background import BackgroundScheduler def run_email_agent(): agent = EmailAgent() emails = get_unread_emails() for email in emails: result = agent.process(email[‘id’]) if result[‘category’][‘action’] == ‘reply’: send_notification(result) # 发送到微信 # 每30分钟运行一次 scheduler = BackgroundScheduler() scheduler.add_job(run_email_agent, ‘interval’, minutes=30) scheduler.start() |
3. 微信通知:人工确认环节
|
企业微信机器人推送消息: 📧 新邮件需处理发件人:张三主题:项目进度询问【AI生成回复】张总您好,目前项目进度…[确认发送] [修改] [忽略] |
第二天结束,完整流程打通。Agent可以自动运行,我只需要在手机上点确认。
|
CHAPTER 06 效果实测与ROI分析 |
|
运行一周后的真实数据: |
|
|
📊 数据对比 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
💰 ROI 计算 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
更重要的是,我的注意力被解放了。那些重复性的邮件处理不再占用我的大脑,我可以把精力集中在真正重要的事情上。
|
CHAPTER 07 避坑指南 |
|
|
|
⚠️ 坑1:API 限额问题 Gmail API 默认限额每天 1 亿次,但新账号可能受限。建议先申请提升限额,或者控制轮询频率(30分钟一次足够)。 |
|
⚠️ 坑2:上下文过长导致Token爆炸 如果邮件历史太长,Prompt会超Token。解决方案:只取最近3封相关邮件,或者做摘要存储。 |
|
⚠️ 坑3:敏感信息泄露 邮件内容会发送到OpenAI,虽然API调用是加密的,但敏感业务数据建议做脱敏处理,或者用本地模型(如Ollama)。 |
|
⚠️ 坑4:人工确认不能省 AI生成的回复可能有错误,特别是涉及具体数据、时间、人名时。务必保留人工确认环节,这是最后的防线。 |
|
CHAPTER 08 扩展思路与资料包 |
|
这个Agent还可以怎么升级? |
|
🔌 接入更多渠道:飞书、钉钉、企业微信,统一消息入口 |
|
🤝 多Agent协作:邮件Agent + 日程Agent + 任务Agent,组成个人助理团队 |
|
📈 智能报表:每周生成邮件处理报告,分析时间分布、响应速度 |
|
🎯 主动提醒:重要邮件自动标记,逾期未回复自动跟进 |
📦 资料包领取
|
关注「代码合伙人」,回复 “邮件Agent” 获取: |
|
|
|
|
|
|
|
|
|
|
|
“AI Agent不是替代我,而是把我从重复劳动中解放出来,让我专注于真正创造价值的事。” —— 代码合伙人 |
|
下期预告 多Agent协作系统:打造你的AI团队 邮件Agent + 日程Agent + 知识库Agent,如何协同工作? |
|
👇 立即获取完整资料包 关注「代码合伙人」回复 邮件Agent |
|
点击关注公众号 |
✅ 完整代码 ✅ Prompt模板 ✅ 部署教程
夜雨聆风