1天1个项目|邮件AI Agent
今天给大家带一个非常适合跟练的 Agent 项目——agents-from-scratch,LangChain 官方出品,手把手教你从零搭建一个能自动处理邮件的 AI Agent。
项目不大,代码量适中,但覆盖了 Agent 开发的所有核心概念。跟着做完,面试直接聊这个项目就够了。
这个项目做了什么?
一句话:一个能帮你自动分类、回复邮件的 AI Agent。
它会:
- 自动分类收到的邮件(需要回复 / 仅通知 / 垃圾邮件)
- 根据邮件内容起草回复
- 敏感操作(比如发送重要邮件)会先让你人工确认
- 会记住你的偏好(比如"给老板的邮件用正式语气"),越用越懂你
技术栈
LangGraph + OpenAI + Gmail API + LangSmith(评估和监控)
怎么跟练?项目分 4 个阶段
阶段一:LangGraph 基础(Day 1 上午)
先别急着写 Agent,把 LangGraph 的基础概念搞懂:
# 核心概念就三个:
# 1. State(状态):Agent 在思考过程中的"记忆"
# 2. Node(节点):每个节点是一个动作(检索、生成、判断...)
# 3. Edge(边):节点之间的流转条件
from langgraph.graph import StateGraph, END
from typing import TypedDict
class EmailState(TypedDict):
email: str # 输入的邮件内容
category: str # 分类结果
draft: str # 草稿回复
approved: bool # 是否通过人工审批
graph = StateGraph(EmailState)
打开项目的 notebooks/ 目录,里面有配套的 Jupyter Notebook,跟着跑一遍就理解了。
阶段二:搭建邮件 Agent(Day 1 下午)
这是核心部分,Agent 的工作流程:
收到邮件 → 分类(triage)
├── 垃圾邮件 → 忽略
├── 仅通知 → 标记已读
└── 需回复 → 起草回复 → 人工确认 → 发送
用 LangGraph 实现就是定义节点和边:
# 分类节点:让 LLM 判断邮件类型
def triage_email(state):
result = llm.invoke(f"判断这封邮件的类型(spam/notification/reply_needed):{state['email']}")
return {"category": result}
# 回复节点:让 LLM 起草回复
def draft_reply(state):
reply = llm.invoke(f"为这封邮件起草一个专业的回复:{state['email']}")
return {"draft": reply}
# 条件边:根据分类走不同路径
graph.add_conditional_edges("triage", route_by_category, {
"spam": END,
"notification": "mark_read",
"reply_needed": "draft_reply"
})
阶段三:加评估体系(Day 1 晚上)
这是很多人忽略的一步,但面试必问:"你怎么评估 Agent 的效果?"
项目用了 LLM-as-a-Judge(让另一个 LLM 给 Agent 的输出打分):
# 评估指标:
# 1. 分类准确率:邮件是否分对了类
# 2. 回复质量:语气是否合适、内容是否准确
# 3. 是否正确触发人工审批
# 准备测试集(20-30 条标注数据就够)
test_cases = [
{"email": "会议改到明天下午3点", "expected_category": "notification"},
{"email": "请问贵司的报价方案?", "expected_category": "reply_needed"},
]
阶段四:加人工审批 + 记忆(进阶)
Human-in-the-Loop:敏感操作暂停等人确认
# 在发送邮件前暂停,等待人工确认
def human_review(state):
# Agent Inbox 会把草稿推给你审核
# 你确认后才真正发送
return {"approved": True} # 或手动改为 False 拒绝
记忆系统:Agent 记住你的偏好
# 用 LangGraph Store 存储用户偏好
preferences = {
"boss_tone": "正式、简洁",
"colleague_tone": "友好、轻松",
"auto_reply_notification": True
}
# Agent 下次处理邮件时会参考这些偏好
欢迎大家来跟练!
#AI项目实战#