ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于 HelloAgents 构建智能邮件处理 Agent:分类、回复草稿、信息提取与提醒的全流程实战

基于 HelloAgents 构建智能邮件处理 Agent:分类、回复草稿、信息提取与提醒的全流程实战 基于 HelloAgents 构建智能邮件处理 Agent分类、回复草稿、信息提取与提醒的全流程实战【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents本文以 hello-agents 仓库中Co-creation-projects/bichchibui5-hub-EmailSmartAssistant共创项目为主线完整剖析一个基于 HelloAgentsReAct 范式的智能邮件助手如何自动完成邮件分类、优先级判断、关键信息提取、多语言回复草稿生成与智能提醒创建并给出可直接运行的零配置演示、源码级实现原理与真实邮箱接入方案。读完本文你将掌握用 HelloAgents 的SimpleAgent 自定义BaseTool搭建一个可复用的文本处理 Agent 的完整方法。一、项目定位解决邮件处理的四大痛点智能邮件助手EmailSmartAssistant是一个基于 Python 与机器学习/规则引擎的自动化邮件处理工具目标直指现代职场与个人生活中邮件处理效率低下的问题。README 中明确列出其解决的四个核心痛点 大量邮件堆积人工筛选分类耗时费力✍️ 针对不同场景撰写回复需要额外精力格式与措辞难以兼顾专业性⏰ 重要邮件的跟进事项、截止时间常因疏忽而延误 关键信息散落在邮件正文中难以快速提取与整理。围绕这些痛点项目以自动分类 → 信息提取 → 回复生成 → 提醒创建为主线提供六大能力见 README.md能力说明邮件智能分类按类型工作/客户/个人/垃圾、优先级高/中/低、发件人类型同事/客户/系统/外部自动分类智能回复生成根据邮件语义与场景生成个性化回复草稿支持中英文与正式/非正式语气关键信息提取自动提取日期、时间、联系方式、待办事项等关键信息智能提醒系统基于提取的时间信息创建个性化提醒支持多种提前时间设置可视化报告生成邮件处理统计图表与结构化摘要报告多邮箱支持兼容 Gmail、Outlook、QQ 邮箱等主流邮箱服务适用场景覆盖企业办公邮件管理、客户服务邮件处理、个人邮箱整理与项目协作邮件跟进。二、技术栈HelloAgents 智能体框架 NLP/ML 工具链项目技术栈分层清晰依据 requirements.txt 与 README智能体框架hello-agents[all]0.1.0采用 ReAct 范式编排工具调用邮件协议imaplib2IMAP 收信、smtplib、emailPython 标准库自然语言处理jieba中文分词、textblob英文文本处理、langdetect语言检测机器学习与相似度scikit-learn、sentence-transformers、transformers数据处理pandas、numpy时间处理dateparser、arrow、python-dateutil配置与模板jinja2、pyyaml、python-dotenv、email-validator可视化与交互matplotlib、seaborn、plotly、jupyter、ipywidgets、rich、tqdm、colorama。项目目录同时提供了三条可运行的代码路径Co-creation-projects/bichchibui5-hub-EmailSmartAssistant/ ├── EmailSmartAssistant.ipynb # 原始完整版本jieba langdetect 规则引擎 ├── EmailSmartAssistant_HelloAgents.ipynb # HelloAgents 框架版本SimpleAgent BaseTool ├── demo.py # 零配置简化演示脚本 ├── email_assistant.py # 快速验证配置与依赖的脚本版本 ├── test_installation.py # 依赖与文件完整性测试 ├── main.ipynb # 完整功能版本 ├── requirements.txt # 依赖列表 ├── config/email_config.json # 邮箱与规则配置模板 ├── templates/reply_templates.json # 多场景、多语言回复模板 └── output/ # 输出目录reports 报告、drafts 草稿其中EmailSmartAssistant.ipynb与main.ipynb是完整版EmailSmartAssistant_HelloAgents.ipynb是使用 HelloAgents 框架的智能体版本demo.py则内置演示数据、无需任何配置即可体验完整流程。三、快速开始零配置体验完整流程3.1 环境要求与依赖安装Python 3.8test_installation.py 中提示建议 3.7README 要求 3.8Jupyter Notebook支持 IMAP/SMTP 的邮箱账户可选仅处理真实邮件时需要安装依赖pip install -r requirements.txt安装完成后可用 test_installation.py 一次性验证环境python test_installation.py该脚本会做两件事一是逐一导入 imaplib、smtplib、email、pandas、numpy、jieba、textblob、langdetect、sklearn、dateparser、arrow、jinja2、matplotlib、seaborn、tqdm、rich 共 17 个核心库并报告导入状态二是检查config/email_config.json、templates/reply_templates.json、EmailSmartAssistant.ipynb、requirements.txt、README.md五个关键文件是否存在。全部通过后即可开始使用。3.2 运行零配置演示无需配置真实邮箱直接运行简化演示即可体验所有功能python demo.pydemo.py内置了 6 封覆盖典型场景的演示邮件demo.py中文紧急会议通知工作、客户产品咨询客户、系统维护通知系统、限时促销广告垃圾、周末聚餐个人以及一封英文紧急会议请求Urgent: Meeting Request同时覆盖中英文与 spam 场景。运行后的输出结构如下 智能邮件助手 - 演示版本 演示邮件数量: 6 处理邮件 1/6: 紧急项目进度汇报会议安排... 处理邮件 2/6: 客户咨询产品功能详情... ... ✅ 处理完成 处理统计: 总邮件数: 6 已分类: 6 生成回复: 5 创建提醒: 8 分类统计: work: 2 customer: 1 personal: 1 spam: 1 other: 13.3 运行 Notebook 完整版本jupyter notebook运行后选择以下任一版本EmailSmartAssistant.ipynb—— 原始完整版本EmailSmartAssistant_HelloAgents.ipynb—— HelloAgents 框架版本推荐下文第四节详解main.ipynb—— 完整功能版本通过环境变量配置 LLM 后驱动智能体。四、核心流水线源码拆解分类 → 提取 → 回复 → 提醒demo.py用不到 300 行代码实现了完整的四步处理流水线是理解整个项目业务逻辑的最佳入口其核心逻辑与 HelloAgents 版本中的各工具一一对应。4.1 邮件分类关键词计分 规则引擎classify_email()demo.py将主题、正文合并为text_content然后对四类关键词分别计分spam_score sum(1 for keyword in self.classification_rules[spam_keywords] if keyword in text_content) if spam_score 2: return {type: spam, priority: low, sender_type: external} scores {work: work_score, customer: customer_score, personal: personal_score} email_type max(scores, keyscores.get) if max(scores.values()) 0 else other关键判定规则可归纳为垃圾邮件spam 关键词命中 ≥ 2 个直接判定为 spam如广告/推广/营销/优惠类型归属取 work/customer/personal 三类得分最高者全为 0 时归为other优先级正文或主题中出现紧急/urgent/asap/重要即 highspam 固定为 low其余 medium发件人类型按发件人地址特征推断——company.com域名视为同事noreply/no-reply视为系统客户邮件视为 customer其余为 external。分类结果为一个标准 JSON 结构{ type: work, priority: high, sender_type: colleague }4.2 关键信息提取多模式正则 句子级待办识别extract_info()demo.py用四组正则分别提取日期\d{4}-\d{1,2}-\d{1,2}如 2024-01-16、\d{1,2}月\d{1,2}日如 1月16日、\d{1,2}/\d{1,2}时间\d{1,2}:\d{2}如 14:00、\d{1,2}点、\d{1,2} PM/AM联系方式手机号1[3-9]\d{9}、邮箱地址标准正则待办事项把正文按句号切分后筛选包含需要/请/准备/need/please/prepare/确认等关键词且长度大于 5 的句子最多保留 3 条。这种规则 正则的方案不依赖 LLM 也能稳定工作且针对中文邮件格式做了专门适配这正是 README 中信息提取率 90%基于日期、联系方式、待办事项的底层实现。4.3 回复草稿生成语言检测 场景模板generate_reply()demo.py的核心思路是检测语言 → 选择场景模板 → 填充主题is_chinese any(\u4e00 char \u9fff for char in email[body]) lang zh if is_chinese else en template_type classification[type] if classification[type] in [work, customer] else general template self.reply_templates[template_type][lang] reply_content template.format(subjectemail[subject])语言检测直接利用 Unicode 中文字符范围\u4e00-\u9fff判断无需额外模型场景映射work/customer 用专属模板personal、other 统一回退到 general 模板垃圾邮件策略spam 一律不生成回复返回None。生成的回复草稿示例{ to: managercompany.com, subject: Re: 紧急项目进度汇报会议安排, content: 感谢您的邮件。关于紧急项目进度汇报会议安排我已收到您的信息。我将在24小时内回复您详细的反馈..., language: zh, template_type: work }4.4 提醒创建时间反推 待办定时提醒逻辑在 HelloAgents 版本的ReminderCreatorTool._create_reminders()见 EmailSmartAssistant_HelloAgents.ipynb中实现前置门槛只对 high/medium 优先级邮件创建提醒spam/low 直接跳过日期提醒对形如YYYY-MM-DD的日期解析为target_date自动在截止日前一天timedelta(days1)生成明天到期提醒待办提醒对每条提取出的待办事项在datetime.now() timedelta(hours2)2 小时后生成跟进提醒防噪处理对无法解析的日期格式使用try/except容错跳过并确保提醒时间晚于当前时间。demo.py的统计口径为reminders len(dates) len(todos)这就是演示输出中创建提醒: 8的来源。五、HelloAgents 智能体版本把流水线改造成可编排的工具集EmailSmartAssistant_HelloAgents.ipynb是本项目与 hello-agents 仓库最直接的结合点它把第四节的四步流水线改造成了ReAct 范式下的四个独立工具 一个 SimpleAgent的架构。5.1 工具定义继承 BaseTool四个工具全部继承hello_agents.tools.BaseTool每个工具声明name与description供 LLM 决策时理解工具用途实现run()方法工具name职责邮件分类工具email_classifier类型、优先级、发件人类型判断信息提取工具information_extractor日期、时间、联系方式、待办提取回复生成工具reply_generator按场景与语言生成回复草稿提醒创建工具reminder_creator基于时间信息创建智能提醒以分类工具为例节选自 Notebook 第 3 部分from hello_agents import SimpleAgent, HelloAgentsLLM from hello_agents.tools import BaseTool class EmailClassifierTool(BaseTool): name email_classifier description 对邮件进行智能分类包括类型、优先级和发件人类型判断 def __init__(self): super().__init__() self.classification_rules { work_keywords: [会议, 项目, 工作, 任务, 汇报, meeting, project, work, task, urgent], customer_keywords: [客户, 咨询, 购买, 服务, customer, inquiry, purchase, service], personal_keywords: [个人, 家庭, 朋友, personal, family, friend, 聚餐], spam_keywords: [广告, 推广, 营销, 优惠, advertisement, promotion, marketing, 折扣] } def run(self, email_data: str) - str: # 解析 JSON 邮件数据 → 计分 → 返回分类结果 JSON ...工具间统一以JSON 字符串作为输入输出协议分类工具接收{subject: ..., body: ..., sender: ...}并返回分类 JSON回复生成与提醒创建工具则接收{email: ..., classification: ...}或{email: ..., classification: ..., extracted_info: ...}的组合输入。这种统一 JSON 数据格式进行工具间通信的设计保证了多工具流水线的数据连贯性Notebook 第 7 部分挑战3对此有明确总结。5.2 智能体构建SimpleAgent System Prompt智能体使用SimpleAgent构建并配套一段结构化 system prompt 约束处理顺序Notebook 第 4 部分llm HelloAgentsLLM(model_namegpt-3.5-turbo, temperature0.1) system_prompt 你是一个专业的邮件处理助手具备以下能力 1. 邮件分类能够准确识别邮件类型工作、客户、个人、垃圾邮件和优先级 2. 信息提取从邮件中提取关键信息如日期、时间、联系方式、待办事项 3. 回复生成根据邮件内容和分类生成合适的回复草稿 4. 提醒创建基于提取的信息创建智能提醒 处理邮件时请按以下步骤进行 1. 首先使用email_classifier工具对邮件进行分类 2. 然后使用information_extractor工具提取关键信息 3. 根据分类结果使用reply_generator工具生成回复草稿 4. 最后使用reminder_creator工具创建相应的提醒 agent SimpleAgent(name智能邮件助手, llmllm, system_promptsystem_prompt) agent.add_tool(EmailClassifierTool()) agent.add_tool(InformationExtractorTool()) agent.add_tool(ReplyGeneratorTool()) agent.add_tool(ReminderCreatorTool())要点解析LLM 可替换Notebook 中model_namegpt-3.5-turbo仅为示例可替换为其他模型temperature0.1的低温度设置有利于生成更稳定、更专业的回复文本优雅降级Notebook 实现了MockAgent模拟智能体——当 LLM 创建失败未配置 API Key 等时自动回退到确定性顺序调用四个工具的模拟模式保证在无 LLM 环境下演示依然可用固定处理顺序system prompt 中明确要求先分类 → 再提取 → 生成回复 → 创建提醒这与第四节源码流水线的顺序完全一致体现了 ReAct 范式中推理-行动循环与业务规则的有效结合。5.3 演示场景Notebook 第 5 部分提供四个递进的演示场景基础功能演示输入演示邮件处理功能触发内置演示邮件全流程处理复杂场景演示处理一封含联系方式13800138000与明确时间要求本周五之前安排演示的客户咨询邮件英文邮件处理验证英文邮件Urgent: Quarterly Report Meeting的语言检测与英文回复生成批量邮件处理循环处理系统通知、促销广告、周末聚餐 3 封邮件并用rich.table输出分类统计表。5.4 main.ipynb环境变量驱动的 LLM 配置main.ipynb展示了另一种接入方式——通过环境变量配置 LLM 端点可对接 ModelScope 等兼容 OpenAI 协议的推理服务os.environ[LLM_MODEL_ID] Qwen/Qwen2.5-72B-Instruct os.environ[LLM_API_KEY] your_api_key_here os.environ[LLM_BASE_URL] https://api-inference.modelscope.cn/v1/ os.environ[LLM_TIMEOUT] 60同时它在EmailClassificationTool中演示了从config/email_config.json动态加载分类与优先级规则的能力config.get(classification_rules, {})并在文件缺失时回退到内置默认规则——这体现了配置与代码分离的设计思想规则的热更新不需要改动代码。六、接入真实邮箱配置模板与常见邮箱参数处理真实邮件时编辑 config/email_config.jsonemail_assistant.py会校验该文件与模板文件是否可加载。完整配置结构包含五个区块{ email_accounts: [ { name: 主邮箱, email: your_emailexample.com, password: your_app_password, imap_server: imap.example.com, imap_port: 993, smtp_server: smtp.example.com, smtp_port: 587, use_ssl: true } ], classification_rules: { work_keywords: [会议, 项目, 工作, 任务, 汇报, meeting, project, work, task], customer_keywords: [客户, 咨询, 购买, 服务, customer, inquiry, purchase, service], personal_keywords: [个人, 家庭, 朋友, personal, family, friend], spam_keywords: [广告, 推广, 营销, advertisement, promotion, marketing] }, priority_rules: { high_priority_senders: [bosscompany.com, importantclient.com], high_priority_keywords: [紧急, urgent, asap, 重要, important], low_priority_keywords: [通知, newsletter, notification, 订阅] }, reply_settings: { formal_tone: true, include_signature: true, auto_cc: [], default_language: zh-CN }, reminder_settings: { advance_days: [1, 3, 7], notification_methods: [email, console], working_hours: { start: 09:00, end: 18:00 } } }各区块作用与要点email_accounts支持多邮箱账户imap_port/smtp_port默认 993/587use_ssl控制 SSL 加密连接classification_rules / priority_rules分类与优先级关键词规则与第四节源码中的计分逻辑一一对应额外支持high_priority_senders白名单指定发件人直接高优先级与low_priority_keywords通知类自动降级reply_settingsformal_tone控制正式语气、include_signature控制是否附加签名、default_language默认zh-CNreminder_settingsadvance_days提前提醒天数1/3/7 天、notification_methods提醒渠道、working_hours限定工作时段内提醒。README 提供的常见邮箱 IMAP/SMTP 参数对照表邮箱服务IMAP服务器IMAP端口SMTP服务器SMTP端口Gmailimap.gmail.com993smtp.gmail.com587Outlookoutlook.office365.com993smtp.office365.com587QQ邮箱imap.qq.com993smtp.qq.com587安全建议使用应用专用密码不要使用邮箱登录密码而是生成应用专用密码——Gmail 在Google 账户 → 安全性 → 应用专用密码、Outlook 在Microsoft 账户 → 安全性 → 应用密码、QQ 邮箱在邮箱设置 → 账户 → 开启 IMAP/SMTP 服务保护配置文件不要将包含密码的email_config.json提交到版本控制系统网络安全确保在安全的网络环境下运行程序。七、多语言回复模板场景 × 语气 × 语言的矩阵设计回复内容由 templates/reply_templates.json 统一管理比demo.py内置的简化模板更完整按场景 → 语气 → 语言三层组织使用{{placeholder}}占位符填充变量场景支持语气占位变量work_meeting工作/会议formal、casual{{subject}}、{{timeframe}}customer_inquiry客户咨询formal{{subject}}、{{timeframe}}general_acknowledgment通用确认formal、casual{{subject}}、{{timeframe}}out_of_office外出自动回复formal{{return_date}}、{{emergency_contact}}每个场景均提供zh与en双语。以工作会议正式模板为例{ work_meeting: { formal: { zh: 感谢您的邮件。关于{{subject}}我已收到您的信息。我将在{{timeframe}}内回复您详细的反馈。如有紧急事项请随时联系我。\n\n此致\n敬礼, en: Thank you for your email regarding {{subject}}. I have received your information and will provide detailed feedback within {{timeframe}}. Please feel free to contact me if there are any urgent matters.\n\nBest regards }, casual: { zh: 收到关于{{subject}}的事情我看到了{{timeframe}}内给你回复。有急事随时找我。 } } }casual非正式语气用于私人或熟人间沟通formal正式语气用于工作与客户场景out_of_office模板则面向请假/出差场景可填充返回日期与紧急联系人。demo.py中generate_reply()的template_type in [work, customer]分支正是这套模板矩阵在运行时的一次简化落地。八、故障排除与常见问题连接失败检查邮箱服务器地址与端口是否与第六节对照表一致确认已在邮箱服务商处开启 IMAP/SMTP 服务验证应用专用密码是否正确而非邮箱登录密码检查防火墙与网络连接。依赖安装问题# 如果 pip 安装失败尝试使用 conda conda install pandas numpy matplotlib seaborn pip install -r requirements.txt # 或者使用清华源加速 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/若运行 Notebook 时出现ModuleNotFoundError如No module named jieba说明依赖未完整安装回到第三节执行pip install -r requirements.txt并用test_installation.py复核即可。九、总结一条可复用的智能体落地路径智能邮件助手项目完整演示了**业务规则确定化 智能体编排工具化**的 Agent 构建思路确定性强的分类、提取、模板填充逻辑用规则/正则/模板实现保证准确率与速度而工具的选择、排序与组合交给 HelloAgents 的 ReAct 智能体协调并通过 JSON 协议打通工具间数据流。README 中记录的基于演示数据的性能表现包括分类准确率 95%关键词匹配与规则引擎、信息提取率 90%日期/联系方式/待办事项、非垃圾邮件回复生成成功率 100%、平均处理时间 1 秒/封第 6 部分的性能评估脚本会输出准确率、平均处理时间与处理速度指标。README 同时列出了明确的后续演进方向可作为继续改造该项目的路线图集成 BERT 等预训练模型提升分类与信息提取准确率、加入情感分析调整回复语气、支持自动发送需用户确认、开发移动端或 Web 界面、提供 RESTful API 供第三方集成以及团队协作共享处理规则与模板。对于想要基于 hello-agents 框架构建自己的文档处理、信息抽取类 Agent 的开发者本项目在工具封装、配置外置、多语言适配、无 LLM 降级演示四个维度上都提供了可直接复用的参考实现。仓库内相关参考文件项目说明README.md零配置演示脚本demo.pyHelloAgents 智能体版本EmailSmartAssistant_HelloAgents.ipynb完整功能版本main.ipynb邮箱与规则配置config/email_config.json多语言回复模板templates/reply_templates.json依赖清单requirements.txt环境自检脚本test_installation.py【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表