我将通过阿里云企业邮箱API获取邮件数据,并与本地部署的deepseek32b模型进行集成分析。以下是具体实现方案和代码,您可以参考并集成到您的系统中。

news/2025/2/26 9:22:46/文章来源:https://www.cnblogs.com/lyt263/p/18737769

1. 获取邮件数据

您的代码已经通过阿里云API成功获取了邮件数据。这部分代码已经能够从阿里云邮箱拉取指定数量的邮件并提取其基本信息,包括主题、发送时间、收件人、发件人和正文内容。

2. 分析邮件内容

您通过OllamaLLM类调用了本地的deepseek32b大模型进行邮件内容的分析。以下是将邮件分析部分更清晰地结合到处理流程中的详细实现:

3. 集成阿里云邮件API与deepseek32b模型分析

以下是优化后的代码,重点是邮件数据的获取、预处理和与本地模型的集成。假设您已经在本地成功部署了deepseek32b模型,并且模型API的访问路径为http://localhost:11434

代码示例:

from pprint import pprint
import requests
from langchain_ollama import OllamaLLM# 格式化邮件输出
def format_email_table(email_table):"""格式化输出邮件表格数据"""def clean_content(text, max_length=500):"""清理内容并限制长度"""text = text.replace('<think>', '').replace('</think>', '').strip()return text[:max_length] + '...' if len(text) > max_length else textformatted_output = (f"邮件主题: {email_table.get('邮件主题', '无')}\n"f"发送时间: {email_table.get('发送时间', '未知')}\n"f"收件人: {', '.join(email_table['收件人']) if email_table.get('收件人') else '无'}\n"f"抄送人: {', '.join(email_table['抄送人']) if email_table.get('抄送人') else '无'}\n"f"发件人: {email_table.get('发件人', '未知')}\n"f"邮件正文内容: {clean_content(email_table.get('邮件正文内容', '无内容'))}\n"f"任务类型分类: {clean_content(email_table.get('任务类型分类', '未分类'))}\n"f"情感分析结论: {clean_content(email_table.get('情感分析结论', '未分析'))}\n"f"影响分析: {clean_content(email_table.get('影响分析', '未分析'))}\n")return formatted_output# 获取邮件数据
def get_messages(email_address, inbox, count_emails_nabers):"""从指定邮箱获取并处理邮件"""url = f"https://alimail-cn.aliyuncs.com/v2/users/{email_address}/mailFolders/{inbox}/messages"querystring = {"size": str(count_emails_nabers)}headers = {"Content-Type": "application/json","Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"  # 替换为实际的AccessToken
    }try:response = requests.get(url, headers=headers, params=querystring)response.raise_for_status()except requests.exceptions.RequestException as e:print(f"请求失败: {e}")return []messages = response.json().get('messages', [])if not messages:print("未获取到邮件。")return []processed_messages = []for message in messages:try:# 提取邮件基本信息subject = message.get('subject', '无主题')sent_time = message.get('sentDateTime', '未知时间')to_recipients = [recipient.get('email', '') for recipient in message.get('toRecipients', [])]cc_recipients = [recipient.get('email', '') for recipient in message.get('ccRecipients', [])]from_sender = message.get('from', {}).get('email', '未知发件人')# 获取邮件正文body_content = get_email_body(message)if not body_content:print("跳过无正文邮件")continue# 分析邮件内容analysis_data = analyze_email_content(body_content)# 构建结构化数据email_table = {"邮件主题": subject,"发送时间": sent_time,"收件人": to_recipients,"抄送人": cc_recipients,"发件人": from_sender,"邮件正文内容": body_content,**analysis_data}processed_messages.append(email_table)except Exception as e:print(f"处理邮件时出错: {e}")continuereturn processed_messages# 提取邮件正文内容
