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 下次处理邮件时会参考这些偏好

alt

欢迎大家来跟练!

#AI项目实战#
全部评论

相关推荐

昨天 17:57
门头沟学院 Java
牛客24083736...:刷KPI的吧
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务