def get_email_body(message):"""提取邮件正文内容"""for part in message.get('parts', []):if part.get('contentType') == 'text/plain':return part.get('content', '')body = message.get('body', {})if body.get('contentType') == 'text/plain':return body.get('content', '')return message.get('summary', '')# 使用大语言模型分析邮件内容
def analyze_email_content(content):"""使用大语言模型分析邮件内容"""model = OllamaLLM(base_url="http://localhost:11434",  # 本地部署的deepseek32b模型的API路径model="deepseek-r1:32b",  # 使用的具体模型名称device="cuda",  # 如果您有GPU,建议使用CUDA加速verbose=False)try:prompts = {"任务类型分类": "请用一句话直接分类此邮件的任务类型,不要解释和思考过程。示例:'安全告警通知'","邮件内容": "请总结出邮件的内容,要简明扼要,不要解释和思考过程。示例:'这是一封在什么时候,什么地点,要做什么的邮件'","情感分析结论": "请用一句话直接分析邮件的情感倾向,不要解释和思考过程 示例:'中性偏警示'","影响分析": "请用分点列举的简洁格式(不要任何前缀符号)分析潜在影响,不要解释和思考过程. 示例:\n1. 服务器安全风险\n2. 业务连续性影响"}results = {}for field, prompt in prompts.items():full_prompt = f"{prompt}\n\n邮件内容:\n{content[:5000]}"  # 限制输入长度response = model.invoke(input=full_prompt)cleaned = response.strip()if '示例:' in cleaned:cleaned = cleaned.split('示例:')[0].strip()results[field] = cleanedreturn resultsexcept Exception as e:print(f"分析邮件内容时出错: {e}")return {"任务类型分类": "分析失败","回复话术建议": "分析失败","情感分析结论": "分析失败","影响分析": "分析失败"}# 主程序入口
if __name__ == '__main__':# 获取指定邮箱的邮件并处理res = get_messages('xxx@singsong.com.cn', 'inbox', 10)if res:print("\n处理结果:")for index, email in enumerate(res, 1):print(f"【邮件 {index}】")print(format_email_table(email))print("=" * 60)else:print("未处理任何邮件")

4. 说明

  1. 邮件获取: 使用阿里云API从指定邮箱拉取最新的10封邮件。您需要使用自己的Access Token来进行认证(替换代码中的YOUR_ACCESS_TOKEN_HERE)。

  2. 邮件分析: 利用deepseek32b模型对邮件正文进行分析。模型的分析包括任务类型分类、情感分析、内容摘要和影响分析。

  3. 格式化输出: 每封邮件经过分析后,格式化输出邮件的基本信息和分析结果,方便查看和后续处理。

5. 运行环境要求

  • 本地部署deepseek32b模型,并确保模型服务正常运行,API可通过http://localhost:11434访问。
  • 安装requestslangchain_ollama库:
     
    pip install requests langchain-ollama

通过这种方式,您可以将阿里云企业邮箱与本地的deepseek32b大模型进行集成,自动分析并处理邮件内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/889967.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕设的踩坑之路

main()函数 在main()函数中调用 QMessageBox 之前一定要创建 QApplication 对象, 使用 QWidget 之前要创建 QApplication 对象. 不然会程序崩溃. 下面是笔者原先的代码: 之前是因为数据库等一切正常, 所以没有触发到连接数据库失败的 QMessageBox 消息. 后来有一次连接的时候数…

表格内cron表达式转成需要的时间格式

1.表格内添加 :formatter=""<el-table-columnlabel="监视周期"align="center"prop="corn":formatter="cornFormat"/>2.方法// 频率corn转时间格式cornFormat(row, column) {let str = row.corn;// let str = row.corn…

盲派八字推理 API 数据接口

盲派八字推理 API 数据接口 AI / 八字命理 基于八字命理分析 命理分析 / 八字运势。1. 产品功能基于八字命理以及盲派八字理论解析个人运势; 提供详细的大运分析,覆盖学业、婚姻、财运、健康等领域; 分析个人运势,包括学业、婚姻、财运、健康等方面的解读; 智能解读人生关…

2.25 CW 模拟赛 T4. 博弈论

前言 本来并不打算补这个题, 但是发现想拿到更好的分数, 应该对这题有更多的分析 至于 \(\rm{T3}\) , 除了让我知道分拆数类型的状态压缩 \(\rm{dp}\) 还可以乱搞, 没有什么意义, 现在也不太可能拥有这个水平 思路题意 给定一个序列A and B\textrm{A and B}A and B 每次可以在序…

20220226

沪锌 形态待验证 胶系看之前分析即可。后市看方向 17600-18200 https://www.cnblogs.com/lyonlee/p/18729353

2. 在Linux 当中安装 Nginx(13步) 下载安装启动(详细说明+附加详细截图说明)

2. 在Linux 当中安装 Nginx(13步) 下载&安装&启动(详细说明+附加详细截图说明) @目录2. 在Linux 当中安装 Nginx(13步) 下载&安装&启动(详细说明+附加详细截图说明)1. 在 Linxu 下安装 Nginx 的详细步骤2. 最后:1. 在 Linxu 下安装 Nginx 的详细步骤 Nginx 官…

AI应用实战课学习总结(11)用RNN做时序预测

本文介绍了RNN循环神经网络的基本概念 和 各种神经网络(DNN、CNN、RNN)的对比,最后介绍了如何基于RNN来做时序预测的案例。大家好,我是Edison。 最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。 今天是我们的第11站,一起了解RNN循环神经网络的…

微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章

2025年2月25日,.NET团队在博客上宣布了.NET 10 Preview 1的正式发布,文章参见:https://devblogs.microsoft.com/dotnet/dotnet-10-preview-1/,标志着.NET框架在跨平台开发领域迈出了重要一步。这一新版本在.NET Runtime、SDK、库、C#、ASP.NET Core、Blazor以及.NET MAUI等…

推荐一款最新开源,基于AI人工智能UI自动化测试工具!支持自然语言编写脚本!

随着互联网技术的飞速发展,Web应用越来越普及,前端页面也越来越复杂。为了确保产品质量,UI自动化测试成为了开发过程中不可或缺的一环。然而,传统的UI自动化测试工具往往存在学习成本高、维护困难等问题。特别是UI 自动化脚本里往往到处都是选择器,比如 #ids、data-test、…

无需破解,国际版也很香!

随着短视频平台的迅速崛起,各类短视频内容如搞笑片段、生活窍门、旅行日志和教学视频层出不穷,几乎覆盖了所有主题和风格。大众对视频质量的要求日益提高,因此选择一款专业的视频编辑软件显得尤为重要。用户可以利用多层时间线进行剪辑,添加特效与转场,调整色彩和音频,甚…

读DAMA数据管理知识体系指南05数据治理(中)

数据治理需支持业务战略,明确治理责任,评估能力,制定战略框架,参与变革与问题管理,确保法规遵从,通过监控和评估提升数据质量和治理效果。1. 规划组织的数据治理 1.1. 数据治理工作必须支持业务战略和目标1.1.1. 一个组织的业务战略和目标影响着组织的数据战略,以及数据…